diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index dec967d..0e1a10b 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -24,6 +24,8 @@ Sub Class_Globals Private xui As XUI Public login As B4XMainPage Dim rp As RuntimePermissions + Public Provider As FileProvider + Public principal As C_Principal 'Antes seleccion Public clientes As C_Clientes 'Antes Colonia Public cliente As C_Cliente 'Antes fila @@ -139,6 +141,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) ' ruta = Starter.ruta ruta = File.DirInternal kh.Initialize(Me, "kh") + Provider.Initialize ' If(FirstTime) Then ' g.Initialize("GPS") ' End If @@ -404,15 +407,20 @@ Sub JobDone(Job As HttpJob) End If End Sub -Sub Activity_KeyPress (key As Int) As Boolean - ' BACK key pressed - If key=KeyCodes.KEYCODE_BACK Then - ' I want to capture the key here so I return True - 'StartActivity(Main) - ExitApplication - 'Return True - End If - ' Returning False signals the system to handle the key +'Sub Activity_KeyPress (key As Int) As Boolean +' ' BACK key pressed +' If key=KeyCodes.KEYCODE_BACK Then +' ' I want to capture the key here so I return True +' 'StartActivity(Main) +' ExitApplication +' 'Return True +' End If +' ' Returning False signals the system to handle the key +' Return False +'End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ExitApplication Return False End Sub @@ -526,3 +534,22 @@ Sub copiaDB ToastMessageShow("Sin permisos", True) End If End Sub + +'Enviamos la base de datos por correo o Whatsapp +Private Sub b_envioBD_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("cheveguerra@gmail.com") + email.Subject = "subject" + 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 \ No newline at end of file diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 6f5c193..f6d8bec 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -144,8 +144,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 Root.RemoveAllViews Root.LoadLayout("Cliente") - c=Starter.skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_BFACTURA,CAT_CL_BCREDITO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") - s=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c= Starter.skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_BFACTURA,CAT_CL_BCREDITO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + s = Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") If c.RowCount > 0 Then c.Position = 0 la_cuenta.Text = c.GetString("CAT_CL_CODIGO") @@ -226,10 +226,9 @@ Sub B4XPage_Appear FACTURA = 0 End If - If FACTURA = "1" Then - b_factura.Visible = True - - End If +' If FACTURA = "1" Then +' b_factura.Visible = True +' End If End If If CREDITO = "1" Then @@ -288,7 +287,7 @@ Sub B4XPage_Appear B_VENTA.Visible = True gest.Visible = True End If - Log(">>>>>>>>>>>> "&Starter.tipov) +' Log(">>>>>>>>>>>> "&Starter.tipov) End Sub Sub GPS_LocationChanged (Location1 As Location) @@ -320,15 +319,14 @@ Sub Tels_Click B4XPages.ShowPage("NoVenta") End Sub -Sub Activity_KeyPress (key As Int) As Boolean - ' BACK key pressed - If key=KeyCodes.KEYCODE_BACK Then - ' I want to capture the key here so I return True -' StartActivity(colonia) - 'Return True +Private Sub B4XPage_CloseRequest As ResumableSub + If Subs.hayPedido Then + ToastMessageShow("Hay VENTA, por favor presiona GUARDAR para continuar.", True) + Return False + Else + B4XPages.ShowPage("Principal") + Return False End If - ' Returning False signals the system to handle the key - Return False End Sub Sub Tar_Click @@ -350,7 +348,7 @@ Sub Guardar_Click c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - + c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") c.Position=0 If c.GetString("CUANTOS") > 0 Then @@ -360,11 +358,11 @@ Sub Guardar_Click Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End If c.Close - + Starter.skmt.ExecNonQuery("delete from pedido3") Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 SELECT PE_PRECIO2, PE_TIPO, PE_FOLIO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, 1 As PE_FECHA, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_FOLIO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_FOLIO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") - + If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i @@ -373,7 +371,7 @@ Sub Guardar_Click End If Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") - + B4XPages.ShowPage("Principal") ' StartActivity(seleccion) End Sub @@ -958,7 +956,7 @@ Sub B_GUARDAR_Click Panel1.Visible = False B_EXIBI.Visible = True - b_factura.Visible = True +' b_factura.Visible = True HIST.Visible = True Tar.VISIBLE = True B_IMP.Visible = True diff --git a/B4A/C_Nota.bas b/B4A/C_Nota.bas index 89bc386..b7c475b 100644 --- a/B4A/C_Nota.bas +++ b/B4A/C_Nota.bas @@ -55,7 +55,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) C.Position=0 Existe = C.GetString("EXISTE") C.Close - c=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") + c=Starter.skmt.ExecQuery("select PE_PRONOMBRE, PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_TIPO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") ListView1.Clear If c.RowCount>0 Then For i=0 To c.RowCount -1 @@ -96,9 +96,9 @@ Sub B4XPage_Appear C.Position=0 Existe = C.GetString("EXISTE") C.Close - c=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") + c=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_TIPO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") ListView1.Clear - + Private cs As CSBuilder If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i @@ -110,7 +110,11 @@ Sub B4XPage_Appear label2 = ListView1.TwoLinesLayout.SecondLabel label2.TextSize = 10 label2.TextColor = Colors.Blue - ListView1.AddTwoLines(c.GetString("PE_PRONOMBRE"),"Cantidad #"& c.GetString("PE_CANT")& " SubTotal $"& c.GetString("PE_COSTO_TOT")& " Folio "& c.GetString("PE_FOLIO")) + cs.Initialize + Private elColor = Colors.Black + If c.GetString("PE_TIPO") = "PREVENTA" Then elColor = Colors.RGB(200,95,20) + Log(c.GetString("PE_PRONOMBRE") & "|" & elColor) + ListView1.AddTwoLines(cs.Color(elColor).append(c.GetString("PE_PRONOMBRE")).Pop,"Cantidad #"& c.GetString("PE_CANT")& " SubTotal $"& c.GetString("PE_COSTO_TOT")& " Folio "& c.GetString("PE_FOLIO")) folio = c.GetString("PE_FOLIO") Next End If diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 056c8fd..835e15e 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -1889,14 +1889,15 @@ Sub JobDone(Job As HttpJob) End Sub -Sub Activity_KeyPress (key As Int) As Boolean +Private Sub B4XPage_CloseRequest As ResumableSub ' BACK key pressed - If key=KeyCodes.KEYCODE_BACK Then - ' I want to capture the key here so I return True - StartActivity(Main) - 'Return True - End If +' If key=KeyCodes.KEYCODE_BACK Then +' ' I want to capture the key here so I return True +' StartActivity(Main) +' 'Return True +' End If ' Returning False signals the system to handle the key + B4XPages.ShowPage("Login") Return False End Sub diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas index c76b3ff..954c729 100644 --- a/B4A/C_Productos.bas +++ b/B4A/C_Productos.bas @@ -540,7 +540,7 @@ Sub b_prodMenos_Click ' clv_prods_ll.GetValue(index).As(Map).Get("almacen") = clv_prods_ll.GetValue(index).As(Map).Get("almacen") + 1 End If If laCant.Text = "" Then laCant.Text = 0 - laCant.Text = $"$1.0{laCant.Text - 1}"$ + laCant.Text = $"${NumberFormat2((laCant.Text - 1), 1, 0, 0, False)}"$ If laCant.Text < 0 Then laCant.Text = 0 Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map) Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio") @@ -559,6 +559,7 @@ Sub b_prodMenos_Click nombreX = "CAMBIO"&Subs.traeRMINombre(id) precioX = precioX * -1 End If + Log(">>>>>>> Insertamos prod desde prodMenos") Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) cuentaProds If Subs.totalPedido < 1 Then laCant.Text = "0" @@ -582,16 +583,16 @@ Sub b_prodMas_Click ' Log(clv_prods_ll.GetValue(index).As(Map)) clv_prods_ll.GetValue(index).As(Map).Put("almacen", (inv - 1)) inv = inv - 1 - laCant.Text = $"$1.0{laCant.Text+1}"$ + laCant.Text = $"${NumberFormat2((laCant.Text + 1), 1, 0, 0, False)}"$ ' Log(clv_prods_ll.GetValue(index).As(Map)) End If else If laCant.Text + 1 <= inv And lfila.Text = "PRODUCTOS" Then ' LogColor(inv, Colors.blue) - laCant.Text = $"$1.0{laCant.Text + 1}"$ + laCant.Text = $"${NumberFormat2((laCant.Text + 1), 1, 0, 0, False)}"$ Log(Subs.totalPedido) else If lfila.Text = "RMI" And laCant.Text + 1 <= inv And (Subs.totalPedido - precio > 1) Then ' LogColor(inv, Colors.blue) - laCant.Text = $"$1.0{laCant.Text + 1}"$ + laCant.Text = $"${NumberFormat2((laCant.Text + 1), 1, 0, 0, False)}"$ Log(Subs.totalPedido) else if Subs.totalPedido < 1 Then laCant.Text = "0" @@ -605,6 +606,7 @@ Sub b_prodMas_Click nombreX = "CAMBIO"&Subs.traeRMINombre(id) precioX = precioX * -1 End If + Log(">>>>>>> Insertamos prod desde prodMas") Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) cuentaProds If Subs.totalPedido < 1 Then @@ -616,6 +618,24 @@ Sub b_prodMas_Click ' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) End Sub + +Private Sub et_pCant_FocusChanged (HasFocus As Boolean) +' LogColor($"focus changed=${HasFocus}"$, Colors.Magenta) + etCantHasFocus = HasFocus +' Dim index As Int = clv_prods_ll.GetItemFromView(Sender) +' Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index) +' Dim pnl As B4XView = pnl0.GetView(0) +' Dim laCant As B4XView = pnl.GetView(2).GetView(2) +' Log("%%%%%%%%%%%%%%%% - " & Sender.As(EditText).text) + Try + If Sender.As(EditText).Text = "" Then Sender.As(EditText).Text = "0" + Sender.As(EditText).Text = $"${NumberFormat2(Sender.As(EditText).Text, 1, 0, 0, False)}"$ + cuentaProds + Catch + Log(LastException) + End Try +End Sub + Private Sub et_pCant_TextChanged (Old As String, New As String) ' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta) ' If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds @@ -627,18 +647,19 @@ Private Sub et_pCant_TextChanged (Old As String, New As String) Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index) Dim pnl As B4XView = pnl0.GetView(0) Dim laCant As B4XView = pnl.GetView(2).GetView(2) +' Log(clv_prods_ll.GetValue(index).As(Map)) Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id") Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio") - Log("++++++++++ " & precio) +' Log("++++++++++ " & precio) Dim tempTot As String = Subs.totalPedido Dim disp As String = 0 If tempTot > 0 Then disp = (Subs.totalPedido / precio) - 1 disp = NumberFormat2(disp, 1, 0, 0, False) Log($"${laCant.text}, ${precio}, DISPONIBLES: ${disp}"$) +' Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen") Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen") - Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen") - If(New = "" Or New = Null) Then New = 0 +' If(New = "" Or New = Null) Then New = 0 If(New > inv) Then Sender.As(EditText).text = inv End If @@ -654,17 +675,18 @@ Private Sub et_pCant_TextChanged (Old As String, New As String) ' elProd = Subs.traeProdNombre(id) Log("NO RMI") End If - ' Log($"inventario=${inv}"$) -' Dim tmpCant As String = laCant.text +' Log($"inventario=${inv}"$) +' Dim tmpCant As String = laCant.text If laCant.Text = "" Then laCant.Text = "0" - If laCant.Text > disp Then - Log($"Ponemos laCant en: ${disp}"$) -' laCant.Text = "" - laCant.text = "0" -' etCantHasFocus = True - End If +' If laCant.Text > disp Then +' Log($"Ponemos laCant en: ${disp}"$) +'' laCant.Text = "" +' laCant.text = "0" +'' etCantHasFocus = True +' End If If Not(Old = "0" And New = "") And laCant.Text <> Null And laCant.Text <> "" And etCantHasFocus Then - Subs.actualizaProducto(almacenX, precioX, laCant.Text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta) + Log(">>>>>> Insertamos prod desde et_pCante_TextChanged") + Subs.actualizaProducto(almacenX, precioX, laCant.Text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) cuentaProds End If Catch @@ -679,12 +701,6 @@ Private Sub et_pCant_TextChanged (Old As String, New As String) End If End Sub -Private Sub et_pCant_FocusChanged (HasFocus As Boolean) -' LogColor($"focus changed=${HasFocus}"$, Colors.Magenta) - etCantHasFocus = HasFocus - cuentaProds -End Sub - Sub cuentaProds 'LogColor($"Productos de la orden: ${c_prodsX.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red) ' Log("===========================") @@ -1121,7 +1137,7 @@ Sub Busca_TextChanged (Old As String, New As String) listaProds.Initialize listaHints.Initialize Sleep(0) - Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from CAT_GUNAPROD2 where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$) + Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${query} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$) ' c2= Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO =? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) ", Array As String( Value, Value) Log("Llamamos LlenaProdsLL") LlenaProdsLL(p, Null) diff --git a/B4A/Durakelo.b4a b/B4A/Durakelo.b4a index ac62cc1..08181e0 100644 --- a/B4A/Durakelo.b4a +++ b/B4A/Durakelo.b4a @@ -166,7 +166,7 @@ File246=marker-verde-15.png File247=marker-verde-16.png File248=marker-verde-17.png File249=marker-verde-18.png -File25=K-b27c0809.png +File25=kelloggs.png File250=marker-verde-19.png File251=marker-verde-2.png File252=marker-verde-20.png @@ -177,7 +177,7 @@ File256=marker-verde-24.png File257=marker-verde-25.png File258=marker-verde-26.png File259=marker-verde-27.png -File26=kelloggs.png +File26=keymon_logo.png File260=marker-verde-28.png File261=marker-verde-29.png File262=marker-verde-3.png @@ -188,7 +188,7 @@ File266=marker-verde-33.png File267=marker-verde-34.png File268=marker-verde-35.png File269=marker-verde-36.png -File27=keymon_logo.png +File27=kmt.db File270=marker-verde-37.png File271=marker-verde-38.png File272=marker-verde-39.png @@ -199,7 +199,7 @@ File276=marker-verde-42.png File277=marker-verde-43.png File278=marker-verde-44.png File279=marker-verde-45.png -File28=kmt.db +File28=login.bal File280=marker-verde-46.png File281=marker-verde-47.png File282=marker-verde-48.png @@ -210,7 +210,7 @@ File286=marker-verde-51.png File287=marker-verde-52.png File288=marker-verde-53.png File289=marker-verde-54.png -File29=login.bal +File29=logo sanfer.jpg File290=marker-verde-55.png File291=marker-verde-56.png File292=marker-verde-57.png @@ -222,7 +222,7 @@ File297=marker-verde-61.png File298=marker-verde-62.png File299=marker-verde-63.png File3=alerta.jpg -File30=logo sanfer.jpg +File30=Logo_durakelo_192xx192.jpeg File300=marker-verde-64.png File301=marker-verde-65.png File302=marker-verde-66.png @@ -736,43 +736,45 @@ Library11=firebasenotifications Library12=fusedlocationprovider Library13=gifdecoder Library14=googlemaps -Library15=gps -Library16=ime -Library17=javaobject -Library18=json -Library19=okhttputils2 +Library15=googlemapsextras +Library16=gps +Library17=ime +Library18=javaobject +Library19=json Library2=baqrcode -Library20=phone -Library21=preoptimizedclv -Library22=randomaccessfile -Library23=reflection -Library24=runtimepermissions -Library25=serial -Library26=sql -Library27=xcustomlistview -Library28=zxing_scanner -Library29=googlemapsextras +Library20=okhttputils2 +Library21=phone +Library22=preoptimizedclv +Library23=randomaccessfile +Library24=reflection +Library25=runtimepermissions +Library26=serial +Library27=sql +Library28=xcustomlistview +Library29=zxing_scanner Library3=batteryprogressview +Library30=contentresolver Library4=bitmapcreator Library5=byteconverter Library6=camera Library7=compressstrings Library8=core Library9=fileprovider -ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~~\n~~\n~)~\n~AddManifestText()~\n~AddManifestText()~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~~\n~~\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~'CreateResourceFromFile(Macro, FirebaseAnalytics.Crashlytics)~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'/////////////// FLP y FBMessageing MOD Termina /////////////////////~\n~~\n~'Si al cargar un mapa de google manda este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~AddApplicationText()~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~SetApplicationAttribute(android:exported, "true")~\n~AddManifestText() +ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~~\n~~\n~)~\n~AddManifestText()~\n~AddManifestText()~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~~\n~~\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~'CreateResourceFromFile(Macro, FirebaseAnalytics.Crashlytics)~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'/////////////// FLP y FBMessageing MOD Termina /////////////////////~\n~~\n~'Si al cargar un mapa de google manda este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~AddApplicationText()~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~SetApplicationAttribute(android:exported, "true")~\n~AddManifestText()~\n~~\n~'Para provider (Envio de base de datos por whatsapp)~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ) Module1=B4XMainPage Module10=C_Promos Module11=C_TicketsDia Module12=DBRequestManager Module13=EscPosPrinter -Module14=FirebaseMessaging -Module15=kms_helperSubs -Module16=ManageExternalStorage -Module17=MAPA_RUTAS -Module18=Starter -Module19=Subs +Module14=FileHandler +Module15=FirebaseMessaging +Module16=kms_helperSubs +Module17=ManageExternalStorage +Module18=MAPA_RUTAS +Module19=Starter Module2=BatteryUtilities -Module20=Tracker +Module20=Subs +Module21=Tracker Module3=C_Cliente Module4=C_Clientes Module5=C_Historico @@ -781,14 +783,14 @@ Module7=C_NoVenta Module8=C_Principal Module9=C_Productos NumberOfFiles=365 -NumberOfLibraries=29 -NumberOfModules=20 +NumberOfLibraries=30 +NumberOfModules=21 Version=12.5 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Durakelo #VersionCode: 1 - #VersionName: 3.10.09 + #VersionName: 3.10.31 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/Durakelo.b4a.meta b/B4A/Durakelo.b4a.meta index 02a0785..8e21463 100644 --- a/B4A/Durakelo.b4a.meta +++ b/B4A/Durakelo.b4a.meta @@ -12,6 +12,7 @@ ModuleBookmarks18= ModuleBookmarks19= ModuleBookmarks2= ModuleBookmarks20= +ModuleBookmarks21= ModuleBookmarks3= ModuleBookmarks4= ModuleBookmarks5= @@ -33,6 +34,7 @@ ModuleBreakpoints18= ModuleBreakpoints19= ModuleBreakpoints2= ModuleBreakpoints20= +ModuleBreakpoints21= ModuleBreakpoints3= ModuleBreakpoints4= ModuleBreakpoints5= @@ -41,7 +43,7 @@ ModuleBreakpoints7= ModuleBreakpoints8= ModuleBreakpoints9= ModuleClosedNodes0= -ModuleClosedNodes1= +ModuleClosedNodes1=2,3,4,5,6,7 ModuleClosedNodes10= ModuleClosedNodes11= ModuleClosedNodes12= @@ -50,17 +52,18 @@ ModuleClosedNodes14= ModuleClosedNodes15= ModuleClosedNodes16= ModuleClosedNodes17= -ModuleClosedNodes18=1 -ModuleClosedNodes19=10,12,14 +ModuleClosedNodes18= +ModuleClosedNodes19=1 ModuleClosedNodes2= -ModuleClosedNodes20= +ModuleClosedNodes20=10,12,14 +ModuleClosedNodes21= ModuleClosedNodes3= ModuleClosedNodes4= ModuleClosedNodes5= -ModuleClosedNodes6= +ModuleClosedNodes6=1 ModuleClosedNodes7= -ModuleClosedNodes8= +ModuleClosedNodes8=1 ModuleClosedNodes9= -NavigationStack=C_Principal,Btn_UbicarR_Click,2555,5,MAPA_RUTAS,Globals,48,0,MAPA_RUTAS,MapFragment1_Ready,239,0,MAPA_RUTAS,OnInfoWindowClickListener1_click,245,6,C_Principal,B_PROXIMA_Click,2442,6,C_Principal,Resumen_Click,2428,0,C_TicketsDia,Class_Globals,0,0,Visual Designer,principal.bal,-100,2,Visual Designer,ticketsDia.bal,-100,1,C_TicketsDia,B4XPage_Created,22,0 +NavigationStack=C_Productos,cuentaProds,703,0,C_Cliente,Guardar_Click,337,0,Visual Designer,nota.bal,-100,3,C_Cliente,Tels_Click,313,0,C_Cliente,Tar_Click,324,0,B4XMainPage,JobDone,403,0,B4XMainPage,B4XPage_CloseRequest,418,0,C_Principal,B4XPage_CloseRequest,1885,0,C_Cliente,B4XPage_CloseRequest,320,6,C_Productos,et_pCant_TextChanged,648,0,C_Productos,et_pCant_FocusChanged,629,1 SelectedBuild=0 -VisibleModules=18,1,8,15,6,3,7,9,19,10,17,11 +VisibleModules=19,1,8,16,6,3,7,9,20,10,21 diff --git a/B4A/FileHandler.bas b/B4A/FileHandler.bas new file mode 100644 index 0000000..a9529f8 --- /dev/null +++ b/B4A/FileHandler.bas @@ -0,0 +1,162 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11 +@EndOfDesignText@ +'Requiere la librería "ContentResolver" y "FileProvider" o "AppUpdating" +' +'Copiar este codigo al boton_Click que se quiere que importe la base de datos. +' +' Private Sub b_importarBD_Click +' Private FH As FileHandler +' FH.Initialize +' Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar. +' File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno. +' Starter.skmt.Initialize(Starter.ruta,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada. +' ToastMessageShow("¡BD importada!", False) +' End Sub + +Sub Class_Globals + #if B4A + Private ion As Object + Private OldIntent As Intent + #end if + Type LoadResult (Success As Boolean, Dir As String, FileName As String, RealName As String, Size As Long, Modified As Long, MimeType As String) +End Sub + +Public Sub Initialize + +End Sub + +#if B4A +Public Sub SaveAs (Source As InputStream, MimeType As String, Title As String) As ResumableSub + Dim intent As Intent + intent.Initialize("android.intent.action.CREATE_DOCUMENT", "") + intent.AddCategory("android.intent.category.OPENABLE") + intent.PutExtra("android.intent.extra.TITLE", Title) + intent.SetType(MimeType) + StartActivityForResult(intent) + Wait For ion_Event (MethodName As String, Args() As Object) + If -1 = Args(0) Then 'resultCode = RESULT_OK + Dim result As Intent = Args(1) + Dim jo As JavaObject = result + Dim ctxt As JavaObject + Dim out As OutputStream = ctxt.InitializeContext.RunMethodJO("getContentResolver", Null).RunMethod("openOutputStream", Array(jo.RunMethod("getData", Null))) + File.Copy2(Source, out) + out.Close + Return True + End If + Return False +End Sub + +Public Sub Load As ResumableSub + Dim cc As ContentChooser + cc.Initialize("cc") + cc.Show("application/octet-stream", "Choose text file") + Wait For CC_Result (Success As Boolean, Dir As String, FileName As String) + Log($"***************************${CRLF}${Dir}${CRLF} ${FileName}"$) + Dim res As LoadResult = CreateLoadResult(Success, Dir, FileName) + Log($"***************************${CRLF}${res.FileName}${CRLF} ${res}"$) + If res.Success Then ExtractInformationFromURI(res.FileName, res) + Return res +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(ion, i)) +End Sub + +Private Sub GetBA As Object + Return Me.As(JavaObject).RunMethod("getBA", Null) +End Sub + +Private Sub ExtractInformationFromURI (Uri As String, res As LoadResult) + Try + + Dim resolver As ContentResolver + resolver.Initialize("") + Dim u As Uri + u.Parse(Uri) + Dim rs As ResultSet = resolver.Query(u, Null, "", Null, "") + If rs.NextRow Then + Dim columns As B4XSet = B4XCollections.CreateSet + For i = 0 To rs.ColumnCount - 1 + columns.Add(rs.GetColumnName(i)) + Next + If columns.Contains("_display_name") Then res.RealName = rs.GetString("_display_name") + If columns.Contains("_size") Then res.Size = rs.GetLong("_size") + If columns.Contains("last_modified") Then res.Modified = rs.GetLong("last_modified") + If columns.Contains("mime_type") Then res.MimeType = rs.GetString("mime_type") + End If + rs.Close + + Catch + Log("error extracting information from file provider") + Log(LastException) + End Try +End Sub + +Public Sub CheckForReceivedFiles As LoadResult + Dim Activity As Activity = B4XPages.GetNativeParent(B4XPages.MainPage) + If IsRelevantIntent(Activity.GetStartingIntent) Then + Dim in As Intent = Activity.GetStartingIntent + Dim uri As String + If in.HasExtra("android.intent.extra.STREAM") Then + uri = in.As(JavaObject).RunMethod("getParcelableExtra", Array("android.intent.extra.STREAM")) + Else + uri = in.GetData + End If + Dim res As LoadResult = CreateLoadResult(True, "ContentDir", uri) + ExtractInformationFromURI(res.FileName, res) + Return res + End If + Return CreateLoadResult(False, "", "") +End Sub + +Private Sub IsRelevantIntent(in As Intent) As Boolean + If in.IsInitialized And in <> OldIntent And in.Action = in.ACTION_VIEW Then + OldIntent = in + Return True + End If + Return False +End Sub + +#else if B4i +Public Sub SaveAs(ParentPage As Object, AnchorView As Object, Text As String) As ResumableSub + Dim avc As ActivityViewController + avc.Initialize("avc", Array(Text)) + avc.Show(B4XPages.GetNativeParent(ParentPage), AnchorView) + Wait For avc_Complete (Success As Boolean, ActivityType As String) + Return Success +End Sub + +Public Sub Load (ParentPage As Object, AnchorView As Object) As ResumableSub + Dim DocumentPicker As DocumentPickerViewController + DocumentPicker.InitializeImport("picker", Array("public.text")) + DocumentPicker.Show(B4XPages.GetNativeParent(ParentPage), AnchorView) + Wait For Picker_Complete (Success As Boolean, URLs As List) + If Success And URLs.Size > 0 Then + Return UrlToLoadResult(URLs.Get(0)) + End If + Return CreateLoadResult(False, "", "") +End Sub + +Public Sub UrlToLoadResult(url As String) As LoadResult + Dim res As LoadResult = CreateLoadResult(IIf(File.Exists(url, ""), True, False), url, "") + res.RealName = res.Dir.SubString(res.Dir.LastIndexOf("/") + 1) + res.Size = File.Size(res.Dir, "") + Return res +End Sub +#end if + +Private Sub CreateLoadResult (Success As Boolean, Dir As String, FileName As String) As LoadResult + Dim t1 As LoadResult + t1.Initialize + t1.Success = Success + t1.Dir = Dir + t1.FileName = FileName + Return t1 +End Sub + diff --git a/B4A/Files/login.bal b/B4A/Files/login.bal index 57df977..2eb529d 100644 Binary files a/B4A/Files/login.bal and b/B4A/Files/login.bal differ diff --git a/B4A/Files/logo_durakelo_192xx192.jpeg b/B4A/Files/logo_durakelo_192xx192.jpeg new file mode 100644 index 0000000..77503a0 Binary files /dev/null and b/B4A/Files/logo_durakelo_192xx192.jpeg differ diff --git a/B4A/Files/nota.bal b/B4A/Files/nota.bal index f8786e7..669e6b3 100644 Binary files a/B4A/Files/nota.bal and b/B4A/Files/nota.bal differ diff --git a/B4A/Files/proditem.bal b/B4A/Files/proditem.bal index dc03e73..867175e 100644 Binary files a/B4A/Files/proditem.bal and b/B4A/Files/proditem.bal differ diff --git a/B4A/Starter.bas b/B4A/Starter.bas index be0d2f7..bfb50b1 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -56,6 +56,9 @@ Sub Service_Start (StartingIntent As Intent) If File.Exists(File.DirInternal, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db") skmt.Initialize(File.DirInternal,"kmt.db", True) StartService(Tracker) + #if not(DEBUG) + logger = False + #end if End Sub Private Sub BTAdmin_StateChanged (NewState As Int, OldState As Int) diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas index b6f43f8..342dd97 100644 --- a/B4A/Tracker.bas +++ b/B4A/Tracker.bas @@ -92,7 +92,7 @@ Public Sub StartFLP Log("StartFLP - flpStarted="&flpStarted) Do While FLP.IsConnected = False Sleep(500) - If Starter.logger Then Log("sleeping") + If Starter.logger Then Log("dk - sleeping") Loop ' If flpStarted = False Then If Starter.logger Then Log("RequestLocationUpdates") @@ -107,7 +107,7 @@ Public Sub StartFLP2Reqs If Starter.logger Then Log("StartFLP - flpStarted="&flpStarted) Do While FLP.IsConnected = False Sleep(500) - If Starter.logger Then Log("sleeping") + If Starter.logger Then Log("dk - sleeping") Loop dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida FLP.RequestLocationUpdates(CreateLocationRequest2times) 'Buscamos ubicacion 2 peticiones