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