mirror of
https://github.com/KeymonSoft/Guna_Reparto_Imp.git
synced 2026-04-17 21:06:09 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a13a989f3 | ||
| 3cda52a8a3 | |||
|
|
4f07b6d3d3 | ||
|
|
86c0d1f273 | ||
|
|
e3614c5fcf | ||
|
|
fa3cbabdc9 | ||
|
|
9ea95e39f1 | ||
|
|
59d7e47832 | ||
|
|
d5b75b249a |
1371
B4A/B4XMainPage.bas
1371
B4A/B4XMainPage.bas
File diff suppressed because it is too large
Load Diff
@@ -790,7 +790,7 @@ Sub JobDone(Job As HttpJob)
|
|||||||
Next
|
Next
|
||||||
Next
|
Next
|
||||||
Starter.skmt.ExecNonQuery("UPDATE CHECADO_CHECK set CHECADO = 1 ")
|
Starter.skmt.ExecNonQuery("UPDATE CHECADO_CHECK set CHECADO = 1 ")
|
||||||
B4XPages.MainPage.principal.checachek
|
' B4XPages.MainPage.principal.checachek
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|||||||
11752
B4A/C_Cliente.bas
11752
B4A/C_Cliente.bas
File diff suppressed because it is too large
Load Diff
@@ -82,6 +82,8 @@ Sub B4XPage_Appear
|
|||||||
Else
|
Else
|
||||||
ListView1.Top = lv1Top + 100
|
ListView1.Top = lv1Top + 100
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
Starter.skmt.ExecNonQuery("delete from HIST_VENTAS WHERE HVD_CANT = 0")
|
||||||
c=Starter.skmt.ExecQuery("select distinct codigo, indice, CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_NOEXT from waypoints inner join kmt_info on waypoints.codigo = kmt_info.CAT_CL_CODIGO where gestion = 0 AND CAT_CL_RUTA <> 1000 order by indice")
|
c=Starter.skmt.ExecQuery("select distinct codigo, indice, CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_NOEXT from waypoints inner join kmt_info on waypoints.codigo = kmt_info.CAT_CL_CODIGO where gestion = 0 AND CAT_CL_RUTA <> 1000 order by indice")
|
||||||
|
|
||||||
|
|
||||||
@@ -723,8 +725,8 @@ Sub caculaRutaGPS(coords As List, agregarActual As Boolean)
|
|||||||
ProgressDialogShow2("Calculando distancia y tiempo, un momento por favor.", False)
|
ProgressDialogShow2("Calculando distancia y tiempo, un momento por favor.", False)
|
||||||
Dim j As HttpJob
|
Dim j As HttpJob
|
||||||
j.Initialize("trip", Me) 'Calculamos el resto de la ruta.
|
j.Initialize("trip", Me) 'Calculamos el resto de la ruta.
|
||||||
j.Download($"http://keymon.lat:9002/ruteador?m=OSRM&r=${Subs.traeRutaReparto}&a=${Subs.traeAlmacen}&c=${coordsStr}"$) '&f=CEDIS,${Starter.cedisLocation.Longitude},${Starter.cedisLocation.Latitude}
|
j.Download($"http://keymon.net:9002/ruteador?m=OSRM&r=${Subs.traeRutaReparto}&a=${Subs.traeAlmacen}&c=${coordsStr}"$) '&f=CEDIS,${Starter.cedisLocation.Longitude},${Starter.cedisLocation.Latitude}
|
||||||
Log($"http://keymon.lat:9002/ruteador?m=OSRM&r=${Subs.traeRutaReparto}&a=${Subs.traeAlmacen}&c=${coordsStr}"$) '&f=CEDIS,${Starter.cedisLocation.Longitude},${Starter.cedisLocation.Latitude}
|
Log($"http://keymon.net:9002/ruteador?m=OSRM&r=${Subs.traeRutaReparto}&a=${Subs.traeAlmacen}&c=${coordsStr}"$) '&f=CEDIS,${Starter.cedisLocation.Longitude},${Starter.cedisLocation.Latitude}
|
||||||
Wait For (j) JobDone(j As HttpJob)
|
Wait For (j) JobDone(j As HttpJob)
|
||||||
If j.Success Then
|
If j.Success Then
|
||||||
Dim jp As JSONParser
|
Dim jp As JSONParser
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ End Sub
|
|||||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
Sub B4XPage_Appear
|
Sub B4XPage_Appear
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Subs.centraPanel(p_principal, Root.Width)
|
Subs.centraPanel(p_principal, Root.Width)
|
||||||
' b_guardar.Visible = False
|
' b_guardar.Visible = False
|
||||||
' Titulo.Left = Round(p_principal.Width/2)-(Titulo.Width/2)
|
' Titulo.Left = Round(p_principal.Width/2)-(Titulo.Width/2)
|
||||||
@@ -142,7 +145,8 @@ Sub B4XPage_Appear
|
|||||||
End If
|
End If
|
||||||
' Log($"Agregamos prod a lista1 | ${c.GetString("HVD_CANT")} - ${c.GetString("HVD_CANT2")}"$) 'HVD_CANT2 es la original de la orden.
|
' Log($"Agregamos prod a lista1 | ${c.GetString("HVD_CANT")} - ${c.GetString("HVD_CANT2")}"$) 'HVD_CANT2 es la original de la orden.
|
||||||
' ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT"))
|
' ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT"))
|
||||||
clv_pedido.Add(CreateListItem(c.GetString("HVD_PRONOMBRE"), Subs.traePrecio2(c.GetString("HVD_PROID"), c.GetString("HVD_CODPROMO"),c.GetString("CONSECUTIVO")), (c.GetString("HVD_CANT") - c.GetString("HVD_RECHAZOCANT")), c.GetString("HVD_RECHAZOCANT")-cantres , clv_pedido.AsView.Width, 118dip, bmp, c.GetString("HVD_PROID"), bgColor, textColor, c.GetString("HVD_CODPROMO"),Subs.traeCliente,Subs.traeCliente,0,c.GetString("CONSECUTIVO")),i)
|
' clv_pedido.Add(CreateListItem(c.GetString("HVD_PRONOMBRE"), Subs.traePrecio2(c.GetString("HVD_PROID"), c.GetString("HVD_CODPROMO"),c.GetString("CONSECUTIVO")), (c.GetString("HVD_CANT") - c.GetString("HVD_RECHAZOCANT")), c.GetString("HVD_RECHAZOCANT")-cantres , clv_pedido.AsView.Width, 118dip, bmp, c.GetString("HVD_PROID"), bgColor, textColor, c.GetString("HVD_CODPROMO"),Subs.traeCliente,Subs.traeCliente,0,c.GetString("CONSECUTIVO")),i)
|
||||||
|
clv_pedido.Add(CreateListItem(c.GetString("HVD_PRONOMBRE"), (c.GetString("HVD_COSTO_TOT")/c.GetString("HVD_CANT")), (c.GetString("HVD_CANT") - c.GetString("HVD_RECHAZOCANT")), c.GetString("HVD_RECHAZOCANT")-cantres , clv_pedido.AsView.Width, 118dip, bmp, c.GetString("HVD_PROID"), bgColor, textColor, c.GetString("HVD_CODPROMO"),Subs.traeCliente,Subs.traeCliente,0,c.GetString("CONSECUTIVO")),i)
|
||||||
' Log(c.GetString("HVD_CODPROMO"))
|
' Log(c.GetString("HVD_CODPROMO"))
|
||||||
End If
|
End If
|
||||||
Else If c.GetString("BCAJAS") = "1" Then
|
Else If c.GetString("BCAJAS") = "1" Then
|
||||||
@@ -307,6 +311,8 @@ Sub B4XPage_Appear
|
|||||||
Else
|
Else
|
||||||
L_CANT.Text = NumberFormat2((arti + arti1 +arti2 + arti3),0,0,0,True)
|
L_CANT.Text = NumberFormat2((arti + arti1 +arti2 + arti3),0,0,0,True)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub GPS_LocationChanged (Location1 As Location)
|
Sub GPS_LocationChanged (Location1 As Location)
|
||||||
@@ -502,6 +508,20 @@ Sub CreateListItem2(Text As String, precioU As String, inv As Int, inv2 As Int,
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub b_prodMenos_Click
|
Sub b_prodMenos_Click
|
||||||
|
|
||||||
|
Dim x2 As Cursor =Starter.skmt.ExecQuery("SELECT gestion FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)")
|
||||||
|
x2.Position = 0
|
||||||
|
If x2.GetString("gestion") = 2 Then
|
||||||
|
MsgboxAsync("Ya se gestiono el cliente, no se pueden hacer modificaciones","Atención")
|
||||||
|
' Wait For Msgbox_Result (result2 As Int)
|
||||||
|
' If result= DialogResponse.NEGATIVE Then
|
||||||
|
' B4XPages.ShowPage("Principal")
|
||||||
|
' End If
|
||||||
|
|
||||||
|
' b_prodMas.Enabled = False
|
||||||
|
' b_prodMenos.Enabled = False
|
||||||
|
Else
|
||||||
|
|
||||||
etCantHasFocus = False
|
etCantHasFocus = False
|
||||||
Log("etCantHasFocus=" & etCantHasFocus)
|
Log("etCantHasFocus=" & etCantHasFocus)
|
||||||
LogColor("b_prodMenos_Click", Colors.Magenta)
|
LogColor("b_prodMenos_Click", Colors.Magenta)
|
||||||
@@ -586,9 +606,20 @@ Sub b_prodMenos_Click
|
|||||||
B4XPage_Appear
|
B4XPage_Appear
|
||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
If laCant.Text = "" Then laCant.Text = 0
|
' If laCant.Text = "" Then laCant.Text = 0
|
||||||
laCant.Text = $"$1.0{laCant.Text-1}"$
|
' laCant.Text = NumberFormat2(($"$1.0{laCant.Text-1}"$),0,0,0,False)
|
||||||
If laCant.Text < 0 Then laCant.Text = 0
|
|
||||||
|
If laCant.Text = "" Then laCant.Text = 0
|
||||||
|
|
||||||
|
' Realizamos la resta de forma segura
|
||||||
|
Dim valorActual As Double = laCant.Text
|
||||||
|
Dim resultado As Double = valorActual - 1
|
||||||
|
If resultado < 0 Then resultado = 0
|
||||||
|
|
||||||
|
' Asignamos al Label/EditText sin comas de miles
|
||||||
|
laCant.Text = NumberFormat2(resultado, 1, 0, 0, False)
|
||||||
|
|
||||||
|
If laCant.Text < 0 Then laCant.Text = 0
|
||||||
Log("NO ES promo")
|
Log("NO ES promo")
|
||||||
Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 1, HVD_RECHAZOCANT = IFNULL(HVD_RECHAZOCANT,0) + (1*'${minimoadesc}'), BCAJAS = 0, CANTC = 0 WHERE HVD_PROID = '${esteTag.Get(2)}' and HVD_cliente in (Select CUENTA from cuentaa) AND CONSECUTIVO = '${esteTag.Get(8)}'"$)
|
Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 1, HVD_RECHAZOCANT = IFNULL(HVD_RECHAZOCANT,0) + (1*'${minimoadesc}'), BCAJAS = 0, CANTC = 0 WHERE HVD_PROID = '${esteTag.Get(2)}' and HVD_cliente in (Select CUENTA from cuentaa) AND CONSECUTIVO = '${esteTag.Get(8)}'"$)
|
||||||
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + 1 where cat_gp_id = ?", Array As Object(esteTag.Get(2)))
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + 1 where cat_gp_id = ?", Array As Object(esteTag.Get(2)))
|
||||||
@@ -636,9 +667,26 @@ Sub b_prodMenos_Click
|
|||||||
' L_CANT.Text = cym.Get("cantidad")
|
' L_CANT.Text = cym.Get("cantidad")
|
||||||
' L_TOTAL.Text = Round2(cym.Get("monto"), 2)
|
' L_TOTAL.Text = Round2(cym.Get("monto"), 2)
|
||||||
' cuentaProds("-")
|
' cuentaProds("-")
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub b_prodMas_Click
|
Sub b_prodMas_Click
|
||||||
|
|
||||||
|
Dim x2 As Cursor =Starter.skmt.ExecQuery("SELECT gestion FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)")
|
||||||
|
x2.Position = 0
|
||||||
|
If x2.GetString("gestion") = 2 Then
|
||||||
|
MsgboxAsync("Ya se gestiono el cliente, no se pueden hacer modificaciones","Atención")
|
||||||
|
' Wait For Msgbox_Result (result2 As Int)
|
||||||
|
' If result= DialogResponse.NEGATIVE Then
|
||||||
|
' B4XPages.ShowPage("Principal")
|
||||||
|
' End If
|
||||||
|
|
||||||
|
' b_prodMas.Enabled = False
|
||||||
|
' b_prodMenos.Enabled = False
|
||||||
|
Else
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
etCantHasFocus = False
|
etCantHasFocus = False
|
||||||
' Log("etCantHasFocus=" & etCantHasFocus)
|
' Log("etCantHasFocus=" & etCantHasFocus)
|
||||||
LogColor("b_prodMas_Click", Colors.Magenta)
|
LogColor("b_prodMas_Click", Colors.Magenta)
|
||||||
@@ -727,6 +775,8 @@ Sub b_prodMas_Click
|
|||||||
' If cantoriginal <= esteTag.Get(1) Then
|
' If cantoriginal <= esteTag.Get(1) Then
|
||||||
' L_CANT.Text = L_CANT.Text + 1
|
' L_CANT.Text = L_CANT.Text + 1
|
||||||
' End If
|
' End If
|
||||||
|
|
||||||
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub cuentaProds(accion As String)
|
Sub cuentaProds(accion As String)
|
||||||
@@ -1017,12 +1067,25 @@ Private Sub l_pCantC_Click
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub b_revversar_Click
|
Private Sub b_revversar_Click
|
||||||
Private c3 As Cursor = Starter.skmt.ExecQuery("SELECT * FROM PEDIDO WHERE PE_CLIENTEOR IN (SELECT CUENTA FROM CUENTAA)")
|
Dim x2 As Cursor =Starter.skmt.ExecQuery("SELECT gestion FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)")
|
||||||
If c3.RowCount = 0 Then
|
x2.Position = 0
|
||||||
Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 0, HVD_RECHAZOCANT = 0, BCAJAS = BCAJAS_OR, CANTC = CANTC_OR WHERE HVD_cliente in (Select CUENTA from cuentaa)"$)
|
If x2.GetString("gestion") = 2 Then
|
||||||
B4XPage_Appear
|
MsgboxAsync("Ya se gestiono el cliente, no se pueden hacer modificaciones","Atención")
|
||||||
|
' Wait For Msgbox_Result (result2 As Int)
|
||||||
|
' If result= DialogResponse.NEGATIVE Then
|
||||||
|
' B4XPages.ShowPage("Principal")
|
||||||
|
' End If
|
||||||
|
|
||||||
|
' b_prodMas.Enabled = False
|
||||||
|
' b_prodMenos.Enabled = False
|
||||||
Else
|
Else
|
||||||
MsgboxAsync("Hay productos que ya se vendieron, no se puede regresar la venta","Atención")
|
Private c3 As Cursor = Starter.skmt.ExecQuery("SELECT * FROM PEDIDO WHERE PE_CLIENTEOR IN (SELECT CUENTA FROM CUENTAA)")
|
||||||
|
If c3.RowCount = 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 0, HVD_RECHAZOCANT = 0, BCAJAS = BCAJAS_OR, CANTC = CANTC_OR WHERE HVD_cliente in (Select CUENTA from cuentaa)"$)
|
||||||
|
B4XPage_Appear
|
||||||
|
Else
|
||||||
|
MsgboxAsync("Hay productos que ya se vendieron, no se puede regresar la venta","Atención")
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -1032,7 +1095,7 @@ Sub Printer1_Connected (Success As Boolean)
|
|||||||
ToastMessageShow("Impresora conectada", False)
|
ToastMessageShow("Impresora conectada", False)
|
||||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP"))
|
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP"))
|
||||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP",Starter.mac_impresora))
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP",Starter.mac_impresora))
|
||||||
LogColor("Impresora conectada", Colors.Green)
|
' If logger Then LogColor("Impresora conectada", Colors.Green)
|
||||||
' B_IMP2.Enabled = True
|
' B_IMP2.Enabled = True
|
||||||
impresoraConectada = True
|
impresoraConectada = True
|
||||||
Else
|
Else
|
||||||
@@ -1047,12 +1110,16 @@ Sub Printer1_Connected (Success As Boolean)
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Sub Printer1_Error
|
||||||
|
Log("error printer")
|
||||||
|
End Sub
|
||||||
|
|
||||||
Sub Printer_Connected (Success As Boolean)
|
Sub Printer_Connected (Success As Boolean)
|
||||||
If Success Then
|
If Success Then
|
||||||
B_IMP.Enabled = True
|
' B_IMP.Enabled = True
|
||||||
PASA_IMP = "1"
|
PASA_IMP = "1"
|
||||||
Else
|
Else
|
||||||
B_IMP.Enabled = False
|
' B_IMP.Enabled = False
|
||||||
If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore
|
If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore
|
||||||
StartPrinter
|
StartPrinter
|
||||||
End If
|
End If
|
||||||
@@ -1061,7 +1128,7 @@ End Sub
|
|||||||
|
|
||||||
Sub StartPrinter
|
Sub StartPrinter
|
||||||
Dim PairedDevices As Map
|
Dim PairedDevices As Map
|
||||||
Dim L As List
|
Dim L1 As List
|
||||||
Dim resimp As Int
|
Dim resimp As Int
|
||||||
ToastMessageShow("Printing.....",True)
|
ToastMessageShow("Printing.....",True)
|
||||||
PairedDevices.Initialize
|
PairedDevices.Initialize
|
||||||
@@ -1072,28 +1139,28 @@ Sub StartPrinter
|
|||||||
printer.Close
|
printer.Close
|
||||||
cmp20.Disconnect
|
cmp20.Disconnect
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
If PairedDevices.Size = 0 Then
|
If PairedDevices.Size = 0 Then
|
||||||
Msgbox("Error Connecting to Printer - Printer Not Found","") 'ignore
|
Msgbox("Error Connecting to Printer - Printer Not Found","") 'ignore
|
||||||
Return
|
Return
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If PairedDevices.Size = 1 Then
|
If PairedDevices.Size = 1 Then
|
||||||
Try
|
Try
|
||||||
'FLEOS
|
cmp20.Connect(PairedDevices.Get(PairedDevices.GetKeyAt(0)))
|
||||||
cmp20.ConnectInsecure(btAdmin,PairedDevices.Get(PairedDevices.GetKeyAt(0)),1)
|
|
||||||
'cmp20.Connect(PairedDevices.Get(PairedDevices.GetKeyAt(0)))
|
|
||||||
Catch
|
Catch
|
||||||
Msgbox("Connecting","Printer Error") 'ignore
|
Msgbox("Connecting","Printer Error") 'ignore
|
||||||
printer.Close
|
printer.Close
|
||||||
cmp20.Disconnect
|
cmp20.Disconnect
|
||||||
End Try
|
End Try
|
||||||
Else
|
Else
|
||||||
L.Initialize
|
L1.Initialize
|
||||||
For i = 0 To PairedDevices.Size - 1
|
For i = 0 To PairedDevices.Size - 1
|
||||||
L.Add(PairedDevices.GetKeyAt(i))
|
L1.Add(PairedDevices.GetKeyAt(i))
|
||||||
Next
|
Next
|
||||||
resimp = InputList(L, "Choose device", -1) 'ignore
|
resimp = InputList(L1, "Choose device", -1) 'ignore
|
||||||
If resimp <> DialogResponse.CANCEL Then
|
If resimp <> DialogResponse.CANCEL Then
|
||||||
cmp20.Connect(PairedDevices.Get(L.Get(resimp)))
|
cmp20.Connect(PairedDevices.Get(L1.Get(resimp)))
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
@@ -1106,31 +1173,59 @@ Private Sub B_IMP_Click
|
|||||||
sDate=DateTime.Date(DateTime.Now)
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
sTime=DateTime.Time(DateTime.Now)
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
c.Close
|
c.Close
|
||||||
ProgressDialogShow("Imprimiendo, un momento ...")
|
' ProgressDialogShow("Imprimiendo, un momento ...")
|
||||||
|
' Printer1.DisConnect
|
||||||
|
' If Not(Printer1.IsConnected) Then
|
||||||
|
'' Log("Conectando a impresora ...")
|
||||||
|
' Printer1.Connect
|
||||||
|
' Private cont As Int = 0
|
||||||
|
' Do While Not(impresoraConectada)
|
||||||
|
' Sleep(1000)
|
||||||
|
'' Log("++++++ " & cont)
|
||||||
|
' cont = cont + 1
|
||||||
|
' If cont = 2 Then Printer1.Connect 'Tratamos de reconectar
|
||||||
|
' If cont > 3 Then impresoraConectada = True
|
||||||
|
' Loop
|
||||||
|
' Sleep(500)
|
||||||
|
' impresoraConectada = False
|
||||||
|
' Else
|
||||||
|
'' Log("conectando 2")
|
||||||
|
' Printer1.Connect
|
||||||
|
' Private cont As Int = 0
|
||||||
|
' Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
|
||||||
|
' Sleep(1000)
|
||||||
|
'' Log("****** " & cont)
|
||||||
|
' cont = cont + 1
|
||||||
|
' If cont = 2 Then Printer1.Connect
|
||||||
|
' If cont > 3 Then impresoraConectada = True
|
||||||
|
' Loop
|
||||||
|
' Sleep(500)
|
||||||
|
' impresoraConectada = False
|
||||||
|
' End If
|
||||||
|
|
||||||
|
ProgressDialogShow2("Imprimiendo, un momento ...",False)
|
||||||
Printer1.DisConnect
|
Printer1.DisConnect
|
||||||
If Not(Printer1.IsConnected) Then
|
If Not(Printer1.IsConnected) Then
|
||||||
' Log("Conectando a impresora ...")
|
' If logger Then Log("conectando 1")
|
||||||
Printer1.Connect
|
Printer1.Connect
|
||||||
Private cont As Int = 0
|
Private cont As Int = 0
|
||||||
Do While Not(impresoraConectada)
|
Do While Not(impresoraConectada)
|
||||||
Sleep(1000)
|
Sleep(1000)
|
||||||
' Log("++++++ " & cont)
|
|
||||||
cont = cont + 1
|
cont = cont + 1
|
||||||
If cont = 2 Then Printer1.Connect 'Tratamos de reconectar
|
If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
|
||||||
If cont > 3 Then impresoraConectada = True
|
If cont > 15 Then impresoraConectada = True
|
||||||
Loop
|
Loop
|
||||||
Sleep(500)
|
Sleep(500)
|
||||||
impresoraConectada = False
|
impresoraConectada = False
|
||||||
Else
|
Else
|
||||||
' Log("conectando 2")
|
' If logger Then Log("conectando 2")
|
||||||
Printer1.Connect
|
Printer1.Connect
|
||||||
Private cont As Int = 0
|
Private cont As Int = 0
|
||||||
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
|
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
|
||||||
Sleep(1000)
|
Sleep(1000)
|
||||||
' Log("****** " & cont)
|
|
||||||
cont = cont + 1
|
cont = cont + 1
|
||||||
If cont = 2 Then Printer1.Connect
|
If cont = 2 Then Printer1.Connect
|
||||||
If cont > 3 Then impresoraConectada = True
|
If cont > 4 Then impresoraConectada = True
|
||||||
Loop
|
Loop
|
||||||
Sleep(500)
|
Sleep(500)
|
||||||
impresoraConectada = False
|
impresoraConectada = False
|
||||||
|
|||||||
@@ -26,6 +26,16 @@ Sub Class_Globals
|
|||||||
Dim reqManager As DBRequestManager
|
Dim reqManager As DBRequestManager
|
||||||
Private cb_reprogramar As CheckBox
|
Private cb_reprogramar As CheckBox
|
||||||
Dim reprogramar As Int = 0
|
Dim reprogramar As Int = 0
|
||||||
|
|
||||||
|
Private camEx As CameraExClass
|
||||||
|
Dim frontCamera As Boolean = False
|
||||||
|
Private p_cam As Panel
|
||||||
|
Dim nombrefoto As String = "0"
|
||||||
|
Private p_camara As Panel
|
||||||
|
Private teclado As IME
|
||||||
|
Dim fototomada As String
|
||||||
|
Private b_foto As Button
|
||||||
|
Private r_5 As RadioButton
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'You can add more parameters here.
|
'You can add more parameters here.
|
||||||
@@ -50,8 +60,13 @@ Sub B4XPage_Appear
|
|||||||
r_2.Checked = False
|
r_2.Checked = False
|
||||||
r_3.Checked = False
|
r_3.Checked = False
|
||||||
r_4.Checked = False
|
r_4.Checked = False
|
||||||
|
r_5.Checked = False
|
||||||
cb_reprogramar.Checked = False
|
cb_reprogramar.Checked = False
|
||||||
|
|
||||||
|
p_camara.Width = Root.Width
|
||||||
|
p_camara.Height = Root.Height
|
||||||
|
p_camara.Visible = False
|
||||||
|
|
||||||
CallSubDelayed(Tracker, "Track")
|
CallSubDelayed(Tracker, "Track")
|
||||||
CallSubDelayed(Tracker, "StartFLPSmall")
|
CallSubDelayed(Tracker, "StartFLPSmall")
|
||||||
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
|
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
|
||||||
@@ -62,6 +77,11 @@ Sub B4XPage_Appear
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Sub GPS_LocationChanged (Location1 As Location)
|
Sub GPS_LocationChanged (Location1 As Location)
|
||||||
' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red)
|
' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red)
|
||||||
If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then
|
If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then
|
||||||
@@ -102,7 +122,7 @@ Sub CANCELA_Click
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub GUARDA_Click
|
Sub GUARDA_Click
|
||||||
If r_1.Checked = False And r_2.Checked = False And r_3.Checked = False And r_4.Checked = False Then
|
If r_1.Checked = False And r_2.Checked = False And r_3.Checked = False And r_4.Checked = False And r_5 .Checked = False Then
|
||||||
MsgboxAsync("Selecciona un motivo de rechazo","Atención")
|
MsgboxAsync("Selecciona un motivo de rechazo","Atención")
|
||||||
Else
|
Else
|
||||||
|
|
||||||
@@ -112,6 +132,8 @@ Sub GUARDA_Click
|
|||||||
motivo = "NO PIDIO"
|
motivo = "NO PIDIO"
|
||||||
Else If r_3.Checked Then
|
Else If r_3.Checked Then
|
||||||
motivo = "CANCELA"
|
motivo = "CANCELA"
|
||||||
|
Else If r_5.Checked Then
|
||||||
|
motivo = "FALTA DE TIEMPO"
|
||||||
Else
|
Else
|
||||||
motivo = "NO ESTA EL ENCARGADO"
|
motivo = "NO ESTA EL ENCARGADO"
|
||||||
End If
|
End If
|
||||||
@@ -266,3 +288,147 @@ Private Sub cb_reprogramar_CheckedChange(Checked As Boolean)
|
|||||||
reprogramar = 0
|
reprogramar = 0
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub InitializeCamera2
|
||||||
|
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
|
||||||
|
Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean)
|
||||||
|
If resultC 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)
|
||||||
|
|
||||||
|
DateTime.DateFormat="ddMMyyyyHHmmss"
|
||||||
|
nombrefoto = DateTime.Now & "_FOTO1.png"
|
||||||
|
teclado.HideKeyboard
|
||||||
|
fototomada = nombrefoto
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 225, 300, 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
motivo = "CERRADO"
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
DateTime.TimeFormat="HHmmss"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("select CUENTA from cuentaa")
|
||||||
|
c.Position = 0
|
||||||
|
cuenta = c.GetString("CUENTA")
|
||||||
|
c=Starter.skmt.ExecQuery("select usuario from usuarioa")
|
||||||
|
c.Position = 0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
c.Close
|
||||||
|
Dim rutaactualizar As String
|
||||||
|
Dim rut As Cursor = Starter.skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)")
|
||||||
|
If rut.RowCount > 0 Then
|
||||||
|
rut.Position = 0
|
||||||
|
rutaactualizar = rut.GetString("CAT_CL_RUTA")
|
||||||
|
End If
|
||||||
|
Starter.skmt.ExecNonQuery($"DELETE FROM NOVENTA WHERE NV_CLIENTE IN (select cuenta from cuentaa)"$)
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON,NV_RUTA,NV_REPROGRAMAR,NV_FOTO) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object (cuenta,sDate & sTime, usuario, motivo,e_comm.text, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps,rutaactualizar,reprogramar,File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto)))
|
||||||
|
Starter.skmt.ExecNonQuery($"UPDATE kmt_info set gestion = 3, HORAENT = '${sDate & " " & sTime}' where CAT_CL_CODIGO In (select cuenta from cuentaa) and CAT_CL_RUTA = '${rutaactualizar}'"$)
|
||||||
|
Starter.skmt.ExecNonQuery("DELETE FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
|
||||||
|
Starter.skmt.ExecNonQuery("update HIST_VENTAS SET HVD_RECHAZO = 1, HVD_RECHAZOCANT = HVD_CANT, HVD_RECHAZOCANTC = CANTC, BCAJAS = 0 , CANTC = 0 WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
|
||||||
|
Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 2, HVD_RECHAZOCANT = HVD_RECHAZOCANT WHERE HVD_PROID = HVD_CODPROMO and HVD_CLIENTE in (Select CUENTA from cuentaa)"$)
|
||||||
|
|
||||||
|
p_camara.Visible = False
|
||||||
|
StopCamera2
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_camara_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_foto_Click
|
||||||
|
|
||||||
|
camEx.TakePicture
|
||||||
|
p_camara.Visible = False
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub StopCamera2
|
||||||
|
' Capturing = False
|
||||||
|
If camEx.IsInitialized Then
|
||||||
|
camEx.Release
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub r_1_CheckedChange(Checked As Boolean)
|
||||||
|
InitializeCamera2
|
||||||
|
p_camara.Visible = True
|
||||||
|
Subs.centraPanel(p_cam,p_camara.Width)
|
||||||
|
|
||||||
|
p_camara.BringToFront
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
If p_camara.Visible Then
|
||||||
|
p_camara.Visible = False
|
||||||
|
StopCamera2
|
||||||
|
r_1.Checked = False
|
||||||
|
Else
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
2145
B4A/C_Principal.bas
2145
B4A/C_Principal.bas
File diff suppressed because it is too large
Load Diff
310
B4A/C_deviceLinker.bas
Normal file
310
B4A/C_deviceLinker.bas
Normal file
@@ -0,0 +1,310 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=12.8
|
||||||
|
@EndOfDesignText@
|
||||||
|
'-----------------------------------------------------------------------------------
|
||||||
|
' Modulo de Clase: DeviceLinker.bas
|
||||||
|
' Propósito: Gestionar el GUID del dispositivo y verificar/ligar el dispositivo
|
||||||
|
' a un almacén y ruta en el servidor de forma segura.
|
||||||
|
'-----------------------------------------------------------------------------------
|
||||||
|
' Ejemplo de uso:
|
||||||
|
' ==== En config.properties ====
|
||||||
|
' sql.verify_device=Select nvl(CAT_RU_IDTELEFONO, 0) As CAT_RU_IDTELEFONO from kelloggs.CAT_RUTAS where cat_ru_idalmacen = ? And cat_ru_ruta = ?
|
||||||
|
' sql.registarMovil=update kelloggs.CAT_RUTAS set CAT_RU_IDTELEFONO = ? where cat_ru_idalmacen = ? And cat_ru_ruta = ?
|
||||||
|
' ==== En Class_Globals ====
|
||||||
|
' Dim linker As C_deviceLinker '<<<< Class_Globals
|
||||||
|
' ==== En B4XPage_Created ====
|
||||||
|
' linker.Initialize(Me, "Linker", True) '<<<<<< B4XPage_Created
|
||||||
|
' ==== En donde se quiera llamar ====
|
||||||
|
' linker.VerifyDevice(Subs.traeAlmacen, Subs.traeRuta)
|
||||||
|
' Sub Linker_Response(Status As String) ' << AÑADE ESTE SUB [New Query]
|
||||||
|
' If Starter.Logger Then LogColor($"Respuesta de DeviceLinker para la verificación del dispositivo: ${Status}"$, Colors.Magenta) '
|
||||||
|
' Select Status
|
||||||
|
' Case "OK"
|
||||||
|
' Log("########################################################")
|
||||||
|
' ToastMessageShow("Dispositivo verificado y vinculado correctamente.", False)
|
||||||
|
' ' Aquí puedes añadir lógica adicional si la verificación es exitosa, por ejemplo, habilitar ciertos botones o continuar con el flujo normal.
|
||||||
|
' Case "REGISTRO_COMPLETO"
|
||||||
|
' Log("########################################################")
|
||||||
|
' ToastMessageShow("¡Registro completo!", False)
|
||||||
|
' Case "SIN_REGISTRO"
|
||||||
|
' Log("########################################################")
|
||||||
|
' ToastMessageShow("¡Dispositivo sin registro!", False)
|
||||||
|
' linker.linkDevice(Subs.traeAlmacen, e_ruta.text) '<<<<<<<<< Si no esta registrado lo registramos.
|
||||||
|
' Case "REGISTRANDO"
|
||||||
|
' ToastMessageShow("¡Registro en proceso!", True)
|
||||||
|
' Case "YA_REGISTRADO"
|
||||||
|
' Log("########################################################")
|
||||||
|
' ToastMessageShow("¡¡El dispositivo ya esta registrado con otra ruta!!", True)
|
||||||
|
' Case Else ' Otros estados que tu servidor pueda devolver (ej. "UNAUTHORIZED", "PENDING_APPROVAL")
|
||||||
|
' Log("########################################################")
|
||||||
|
' ToastMessageShow($"Verificación del dispositivo: ${Status}"$, True)
|
||||||
|
' ' Puedes decidir si bloquear la funcionalidad o mostrar un mensaje específico según el estado.
|
||||||
|
' End Select
|
||||||
|
' End Sub
|
||||||
|
|
||||||
|
Sub Class_Globals
|
||||||
|
' Configuración del servidor y comandos
|
||||||
|
Private Const GUID_KEY_ALIAS As String = "DeviceGUID" ' << ALIAS PARA EL GUID EN EL KEYSTORE
|
||||||
|
|
||||||
|
' Objetos y variables internas
|
||||||
|
Private kvs As KeyValueStore ' << ALMACENAMIENTO SEGURO PARA EL GUID
|
||||||
|
Private CallBack As Object ' << OBJETO DE CALLBACK PARA ENVIAR RESPUESTAS
|
||||||
|
Private EventName As String ' << NOMBRE DEL EVENTO DE RESPUESTA
|
||||||
|
Public reqManager As DBRequestManager ' << GESTOR DE PETICIONES AL SERVIDOR jRDC
|
||||||
|
Private logger As Boolean ' << PARA CONTROLAR LOS LOGS DE ESTA CLASE
|
||||||
|
Dim lastJobDoneError As String = ""
|
||||||
|
Dim almacen As String = ""
|
||||||
|
Dim ruta As String = ""
|
||||||
|
Dim deviceId As String = ""
|
||||||
|
' Se requieren las siguientes librerías:
|
||||||
|
' - KeyValueStore2
|
||||||
|
' - DBRequestManager
|
||||||
|
' - XUI
|
||||||
|
Dim dlDB As SQL
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' Inicializa la clase DeviceLinker.
|
||||||
|
' PageObject: El módulo (ej. C_Principal) que inicializa esta clase y manejará sus respuestas (normalmente "Me").
|
||||||
|
' NameOfEvent: El prefijo para el evento de respuesta (ej. "DeviceLinker_Response").
|
||||||
|
' AppLogger: Booleano para activar/desactivar los logs internos de esta clase, siguiendo el Starter.Logger de la app.
|
||||||
|
Public Sub Initialize (PageObject As Object, NameOfEvent As String, AppLogger As Boolean)
|
||||||
|
CallBack = PageObject
|
||||||
|
EventName = NameOfEvent
|
||||||
|
logger = AppLogger ' Asignamos el estado del logger de la aplicación.
|
||||||
|
|
||||||
|
' Inicializamos el KeyValueStore para almacenamiento seguro del GUID
|
||||||
|
kvs.Initialize(File.DirInternal, "DeviceKeyStore.b4xkey")
|
||||||
|
If logger Then Log("B4XKeyStore 'DeviceKeyStore' inicializado.")
|
||||||
|
|
||||||
|
dlDB.Initialize(File.DirInternal, "deviceLink.db", True)
|
||||||
|
dlDB.ExecNonQuery("CREATE TABLE IF NOT EXISTS Registro (GUID_KEY_ALIAS TEXT)") ' Creamos la tabla si no existe
|
||||||
|
|
||||||
|
' Inicializamos el DBRequestManager para las comunicaciones con el servidor.
|
||||||
|
' 'Me' indica que el evento JobDone de esta clase se encargará de las respuestas de reqManager.
|
||||||
|
' reqManager.Initialize(Me, Starter.DBReqServer)
|
||||||
|
' reqManager.Initialize(Me, "http://keymon.net:9010/DB2") 'Servidor de pruebas
|
||||||
|
' reqManager.Initialize(Me, "http://keymon.net:1781") 'Servidor productivo
|
||||||
|
reqManager.Initialize(Me, B4XPages.MainPage.server) 'Servidor productivo
|
||||||
|
|
||||||
|
If logger Then Log("DBRequestManager para DeviceLinker inicializado.")
|
||||||
|
If logger Then Log("DeviceLinker inicializado y listo para operar.")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' Verifica y liga el dispositivo con un almacén y una ruta en el servidor.
|
||||||
|
' Almacen: El identificador del almacén.
|
||||||
|
' Ruta: El identificador de la ruta.
|
||||||
|
Public Sub verifyDevice(Almacen_ As String, Ruta_ As String)
|
||||||
|
Private verificar As Boolean = True ' La verificacion se realiza por default
|
||||||
|
Private tv As Cursor = Starter.skmt.ExecQuery("select * from cat_variables where CAT_VA_DESCRIPCION = 'VERIFY_DEVICE'")
|
||||||
|
If tv.RowCount > 0 Then
|
||||||
|
tv.Position = 0
|
||||||
|
If tv.GetString("CAT_VA_VALOR") = 0 Then verificar = False
|
||||||
|
End If
|
||||||
|
If verificar Then ' Si VERIFY_DEVICE no está en CERO ... verificamos.
|
||||||
|
Dim DeviceId_ As String = GetDeviceGUID ' Obtenemos o generamos el GUID del dispositivo.
|
||||||
|
LogColor(DeviceId_, Colors.red)
|
||||||
|
almacen = Almacen_
|
||||||
|
ruta = Ruta_
|
||||||
|
deviceId = DeviceId_
|
||||||
|
If DeviceId_ = "" Then
|
||||||
|
If logger Then LogColor("Error: GUID del dispositivo no pudo ser obtenido o generado.", Colors.Red)
|
||||||
|
' Enviar una respuesta de error al callback si no se pudo obtener el GUID.
|
||||||
|
If SubExists(CallBack, EventName & "_Response") Then ' [New Query]
|
||||||
|
CallSub2(CallBack, EventName & "_Response", "GUID_ERROR") ' Dispara el evento Linker_Response("GUID_ERROR")
|
||||||
|
End If
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
|
||||||
|
If logger Then Log($"Enviando solicitud de verificación para DeviceId: ${DeviceId_}, Almacen: ${Almacen_}, Ruta: ${Ruta_}"$)
|
||||||
|
|
||||||
|
Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "verify_device"
|
||||||
|
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||||
|
cmd.Parameters = Array As Object(Almacen_, Ruta_) ', DeviceId_
|
||||||
|
Log($"Enviamos almacen: ${Almacen_} y ruta: ${Ruta_}"$)
|
||||||
|
|
||||||
|
' Ejecutamos el comando en el servidor. 'Me' indica que DBRequestManager_JobDone en esta clase manejará la respuesta.
|
||||||
|
reqManager.ExecuteQuery(cmd, 0, "verify_device")
|
||||||
|
Else ' Si está en CERO (Verificacion deshabilitada), regresamos "OK".
|
||||||
|
CallSub2(CallBack, EventName & "_Response", "OK")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub linkDevice(Almacen_ As String, Ruta_ As String)
|
||||||
|
Dim deviceId As String = GetDeviceGUID ' Obtenemos o generamos el GUID del dispositivo.
|
||||||
|
Log("########################################################")
|
||||||
|
Log("REGISTRANDO")
|
||||||
|
Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "registarMovil"
|
||||||
|
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||||
|
cmd.Parameters = Array As Object(deviceId, Almacen_, Ruta_)
|
||||||
|
reqManager.ExecuteCommand(cmd, "registramosGUID")
|
||||||
|
If SubExists(CallBack, EventName & "_Response") Then
|
||||||
|
CallSub2(CallBack, EventName & "_Response", "REGISTRANDO") ' Dispara el evento Linker_Response("REGISTRANDO")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'244500
|
||||||
|
|
||||||
|
' Obtiene el GUID único del dispositivo desde B4XKeyStore.
|
||||||
|
' Si no existe, lo genera y lo guarda utilizando Subs.GUID.
|
||||||
|
Private Sub GetDeviceGUID As String
|
||||||
|
' If kvs.ContainsKey(GUID_KEY_ALIAS) = False Then
|
||||||
|
' ' Corrección: Usamos la función GUID ya existente en el módulo Subs [1].
|
||||||
|
' Dim NewGUID As String = generaGUID
|
||||||
|
' kvs.Put(GUID_KEY_ALIAS, NewGUID) ' Lo guardamos de forma segura en el KeyStore.
|
||||||
|
' If logger Then LogColor($"Nuevo GUID generado y guardado: ${NewGUID}"$, Colors.Blue)
|
||||||
|
' Return NewGUID
|
||||||
|
' Else
|
||||||
|
' Dim ExistingGUID As String = kvs.Get(GUID_KEY_ALIAS) ' Recuperamos el GUID existente.
|
||||||
|
' If logger Then LogColor($"GUID existente cargado: ${ExistingGUID}"$, Colors.Blue)
|
||||||
|
' Return ExistingGUID
|
||||||
|
' End If
|
||||||
|
|
||||||
|
If deviceLinked = False Then
|
||||||
|
' Corrección: Usamos la función GUID ya existente en el módulo Subs [1].
|
||||||
|
Dim NewGUID As String = generaGUID
|
||||||
|
dlDB.ExecNonQuery($"insert into registro ('GUID_KEY_ALIAS') values ('${NewGUID}')"$) ' Guardamos nuevo registro
|
||||||
|
If logger Then LogColor($"Nuevo GUID generado y guardado: ${NewGUID}"$, Colors.Blue)
|
||||||
|
Return NewGUID
|
||||||
|
Else
|
||||||
|
Dim ExistingGUID As String
|
||||||
|
Private e As Cursor = dlDB.ExecQuery("select GUID_KEY_ALIAS from registro")
|
||||||
|
e.Position = 0
|
||||||
|
ExistingGUID = e.GetString("GUID_KEY_ALIAS")
|
||||||
|
If logger Then LogColor($"GUID existente cargado: ${ExistingGUID}"$, Colors.Blue)
|
||||||
|
Return ExistingGUID
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' Callback para manejar las respuestas del DBRequestManager de esta clase.
|
||||||
|
Public Sub JobDone(Job As HttpJob) ' El nombre del sub debe ser 'JobDone' o el que se haya especificado en reqManager.Initialize(Me, ApiUrl)
|
||||||
|
If logger Then Log("INICA JOBDONE DEVICELINKER - " & Job.Tag)
|
||||||
|
If reqManager.reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos.
|
||||||
|
If reqManager.reqsList.IndexOf(Job.tag) <> -1 Then
|
||||||
|
reqManager.reqsList.RemoveAt(reqManager.reqsList.IndexOf(Job.tag))
|
||||||
|
LogColor($">>>>>> Recibimos y quitamos ${Job.tag.As(String).ToUpperCase}"$, Colors.Blue)
|
||||||
|
End If
|
||||||
|
LogColor(">>>>>> " & reqManager.reqsList.Size & " - " & reqManager.reqsList, Colors.Blue)
|
||||||
|
End If
|
||||||
|
If Job.Success = False Then
|
||||||
|
lastJobDoneError = Job.ErrorMessage
|
||||||
|
LogColor("############################################", Colors.red)
|
||||||
|
LogColor("###### JobError: " & Job.Tag & " ######" & CRLF & "#### " & Job.ErrorMessage, Colors.red)
|
||||||
|
LogColor("############################################", Colors.red)
|
||||||
|
' Enviar una respuesta de error HTTP al callback.
|
||||||
|
If SubExists(CallBack, EventName & "_Response") Then
|
||||||
|
CallSub2(CallBack, EventName & "_Response", "HTTP_ERROR") ' Dispara el evento Linker_Response("HTTP_ERROR")
|
||||||
|
End If
|
||||||
|
Else 'If Job Success then ...
|
||||||
|
lastJobDoneError = ""
|
||||||
|
If Job.JobName = "DBRequest" Then ' Asegurarse de que sea una respuesta de DBRequestManager.
|
||||||
|
' Primero verificamos Job.Success para saber si la comunicación HTTP fue exitosa [New Query]
|
||||||
|
If Job.Success Then
|
||||||
|
Dim result As DBResult = reqManager.HandleJob(Job) ' Procesamos el HttpJob para obtener el DBResult.
|
||||||
|
If logger Then LogColor($"Petición exitosa al servidor. Registros devueltos: ${result.Rows.Size}"$, Colors.Green)
|
||||||
|
|
||||||
|
|
||||||
|
' If result.Tag = "hist_cliente_promos" Then 'query tag
|
||||||
|
' Starter.skmt.BeginTransaction
|
||||||
|
' For Each records() As Object In result.Rows
|
||||||
|
' Dim HCCP_CLIENTE As String = records(result.Columns.Get("HCCP_CLIENTE"))
|
||||||
|
' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA) VALUES (?,?,?,?)", Array As Object (HCCP_CLIENTE))
|
||||||
|
' Next
|
||||||
|
' Starter.skmt.TransactionSuccessful
|
||||||
|
' Starter.skmt.EndTransaction
|
||||||
|
' ' ToastMessageShow(" Historico Clientes Promociones Actualizado." , True)
|
||||||
|
' End If
|
||||||
|
|
||||||
|
If result.Tag = "verify_device" Then 'query tag
|
||||||
|
' Aquí es donde la lógica de la aplicación interpreta el éxito/falla de la operación en el servidor.
|
||||||
|
If result.Rows.Size > 0 Then
|
||||||
|
Subs.logJobDoneResultados(result)
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim Status As String = "" 'records(result.Columns.Get("ESTATUS"))
|
||||||
|
Dim CAT_RU_IDTELEFONO As String = records(result.Columns.Get("CAT_RU_IDTELEFONO"))
|
||||||
|
deviceId = GetDeviceGUID
|
||||||
|
Log($"|${deviceId}|${CAT_RU_IDTELEFONO}|"$)
|
||||||
|
' If deviceId <> CAT_RU_IDTELEFONO Then Status = "YA_REGISTRADO" ' Ya existe OTRO registro.
|
||||||
|
If CAT_RU_IDTELEFONO = 0 Or CAT_RU_IDTELEFONO.Length < 5 Then
|
||||||
|
Status = "SIN_REGISTRO"
|
||||||
|
' Log("########################################################")
|
||||||
|
' Log("REGISTRANDO")
|
||||||
|
' Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||||
|
' cmd.Initialize
|
||||||
|
' cmd.Name = "registarMovil"
|
||||||
|
' ' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||||
|
' cmd.Parameters = Array As Object(deviceId, almacen, ruta)
|
||||||
|
' reqManager.ExecuteCommand(cmd, "registramosGUID")
|
||||||
|
If SubExists(CallBack, EventName & "_Response") Then
|
||||||
|
CallSub2(CallBack, EventName & "_Response", "SIN_REGISTRO")
|
||||||
|
End If
|
||||||
|
else if CAT_RU_IDTELEFONO = deviceId Then
|
||||||
|
Status = "OK"
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("LIGADO"))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIGADO", 1))
|
||||||
|
Log("OK")
|
||||||
|
LogColor("######### GUARDAMOS ###########", Colors.red)
|
||||||
|
Else
|
||||||
|
Status = "YA_REGISTRADO"
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("LIGADO"))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIGADO", 0))
|
||||||
|
Log("YA_REGISTRADO")
|
||||||
|
LogColor("######### GUARDAMOS ###########", Colors.red)
|
||||||
|
End If
|
||||||
|
' Invocamos el callback en el módulo principal con el estado.
|
||||||
|
Next
|
||||||
|
Else
|
||||||
|
Status = "NO_EXISTE_RUTA"
|
||||||
|
End If
|
||||||
|
If SubExists(CallBack, EventName & "_Response") Then
|
||||||
|
CallSub2(CallBack, EventName & "_Response", Status) ' Dispara el evento Linker_Response("OK") o Linker_Response("YA_REGISTRADO")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If result.Tag = "registramosGUID" Then
|
||||||
|
Log("########################################################")
|
||||||
|
Log("REGISTRO_COMPLETO")
|
||||||
|
LogColor("######### GUARDAMOS ###########", Colors.red)
|
||||||
|
Subs.logJobDoneResultados(result)
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("LIGADO"))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIGADO", 1))
|
||||||
|
If SubExists(CallBack, EventName & "_Response") Then
|
||||||
|
CallSub2(CallBack, EventName & "_Response", "REGISTRO_COMPLETO") ' Dispara el evento Linker_Response("REGISTRO_COMPLETO")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Job.Release ' Muy importante liberar el HttpJob para evitar fugas de memoria.
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Genera un GUID (globally unique identifier)
|
||||||
|
Sub generaGUID As String
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
sb.Initialize
|
||||||
|
For Each stp As Int In Array(8, 4, 4, 4, 12)
|
||||||
|
If sb.Length > 0 Then sb.Append("-")
|
||||||
|
For n = 1 To stp
|
||||||
|
Dim c As Int = Rnd(0, 16)
|
||||||
|
If c < 10 Then c = c + 48 Else c = c + 55
|
||||||
|
sb.Append(Chr(c))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
Return sb.ToString
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa true si existe registro
|
||||||
|
Sub deviceLinked As Boolean
|
||||||
|
Private e As Cursor = dlDB.ExecQuery("select * from registro")
|
||||||
|
If e.RowCount > 0 Then
|
||||||
|
Return True
|
||||||
|
Else
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
@@ -1141,7 +1141,7 @@ Private Sub AStream_NewData (Buffer() As Byte)
|
|||||||
If SubExists(CallBack, EventName & "_NewData") Then
|
If SubExists(CallBack, EventName & "_NewData") Then
|
||||||
CallSub2(CallBack, EventName & "_NewData", Buffer)
|
CallSub2(CallBack, EventName & "_NewData", Buffer)
|
||||||
End If
|
End If
|
||||||
Log("Data " & Buffer(0))
|
' Log("Data " & Buffer(0))
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub AStream_Error
|
Private Sub AStream_Error
|
||||||
|
|||||||
Binary file not shown.
BIN
B4A/Files/comentario.png
Normal file
BIN
B4A/Files/comentario.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
Binary file not shown.
Binary file not shown.
BIN
B4A/Files/images.png
Normal file
BIN
B4A/Files/images.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
BIN
B4A/Files/inventarios.jpg
Normal file
BIN
B4A/Files/inventarios.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
BIN
B4A/Files/inventarios.png
Normal file
BIN
B4A/Files/inventarios.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
BIN
B4A/Files/marker-amarillo.png
Normal file
BIN
B4A/Files/marker-amarillo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 894 B |
Binary file not shown.
Binary file not shown.
@@ -161,11 +161,37 @@ Sub MapFragment1_Ready
|
|||||||
' If esteAzul = 4 Then esteAzul2= NumSerie&"marker-azul3.png"
|
' If esteAzul = 4 Then esteAzul2= NumSerie&"marker-azul3.png"
|
||||||
' If esteAzul = 5 Then esteAzul2= NumSerie&"marker-azul4.png"
|
' If esteAzul = 5 Then esteAzul2= NumSerie&"marker-azul4.png"
|
||||||
|
|
||||||
If esteAzul = 1 Then esteAzul2= "marker-azul.png"
|
Dim pedidos As Cursor = Starter.skmt.ExecQuery2("select * from HIST_VENTAS WHERE HVD_CLIENTE = ?", Array As String(c.GetString("CAT_CL_CODIGO")))
|
||||||
If esteAzul = 2 Then esteAzul2= "marker-azul1.png"
|
Log(c.GetString("CAT_CL_CODIGO")&" "& pedidos.RowCount)
|
||||||
If esteAzul = 3 Then esteAzul2= "marker-azul2.png"
|
If pedidos.RowCount > 1 Then
|
||||||
If esteAzul = 4 Then esteAzul2= "marker-azul3.png"
|
|
||||||
If esteAzul = 5 Then esteAzul2= "marker-azul4.png"
|
If esteAzul = 1 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 2 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 3 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 4 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 5 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 6 Then esteAzul2= "marker-azul.png"
|
||||||
|
|
||||||
|
Else If pedidos.RowCount = 1 Then
|
||||||
|
|
||||||
|
pedidos.Position = 0
|
||||||
|
If pedidos.GetString("HVD_PRONOMBRE") = "Cobranza Pendiente" Then
|
||||||
|
If esteAzul = 1 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 2 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 3 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 4 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 5 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 6 Then esteAzul2= "marker-azul.png"
|
||||||
|
Else
|
||||||
|
If esteAzul = 1 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 2 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 3 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 4 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 5 Then esteAzul2= "marker-azul.png"
|
||||||
|
If esteAzul = 6 Then esteAzul2= "marker-azul.png"
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
' MARK_VERDE = gmap.AddMarker3(LatitudRu,LongitudRU,CODIGO, Subs.CreateBitmapWithNumber(LoadBitmap(File.DirAssets, "marker-verde.png"), i+350))
|
' MARK_VERDE = gmap.AddMarker3(LatitudRu,LongitudRU,CODIGO, Subs.CreateBitmapWithNumber(LoadBitmap(File.DirAssets, "marker-verde.png"), i+350))
|
||||||
|
|
||||||
' Log(ruta & "|" & esteAzul & "|" & esteAzul2)
|
' Log(ruta & "|" & esteAzul & "|" & esteAzul2)
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ Sub Process_Globals
|
|||||||
Public SharedFolder As String 'Para actualizar apk
|
Public SharedFolder As String 'Para actualizar apk
|
||||||
Dim cedisLocation As Location
|
Dim cedisLocation As Location
|
||||||
Dim reqManager As DBRequestManager
|
Dim reqManager As DBRequestManager
|
||||||
Dim server As String = "http://187.189.244.154:1782"
|
' Dim server As String = "http://187.189.244.154:1782"
|
||||||
' Dim server As String = "http://192.168.100.10:1781"
|
Dim server As String = "http://keymon.net:1782"
|
||||||
' Dim server As String = "http://keymon.lat:9000"
|
' Dim server As String = "http://keymon.lat:9000"
|
||||||
' Dim server = "http://192.168.100.10:1781"
|
' Dim server = "http://192.168.100.10:1781"
|
||||||
Dim muestraProgreso = 0
|
Dim muestraProgreso = 0
|
||||||
@@ -42,6 +42,8 @@ Sub Process_Globals
|
|||||||
Dim inicioMapa As Boolean = False
|
Dim inicioMapa As Boolean = False
|
||||||
Dim inicioLat As Double = 0
|
Dim inicioLat As Double = 0
|
||||||
Dim inicioLon As Double = 0
|
Dim inicioLon As Double = 0
|
||||||
|
Dim Logger As Boolean = False
|
||||||
|
Dim FECHA_HOY As String
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub Service_Create
|
Sub Service_Create
|
||||||
@@ -113,7 +115,7 @@ Sub ENVIA_ULTIMA_GPS
|
|||||||
skmt.Initialize(ruta,"kmt.db", True)
|
skmt.Initialize(ruta,"kmt.db", True)
|
||||||
' Log("server: "&Main.server)
|
' Log("server: "&Main.server)
|
||||||
skmt.Initialize(ruta,"kmt.db", True)
|
skmt.Initialize(ruta,"kmt.db", True)
|
||||||
If B4XPages.MainPage.logger Then LogColor("Iniciamos ENVIA_ULTIMA_GPS", Colors.red)
|
' If B4XPages.MainPage.logger Then LogColor("Iniciamos ENVIA_ULTIMA_GPS", Colors.red)
|
||||||
DateTime.TimeFormat = "HHmmss"
|
DateTime.TimeFormat = "HHmmss"
|
||||||
B4XPages.MainPage.ultimaActualizacionGPS = DateTime.Time(DateTime.Now)
|
B4XPages.MainPage.ultimaActualizacionGPS = DateTime.Time(DateTime.Now)
|
||||||
cmd.Initialize
|
cmd.Initialize
|
||||||
@@ -125,7 +127,8 @@ Sub ENVIA_ULTIMA_GPS
|
|||||||
cmd.Name = "UPDATE_ACTUAL_GPS_GUNA_VN"
|
cmd.Name = "UPDATE_ACTUAL_GPS_GUNA_VN"
|
||||||
' cmd.Parameters = Array As Object(B4XPages.MainPage.clientesvisitados, B4XPages.MainPage.clientestotal, B4XPages.MainPage.clientesventa, B4XPages.MainPage.montoRechazado, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, B4XPages.MainPage.batt, B4XPages.MainPage.montoEntregado, B4XPages.MainPage.montoRechazado,B4XPages.MainPage.clientestotal, B4XPages.MainPage.porVisitar, B4XPages.MainPage.entregas, B4XPages.MainPage.rechazos, B4XPages.MainPage.ALMACEN, B4XPages.MainPage.rutapreventa )
|
' cmd.Parameters = Array As Object(B4XPages.MainPage.clientesvisitados, B4XPages.MainPage.clientestotal, B4XPages.MainPage.clientesventa, B4XPages.MainPage.montoRechazado, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, B4XPages.MainPage.batt, B4XPages.MainPage.montoEntregado, B4XPages.MainPage.montoRechazado,B4XPages.MainPage.clientestotal, B4XPages.MainPage.porVisitar, B4XPages.MainPage.entregas, B4XPages.MainPage.rechazos, B4XPages.MainPage.ALMACEN, B4XPages.MainPage.rutapreventa )
|
||||||
cmd.Parameters = Array As String(B4XPages.MainPage.montoActual,B4XPages.MainPage.montoRechazado,B4XPages.MainPage.monto_entregadoactual,B4XPages.MainPage.piezas_entregdas, B4XPages.MainPage.clientestotal,B4XPages.MainPage.entregas, B4XPages.MainPage.rechazos, (B4XPages.MainPage.rechazos + B4XPages.MainPage.entregas), B4XPages.MainPage.porVisitar, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, B4XPages.MainPage.batt,Application.VersionName,B4XPages.MainPage.ALMACEN, B4XPages.MainPage.rutapreventa)
|
cmd.Parameters = Array As String(B4XPages.MainPage.montoActual,B4XPages.MainPage.montoRechazado,B4XPages.MainPage.monto_entregadoactual,B4XPages.MainPage.piezas_entregdas, B4XPages.MainPage.clientestotal,B4XPages.MainPage.entregas, B4XPages.MainPage.rechazos, (B4XPages.MainPage.rechazos + B4XPages.MainPage.entregas), B4XPages.MainPage.porVisitar, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, B4XPages.MainPage.batt,Application.VersionName,B4XPages.MainPage.ALMACEN, B4XPages.MainPage.rutapreventa)
|
||||||
Log(B4XPages.MainPage.montoActual&", "&B4XPages.MainPage.montoRechazado&", "&B4XPages.MainPage.monto_entregadoactual&", "&B4XPages.MainPage.piezas_entregdas&", "& B4XPages.MainPage.clientestotal&", "&B4XPages.MainPage.entregas&", "& B4XPages.MainPage.rechazos&", "& (B4XPages.MainPage.rechazos + B4XPages.MainPage.entregas)&", "& B4XPages.MainPage.porVisitar&", "& B4XPages.MainPage.lat_gps&", "& B4XPages.MainPage.lon_gps&", "& B4XPages.MainPage.batt&", "&Application.VersionName&", "&B4XPages.MainPage.ALMACEN&", "& B4XPages.MainPage.rutapreventa)
|
' Log(B4XPages.MainPage.montoActual&" , "&B4XPages.MainPage.montoRechazado&" , "&B4XPages.MainPage.monto_entregadoactual&" , "&B4XPages.MainPage.piezas_entregdas&" , "&B4XPages.MainPage.clientestotal&" , "&B4XPages.MainPage.entregas&" , "&B4XPages.MainPage.rechazos&" , "&(B4XPages.MainPage.rechazos + B4XPages.MainPage.entregas)&" , "&B4XPages.MainPage.porVisitar)
|
||||||
|
' Log(B4XPages.MainPage.montoActual&", "&B4XPages.MainPage.montoRechazado&", "&B4XPages.MainPage.monto_entregadoactual&", "&B4XPages.MainPage.piezas_entregdas&", "& B4XPages.MainPage.clientestotal&", "&B4XPages.MainPage.entregas&", "& B4XPages.MainPage.rechazos&", "& (B4XPages.MainPage.rechazos + B4XPages.MainPage.entregas)&", "& B4XPages.MainPage.porVisitar&", "& B4XPages.MainPage.lat_gps&", "& B4XPages.MainPage.lon_gps&", "& B4XPages.MainPage.batt&", "&Application.VersionName&", "&B4XPages.MainPage.ALMACEN&", "& B4XPages.MainPage.rutapreventa)
|
||||||
' If B4XPages.MainPage.logger Then Log($"montoActual: ${B4XPages.MainPage.montoActual}, cTotal: ${B4XPages.MainPage.clientestotal}, cVenta: ${B4XPages.MainPage.clientesventa}, cVisitados: ${B4XPages.MainPage.clientesvisitados}, ${B4XPages.MainPage.lat_gps}, ${B4XPages.MainPage.lon_gps}, Batt: ${B4XPages.MainPage.batt}, montoRechazado: ${B4XPages.MainPage.montoRechazado}, montoEntregado: ${B4XPages.MainPage.montoEntregado}, porVisitar: ${B4XPages.MainPage.porVisitar}, entregas: ${B4XPages.MainPage.entregas}, rechazos: ${B4XPages.MainPage.rechazos}, Almacen: ${B4XPages.MainPage.ALMACEN}, Ruta: ${B4XPages.MainPage.rutapreventa}"$)
|
' If B4XPages.MainPage.logger Then Log($"montoActual: ${B4XPages.MainPage.montoActual}, cTotal: ${B4XPages.MainPage.clientestotal}, cVenta: ${B4XPages.MainPage.clientesventa}, cVisitados: ${B4XPages.MainPage.clientesvisitados}, ${B4XPages.MainPage.lat_gps}, ${B4XPages.MainPage.lon_gps}, Batt: ${B4XPages.MainPage.batt}, montoRechazado: ${B4XPages.MainPage.montoRechazado}, montoEntregado: ${B4XPages.MainPage.montoEntregado}, porVisitar: ${B4XPages.MainPage.porVisitar}, entregas: ${B4XPages.MainPage.entregas}, rechazos: ${B4XPages.MainPage.rechazos}, Almacen: ${B4XPages.MainPage.ALMACEN}, Ruta: ${B4XPages.MainPage.rutapreventa}"$)
|
||||||
reqManager.ExecuteCommand(cmd, "up_geolocalizacion")
|
reqManager.ExecuteCommand(cmd, "up_geolocalizacion")
|
||||||
skmt.ExecNonQuery2("Update cat_variables set CAT_VA_VALOR = ? WHERE CAT_VA_DESCRIPCION = ?" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso"))
|
skmt.ExecNonQuery2("Update cat_variables set CAT_VA_VALOR = ? WHERE CAT_VA_DESCRIPCION = ?" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso"))
|
||||||
|
|||||||
60
B4A/Subs.bas
60
B4A/Subs.bas
@@ -19,6 +19,8 @@ Sub Process_Globals
|
|||||||
Dim rutaMaxPoints As Int = 3000
|
Dim rutaMaxPoints As Int = 3000
|
||||||
Dim rutaHrsAtras As Int = 48
|
Dim rutaHrsAtras As Int = 48
|
||||||
' Dim rutaInicioHoy As String = ""
|
' Dim rutaInicioHoy As String = ""
|
||||||
|
Dim in As Intent
|
||||||
|
Dim intentUsado As Boolean = False
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'Pone el valor de phn.Model en la variable global "devModel"
|
'Pone el valor de phn.Model en la variable global "devModel"
|
||||||
@@ -41,6 +43,62 @@ Sub getPhnId As String 'ignore
|
|||||||
Return devModel
|
Return devModel
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
' Se revisa si hay una intención (intent) de abrir una base de datos y si es así, entonces se importa esa base de datos.
|
||||||
|
Sub importaBDDesdeWhatsApp
|
||||||
|
' Private tmpBDWA As Boolean = traeUsarIntentBDWA
|
||||||
|
Log("Revisamos intent de importar desde whatsapp")
|
||||||
|
Log(B4XPages.MainPage.intentUsado)
|
||||||
|
Log(in)
|
||||||
|
If Not(in.IsInitialized) Then in = B4XPages.GetNativeParent(B4XPages.MainPage).GetStartingIntent ' Si se usa esta funcion en Mainpage, se pone "Me" en lugar de B4XPages.MainPage.
|
||||||
|
If Not(B4XPages.MainPage.intentUsado) And in <> Null Then
|
||||||
|
' Log(in)
|
||||||
|
LogColor("Importamos base de datos desde Whatsapp.", Colors.blue)
|
||||||
|
B4XPages.MainPage.intentUsado = True
|
||||||
|
' Log(in.As(String))
|
||||||
|
If in.GetData <> Null Then
|
||||||
|
Dim XmlData As String
|
||||||
|
XmlData = in.GetData
|
||||||
|
Try
|
||||||
|
Dim OutStr As OutputStream = File.OpenOutput(File.DirInternal,"kmt.db",False)
|
||||||
|
Dim InStr As InputStream = File.OpenInput("ContentDir",XmlData)
|
||||||
|
File.Copy2(InStr,OutStr)
|
||||||
|
LogColor("BD copiada a interna.", Colors.Blue)
|
||||||
|
OutStr.Close
|
||||||
|
If in.As(String).Contains("whatsapp") Then ToastMessageShow("BD cargada desde Whatsapp", False)
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
' ExitApplication
|
||||||
|
' Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'IMPORTAR_BD_WA'")
|
||||||
|
' Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('IMPORTAR_BD_WA', '${tmpBDWA}')"$)
|
||||||
|
Private a As Cursor = Starter.skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'APP_NAME'"$)
|
||||||
|
If a.RowCount > 0 Then
|
||||||
|
a.Position = 0
|
||||||
|
ToastMessageShow($"BD de "${a.GetString("CAT_VA_VALOR")}" cargada."$, True)
|
||||||
|
End If
|
||||||
|
a = Starter.skmt.ExecQuery($"select * from usuarioa"$)
|
||||||
|
If a.RowCount > 0 Then
|
||||||
|
a.Position = 0
|
||||||
|
B4XPages.MainPage.user.Text = a.GetString("USUARIO")
|
||||||
|
B4XPages.MainPage.pass.Text = a.GetString("PASS")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa si se debe de usar el intent de importar la base d datos desde Whatsapp.
|
||||||
|
Sub traeUsarIntentBDWA As Boolean 'ignore
|
||||||
|
Private BDWA As Boolean = False
|
||||||
|
Private x As Cursor = Starter.skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'IMPORTAR_BD_WA'"$)
|
||||||
|
If x.RowCount > 0 Then
|
||||||
|
x.Position = 0
|
||||||
|
If x.GetString("CAT_VA_VALOR") = "true" Then BDWA = True
|
||||||
|
End If
|
||||||
|
' Log($"cb_importarBDWA = ${BDWA}"$)
|
||||||
|
Return BDWA
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
'Comprime y regresa un texto (str) en base64
|
'Comprime y regresa un texto (str) en base64
|
||||||
Sub compress(str As String) As String 'ignore
|
Sub compress(str As String) As String 'ignore
|
||||||
'Requiere la libreria "CompressStrings"
|
'Requiere la libreria "CompressStrings"
|
||||||
@@ -730,7 +788,7 @@ Sub traeCliente As String 'ignore
|
|||||||
cli.Position = 0
|
cli.Position = 0
|
||||||
Private cl As String = cli.GetString("CUENTA")
|
Private cl As String = cli.GetString("CUENTA")
|
||||||
cli.Close
|
cli.Close
|
||||||
Log("Algo paso..."& cl)
|
' Log("Algo paso..."& cl)
|
||||||
Return cl
|
Return cl
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|||||||
127
B4A/Tracker.bas
127
B4A/Tracker.bas
@@ -192,47 +192,116 @@ Public Sub StopFLP
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub flp_LocationChanged (Location1 As Location)
|
Sub flp_LocationChanged (Location1 As Location)
|
||||||
Starter.trackerActividad = Subs.fechaKMT(DateTime.Now)
|
' Starter.trackerActividad = Subs.fechaKMT(DateTime.Now)
|
||||||
UUGCoords = Location1
|
' UUGCoords = Location1
|
||||||
' If Main.logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
|
'' If Main.logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
|
||||||
CallSub2(Starter, "GPS_LocationChanged", Location1)
|
' CallSub2(Starter, "GPS_LocationChanged", Location1)
|
||||||
' CallSub2(gestion, "GPS_LocationChanged", Location1)
|
'' CallSub2(gestion, "GPS_LocationChanged", Location1)
|
||||||
' CallSubDelayed2(gestion, "GPS_LocationChanged", Location1)
|
'' CallSubDelayed2(gestion, "GPS_LocationChanged", Location1)
|
||||||
|
' B4XPages.MainPage.lat_gps = Location1.Latitude
|
||||||
|
' B4XPages.MainPage.lon_gps = Location1.Longitude
|
||||||
|
''/////// para la ultima ubicacion FL
|
||||||
|
' Dim sDate,sTime As String
|
||||||
|
' DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
' sDate=DateTime.Date(DateTime.Now)
|
||||||
|
' sTime=DateTime.Time(DateTime.Now)
|
||||||
|
' Try
|
||||||
|
' Starter.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
|
||||||
|
' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
|
||||||
|
' Catch
|
||||||
|
' If B4XPages.MainPage.logger Then Log("Error al borrar o insertar nuevas coordendas en HIST_GPS")
|
||||||
|
' End Try
|
||||||
|
''///////
|
||||||
|
' Dim coords As String = Location1.Latitude&","&Location1.Longitude&","&formatoFecha(Location1.Time)
|
||||||
|
' Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude)
|
||||||
|
' If B4XPages.MainPage.logger Then Log("Mandamos Ubicacion")
|
||||||
|
' If B4XPages.MainPage.logger Then Log(locRequest)
|
||||||
|
' ' Solo mandamos la ubicacion si la precision es menor a XX mts
|
||||||
|
' If Location1.Accuracy < 100 Then
|
||||||
|
' Subs.guardaInfoEnBD(coords)'Escribimos coordenadas y fecha en BD
|
||||||
|
'' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords)
|
||||||
|
' Subs.mandamosLoc(coords)
|
||||||
|
' End If
|
||||||
|
' Dim origFormat As String = DateTime.TimeFormat 'Guardamos formato de fecha
|
||||||
|
' DateTime.TimeFormat = "HHmmss" ' Modificamos formato de fecha
|
||||||
|
' Dim minsDif As Int = DateTime.Time(DateTime.Now) - B4XPages.MainPage.ultimaActualizacionGPS
|
||||||
|
'' If Main.logger Then Log("UltimaAct="&Main.ultimaActualizacionGPS&" MinsDif="&minsDif)
|
||||||
|
' If Location1.Accuracy < 100 And minsDif > 240 Then 'Si precision de 100 y 4 min transcurridos manda a web
|
||||||
|
' If B4XPages.MainPage.logger Then Log("actualizamos Ubicacion Web")
|
||||||
|
' CallSubDelayed(Starter, "ENVIA_ULTIMA_GPS")
|
||||||
|
' End If
|
||||||
|
' DateTime.TimeFormat = origFormat 'Regresamos formato de fecha original
|
||||||
|
' 'Revisamos servicios
|
||||||
|
' Subs.monitor
|
||||||
|
|
||||||
|
' ToastMessageShow("Loc changed", False)
|
||||||
|
' Log($"Loc changed:${Location1.Longitude},${Location1.Latitude}"$)
|
||||||
B4XPages.MainPage.lat_gps = Location1.Latitude
|
B4XPages.MainPage.lat_gps = Location1.Latitude
|
||||||
B4XPages.MainPage.lon_gps = Location1.Longitude
|
B4XPages.MainPage.lon_gps = Location1.Longitude
|
||||||
'/////// para la ultima ubicacion FL
|
UUGCoords = Location1
|
||||||
|
' Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
|
||||||
|
' If DateTime.Now > LastUpdateTime + 10 * DateTime.TicksPerSecond Then
|
||||||
|
' Dim n As Notification = CreateNotification($"$2.5{Location1.Latitude} / $2.5{Location1.Longitude}"$)
|
||||||
|
' n.Notify(nid)
|
||||||
|
' LastUpdateTime = DateTime.Now
|
||||||
|
' End If
|
||||||
|
'/////// para la ultima localización FL
|
||||||
Dim sDate,sTime As String
|
Dim sDate,sTime As String
|
||||||
DateTime.DateFormat = "MM/dd/yyyy"
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
sDate=DateTime.Date(DateTime.Now)
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
sTime=DateTime.Time(DateTime.Now)
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
Try
|
' If Not(Starter.skmt.IsInitialized) Then Starter.skmt.Initialize(Starter.ruta,"kmt.db", True)
|
||||||
Starter.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
|
' Try
|
||||||
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
|
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
|
||||||
Catch
|
' B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
|
||||||
If B4XPages.MainPage.logger Then Log("Error al borrar o insertar nuevas coordendas en HIST_GPS")
|
' Catch
|
||||||
End Try
|
' LogColor(LastException, Colors.Red)
|
||||||
'///////
|
' End Try
|
||||||
|
'///////
|
||||||
Dim coords As String = Location1.Latitude&","&Location1.Longitude&","&formatoFecha(Location1.Time)
|
Dim coords As String = Location1.Latitude&","&Location1.Longitude&","&formatoFecha(Location1.Time)
|
||||||
Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude)
|
' Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude&"|"&B4XPages.MainPage.usuario&"|")
|
||||||
If B4XPages.MainPage.logger Then Log("Mandamos Ubicacion")
|
' Log("Mandamos Ubicacion")
|
||||||
If B4XPages.MainPage.logger Then Log(locRequest)
|
' Log(FirebaseMessaging.locRequest)
|
||||||
' Solo mandamos la ubicacion si la precision es menor a XX mts
|
' Solo mandamos la ubicacion si la precision es menor a XX mts
|
||||||
If Location1.Accuracy < 100 Then
|
If Location1.Accuracy < 100 Then
|
||||||
Subs.guardaInfoEnBD(coords)'Escribimos coordenadas y fecha en BD
|
|
||||||
' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords)
|
' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords)
|
||||||
Subs.mandamosLoc(coords)
|
|
||||||
End If
|
End If
|
||||||
Dim origFormat As String = DateTime.TimeFormat 'Guardamos formato de fecha
|
|
||||||
DateTime.TimeFormat = "HHmmss" ' Modificamos formato de fecha
|
CallSub2(Starter, "GPS_LocationChanged", Location1)
|
||||||
Dim minsDif As Int = DateTime.Time(DateTime.Now) - B4XPages.MainPage.ultimaActualizacionGPS
|
CallSub2(B4XPages.MainPage.cliente, "GPS_LocationChanged", Location1)
|
||||||
' If Main.logger Then Log("UltimaAct="&Main.ultimaActualizacionGPS&" MinsDif="&minsDif)
|
' CallSub2(gestion, "GPS_LocationChanged", Location1)
|
||||||
If Location1.Accuracy < 100 And minsDif > 240 Then 'Si precision de 100 y 4 min transcurridos manda a web
|
If B4XPages.MainPage.cliente.IsInitialized Then
|
||||||
If B4XPages.MainPage.logger Then Log("actualizamos Ubicacion Web")
|
CallSub2(B4XPages.GetPage("Cliente"), "GPS_LocationChanged", Location1)
|
||||||
CallSubDelayed(Starter, "ENVIA_ULTIMA_GPS")
|
|
||||||
End If
|
End If
|
||||||
DateTime.TimeFormat = origFormat 'Regresamos formato de fecha original
|
' CallSub2(nuevocliente, "GPS_LocationChanged", Location1)
|
||||||
'Revisamos servicios
|
|
||||||
Subs.monitor
|
End Sub
|
||||||
|
|
||||||
|
Public Sub StartFLP2
|
||||||
|
Private logger As Boolean = True
|
||||||
|
If logger Then Log("StartFLP2 - flpStarted="&flpStarted)
|
||||||
|
Do While FLP.IsConnected = False
|
||||||
|
Sleep(500)
|
||||||
|
If logger Then Log("kll - sleeping")
|
||||||
|
Loop
|
||||||
|
dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida
|
||||||
|
FLP.RequestLocationUpdates(CreateLocationRequest2) 'Buscamos ubicacion 2 peticiones
|
||||||
|
If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta)
|
||||||
|
' If logger Then Log(actualLR.GetSmallestDisplacement)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub CreateLocationRequest2 As LocationRequest
|
||||||
|
Private logger As Boolean = True
|
||||||
|
If logger Then Log("Iniciamos CreateLocationRequest2")
|
||||||
|
Dim lr As LocationRequest
|
||||||
|
lr.Initialize
|
||||||
|
lr.SetInterval(1000) 'Intervalo deseado para actualizaciones de ubicacion
|
||||||
|
lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion
|
||||||
|
lr.setNumUpdates(2) 'Solicitamos solo 2 actualizaciones con estos parametros
|
||||||
|
lr.SetSmallestDisplacement(1) 'Solo registra cambio de ubicacion si es mayor a XX mts
|
||||||
|
lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
|
||||||
|
actualLR=lr
|
||||||
|
Return lr
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub CreateNotification (Body As String) As Notification 'ignore
|
Sub CreateNotification (Body As String) As Notification 'ignore
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ Sub Process_Globals
|
|||||||
'These variables can be accessed from all modules.
|
'These variables can be accessed from all modules.
|
||||||
|
|
||||||
'Aqui va la liga al archivo .ver en el servidor que contiene la información de la aplicacion
|
'Aqui va la liga al archivo .ver en el servidor que contiene la información de la aplicacion
|
||||||
Public lnk As String = "https://keymon.lat/movil/Guna/Guna_reparto.ver"
|
Public lnk As String = "https://keymon.net/movil/Guna/Guna_reparto.ver"
|
||||||
|
|
||||||
'/// En el servidor se necesita un archivo de texto (.ver) que tenga los siguientes
|
'/// En el servidor se necesita un archivo de texto (.ver) que tenga los siguientes
|
||||||
'/// datos separados por un tabulador
|
'/// datos separados por un tabulador
|
||||||
|
|||||||
710
B4A/barcodeGenerator.bas
Normal file
710
B4A/barcodeGenerator.bas
Normal file
@@ -0,0 +1,710 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=12.2
|
||||||
|
@EndOfDesignText@
|
||||||
|
'version 1.02
|
||||||
|
Sub Class_Globals
|
||||||
|
Private xui As XUI
|
||||||
|
Public cvs As B4XCanvas
|
||||||
|
Private xview As B4XView
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub Initialize
|
||||||
|
Dim xview As B4XView = xui.CreatePanel(Null)
|
||||||
|
xview.SetLayoutAnimated(0, 0, 0, 1050dip, 300dip)
|
||||||
|
xview.Color = xui.Color_White
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
#Region EAN13
|
||||||
|
|
||||||
|
Public Sub EAN13(codigo As String) As B4XBitmap
|
||||||
|
cvs.Initialize(xview)
|
||||||
|
cvs.ClearRect(cvs.TargetRect)
|
||||||
|
|
||||||
|
If codigo.Length=12 Then codigo = "0" & codigo
|
||||||
|
|
||||||
|
If codigo.Length=13 Then
|
||||||
|
|
||||||
|
Dim novoCodigo As String = preparaEAN13(codigo)
|
||||||
|
|
||||||
|
If novoCodigo<>"" Then
|
||||||
|
|
||||||
|
'Dim canvas As B4XCanvas
|
||||||
|
Dim alturaPainel As Int = xview.Height
|
||||||
|
Dim larguraPainel As Int = xview.Width
|
||||||
|
Dim larguraCodigo As Int = xview.Width - 100dip
|
||||||
|
|
||||||
|
'Calcula as dimensões dos elementos do código de barras'
|
||||||
|
Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código'
|
||||||
|
Dim larguraBarra As Int = larguraCodigo / 95 'largura de cada barra'
|
||||||
|
Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras'
|
||||||
|
|
||||||
|
'Desenha as barras e os números do código de barras'
|
||||||
|
Dim rect As B4XRect
|
||||||
|
rect.Initialize(0, 0, larguraPainel, alturaPainel)
|
||||||
|
|
||||||
|
cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco'
|
||||||
|
|
||||||
|
Dim larguraAtual As Int = 50dip
|
||||||
|
|
||||||
|
For i=0 To novoCodigo.Length-1
|
||||||
|
Dim cor As Int = xui.Color_Black
|
||||||
|
If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White
|
||||||
|
If novoCodigo.CharAt(i) = "2" Then
|
||||||
|
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra)
|
||||||
|
Else
|
||||||
|
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra)
|
||||||
|
End If
|
||||||
|
|
||||||
|
larguraAtual = larguraAtual + larguraBarra
|
||||||
|
Next
|
||||||
|
|
||||||
|
'Desenha o número abaixo do código de barras'
|
||||||
|
Dim fonte As B4XFont = xui.CreateFontAwesome(63)
|
||||||
|
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
sb.Initialize
|
||||||
|
|
||||||
|
For i=1 To codigo.Length
|
||||||
|
Dim codigoCaracter As String = codigo.CharAt(i-1)
|
||||||
|
sb.Append(codigoCaracter)
|
||||||
|
|
||||||
|
If i=1 Then
|
||||||
|
sb.Append(" ")
|
||||||
|
Else If i=7 Then
|
||||||
|
sb.Append(" ")
|
||||||
|
Else If i=13 Then
|
||||||
|
'nao adiciona nada
|
||||||
|
Else
|
||||||
|
sb.Append(" ")
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
cvs.DrawText(sb.ToString, 1dip, alturaBarra+10dip, fonte, xui.Color_Black, "LEFT")
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
cvs.Invalidate
|
||||||
|
Dim res As B4XBitmap = cvs.CreateBitmap
|
||||||
|
cvs.Release
|
||||||
|
Return res
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub preparaEAN13(codigo As String) As String
|
||||||
|
|
||||||
|
Dim primeiroDigito As String = codigo.SubString2(0,1)
|
||||||
|
Dim primeiroGrupo As String = codigo.SubString2(1,7)
|
||||||
|
Dim segundoGrupo As String = codigo.SubString2(7,13)
|
||||||
|
|
||||||
|
Dim sequenciaNovo As String = ""
|
||||||
|
Dim codigoNovo As String = "-" & primeiroGrupo & "=" & segundoGrupo & "-"
|
||||||
|
|
||||||
|
If primeiroDigito="0" Then sequenciaNovo="-LLLLLL=RRRRRR-"
|
||||||
|
If primeiroDigito="1" Then sequenciaNovo="-LLGLGG=RRRRRR-"
|
||||||
|
If primeiroDigito="2" Then sequenciaNovo="-LLGGLG=RRRRRR-"
|
||||||
|
If primeiroDigito="3" Then sequenciaNovo="-LLGGGL=RRRRRR-"
|
||||||
|
If primeiroDigito="4" Then sequenciaNovo="-LGLLGG=RRRRRR-"
|
||||||
|
If primeiroDigito="5" Then sequenciaNovo="-LGGLLG=RRRRRR-"
|
||||||
|
If primeiroDigito="6" Then sequenciaNovo="-LGGGLL=RRRRRR-"
|
||||||
|
If primeiroDigito="7" Then sequenciaNovo="-LGLGLG=RRRRRR-"
|
||||||
|
If primeiroDigito="8" Then sequenciaNovo="-LGLGGL=RRRRRR-"
|
||||||
|
If primeiroDigito="9" Then sequenciaNovo="-LGGLGL=RRRRRR-"
|
||||||
|
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
sb.Initialize
|
||||||
|
|
||||||
|
For i=0 To codigoNovo.Length-1
|
||||||
|
Dim digitoGrupo As String = codigoNovo.CharAt(i)
|
||||||
|
Dim sequenciaGrupo As String = sequenciaNovo.CharAt(i)
|
||||||
|
|
||||||
|
If sequenciaGrupo="L" Then
|
||||||
|
If digitoGrupo="0" Then sb.Append("0001101")
|
||||||
|
If digitoGrupo="1" Then sb.Append("0011001")
|
||||||
|
If digitoGrupo="2" Then sb.Append("0010011")
|
||||||
|
If digitoGrupo="3" Then sb.Append("0111101")
|
||||||
|
If digitoGrupo="4" Then sb.Append("0100011")
|
||||||
|
If digitoGrupo="5" Then sb.Append("0110001")
|
||||||
|
If digitoGrupo="6" Then sb.Append("0101111")
|
||||||
|
If digitoGrupo="7" Then sb.Append("0111011")
|
||||||
|
If digitoGrupo="8" Then sb.Append("0110111")
|
||||||
|
If digitoGrupo="9" Then sb.Append("0001011")
|
||||||
|
else If sequenciaGrupo="G" Then
|
||||||
|
If digitoGrupo="0" Then sb.Append("0100111")
|
||||||
|
If digitoGrupo="1" Then sb.Append("0110011")
|
||||||
|
If digitoGrupo="2" Then sb.Append("0011011")
|
||||||
|
If digitoGrupo="3" Then sb.Append("0100001")
|
||||||
|
If digitoGrupo="4" Then sb.Append("0011101")
|
||||||
|
If digitoGrupo="5" Then sb.Append("0111001")
|
||||||
|
If digitoGrupo="6" Then sb.Append("0000101")
|
||||||
|
If digitoGrupo="7" Then sb.Append("0010001")
|
||||||
|
If digitoGrupo="8" Then sb.Append("0001001")
|
||||||
|
If digitoGrupo="9" Then sb.Append("0010111")
|
||||||
|
Else If sequenciaGrupo="R" Then
|
||||||
|
If digitoGrupo="0" Then sb.Append("1110010")
|
||||||
|
If digitoGrupo="1" Then sb.Append("1100110")
|
||||||
|
If digitoGrupo="2" Then sb.Append("1101100")
|
||||||
|
If digitoGrupo="3" Then sb.Append("1000010")
|
||||||
|
If digitoGrupo="4" Then sb.Append("1011100")
|
||||||
|
If digitoGrupo="5" Then sb.Append("1001110")
|
||||||
|
If digitoGrupo="6" Then sb.Append("1010000")
|
||||||
|
If digitoGrupo="7" Then sb.Append("1000100")
|
||||||
|
If digitoGrupo="8" Then sb.Append("1001000")
|
||||||
|
If digitoGrupo="9" Then sb.Append("1110100")
|
||||||
|
Else If sequenciaGrupo="-" Then
|
||||||
|
sb.Append("202")
|
||||||
|
Else If sequenciaGrupo="=" Then
|
||||||
|
sb.Append("02020")
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return sb.ToString
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
|
||||||
|
#Region UPCA
|
||||||
|
|
||||||
|
Public Sub UPCA(codigo As String) As B4XBitmap
|
||||||
|
cvs.Initialize(xview)
|
||||||
|
cvs.ClearRect(cvs.TargetRect)
|
||||||
|
|
||||||
|
If codigo.Length=11 Then codigo = "0" & codigo
|
||||||
|
|
||||||
|
If codigo.Length=12 Then
|
||||||
|
|
||||||
|
Dim novoCodigo As String = preparaUPCA(codigo)
|
||||||
|
|
||||||
|
If novoCodigo<>"" Then
|
||||||
|
|
||||||
|
'Dim canvas As B4XCanvas
|
||||||
|
Dim alturaPainel As Int = xview.Height
|
||||||
|
Dim larguraPainel As Int = xview.Width
|
||||||
|
Dim larguraCodigo As Int = xview.Width - 100dip
|
||||||
|
|
||||||
|
'Calcula as dimensões dos elementos do código de barras'
|
||||||
|
Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código'
|
||||||
|
Dim larguraBarra As Int = larguraCodigo / 95 'largura de cada barra'
|
||||||
|
Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras'
|
||||||
|
|
||||||
|
'Desenha as barras e os números do código de barras'
|
||||||
|
Dim rect As B4XRect
|
||||||
|
rect.Initialize(0, 0, larguraPainel, alturaPainel)
|
||||||
|
|
||||||
|
cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco'
|
||||||
|
|
||||||
|
Dim larguraAtual As Int = 50dip
|
||||||
|
|
||||||
|
For i=0 To novoCodigo.Length-1
|
||||||
|
Dim cor As Int = xui.Color_Black
|
||||||
|
If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White
|
||||||
|
If novoCodigo.CharAt(i) = "2" Then
|
||||||
|
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra)
|
||||||
|
Else
|
||||||
|
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra)
|
||||||
|
End If
|
||||||
|
|
||||||
|
larguraAtual = larguraAtual + larguraBarra
|
||||||
|
Next
|
||||||
|
|
||||||
|
'Desenha o número abaixo do código de barras'
|
||||||
|
Dim fonte As B4XFont = xui.CreateFontAwesome(63)
|
||||||
|
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
sb.Initialize
|
||||||
|
|
||||||
|
For i=1 To codigo.Length
|
||||||
|
Dim codigoCaracter As String = codigo.CharAt(i-1)
|
||||||
|
sb.Append(codigoCaracter)
|
||||||
|
|
||||||
|
If i=1 Then
|
||||||
|
sb.Append(" ")
|
||||||
|
Else If i=6 Then
|
||||||
|
sb.Append(" ")
|
||||||
|
Else If i=11 Then
|
||||||
|
sb.Append(" ")
|
||||||
|
Else If i=12 Then
|
||||||
|
'nao adiciona nada
|
||||||
|
Else
|
||||||
|
sb.Append(" ")
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
cvs.DrawText(sb.ToString, 1dip, alturaBarra+10dip, fonte, xui.Color_Black, "LEFT")
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
cvs.Invalidate
|
||||||
|
Dim res As B4XBitmap = cvs.CreateBitmap
|
||||||
|
cvs.Release
|
||||||
|
Return res
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub preparaUPCA(codigo As String) As String
|
||||||
|
|
||||||
|
Dim primeiroGrupo As String = codigo.SubString2(0,6)
|
||||||
|
Dim segundoGrupo As String = codigo.SubString2(6,12)
|
||||||
|
|
||||||
|
Dim sequenciaNovo As String = "-JLLLLL=RRRRRS-"
|
||||||
|
Dim codigoNovo As String = "-" & primeiroGrupo & "=" & segundoGrupo & "-"
|
||||||
|
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
sb.Initialize
|
||||||
|
|
||||||
|
For i=0 To codigoNovo.Length-1
|
||||||
|
Dim digitoGrupo As String = codigoNovo.CharAt(i)
|
||||||
|
Dim sequenciaGrupo As String = sequenciaNovo.CharAt(i)
|
||||||
|
|
||||||
|
If sequenciaGrupo="L" Then
|
||||||
|
If digitoGrupo="0" Then sb.Append("0001101")
|
||||||
|
If digitoGrupo="1" Then sb.Append("0011001")
|
||||||
|
If digitoGrupo="2" Then sb.Append("0010011")
|
||||||
|
If digitoGrupo="3" Then sb.Append("0111101")
|
||||||
|
If digitoGrupo="4" Then sb.Append("0100011")
|
||||||
|
If digitoGrupo="5" Then sb.Append("0110001")
|
||||||
|
If digitoGrupo="6" Then sb.Append("0101111")
|
||||||
|
If digitoGrupo="7" Then sb.Append("0111011")
|
||||||
|
If digitoGrupo="8" Then sb.Append("0110111")
|
||||||
|
If digitoGrupo="9" Then sb.Append("0001011")
|
||||||
|
Else If sequenciaGrupo="J" Then
|
||||||
|
If digitoGrupo="0" Then sb.Append("0001101".Replace("1","2"))
|
||||||
|
If digitoGrupo="1" Then sb.Append("0011001".Replace("1","2"))
|
||||||
|
If digitoGrupo="2" Then sb.Append("0010011".Replace("1","2"))
|
||||||
|
If digitoGrupo="3" Then sb.Append("0111101".Replace("1","2"))
|
||||||
|
If digitoGrupo="4" Then sb.Append("0100011".Replace("1","2"))
|
||||||
|
If digitoGrupo="5" Then sb.Append("0110001".Replace("1","2"))
|
||||||
|
If digitoGrupo="6" Then sb.Append("0101111".Replace("1","2"))
|
||||||
|
If digitoGrupo="7" Then sb.Append("0111011".Replace("1","2"))
|
||||||
|
If digitoGrupo="8" Then sb.Append("0110111".Replace("1","2"))
|
||||||
|
If digitoGrupo="9" Then sb.Append("0001011".Replace("1","2"))
|
||||||
|
Else If sequenciaGrupo="R" Then
|
||||||
|
If digitoGrupo="0" Then sb.Append("1110010")
|
||||||
|
If digitoGrupo="1" Then sb.Append("1100110")
|
||||||
|
If digitoGrupo="2" Then sb.Append("1101100")
|
||||||
|
If digitoGrupo="3" Then sb.Append("1000010")
|
||||||
|
If digitoGrupo="4" Then sb.Append("1011100")
|
||||||
|
If digitoGrupo="5" Then sb.Append("1001110")
|
||||||
|
If digitoGrupo="6" Then sb.Append("1010000")
|
||||||
|
If digitoGrupo="7" Then sb.Append("1000100")
|
||||||
|
If digitoGrupo="8" Then sb.Append("1001000")
|
||||||
|
If digitoGrupo="9" Then sb.Append("1110100")
|
||||||
|
Else If sequenciaGrupo="S" Then
|
||||||
|
If digitoGrupo="0" Then sb.Append("1110010".Replace("1","2"))
|
||||||
|
If digitoGrupo="1" Then sb.Append("1100110".Replace("1","2"))
|
||||||
|
If digitoGrupo="2" Then sb.Append("1101100".Replace("1","2"))
|
||||||
|
If digitoGrupo="3" Then sb.Append("1000010".Replace("1","2"))
|
||||||
|
If digitoGrupo="4" Then sb.Append("1011100".Replace("1","2"))
|
||||||
|
If digitoGrupo="5" Then sb.Append("1001110".Replace("1","2"))
|
||||||
|
If digitoGrupo="6" Then sb.Append("1010000".Replace("1","2"))
|
||||||
|
If digitoGrupo="7" Then sb.Append("1000100".Replace("1","2"))
|
||||||
|
If digitoGrupo="8" Then sb.Append("1001000".Replace("1","2"))
|
||||||
|
If digitoGrupo="9" Then sb.Append("1110100".Replace("1","2"))
|
||||||
|
Else If sequenciaGrupo="-" Then
|
||||||
|
sb.Append("202")
|
||||||
|
Else If sequenciaGrupo="=" Then
|
||||||
|
sb.Append("02020")
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Return sb.ToString
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
|
||||||
|
#Region CODE128
|
||||||
|
|
||||||
|
Public Sub CODE128(codigo As String) As B4XBitmap
|
||||||
|
cvs.Initialize(xview)
|
||||||
|
cvs.ClearRect(cvs.TargetRect)
|
||||||
|
|
||||||
|
Dim novoCodigo As String = preparaCODE128(codigo)
|
||||||
|
|
||||||
|
If novoCodigo<>"" Then
|
||||||
|
|
||||||
|
'Dim canvas As B4XCanvas
|
||||||
|
Dim alturaPainel As Int = xview.Height
|
||||||
|
Dim larguraPainel As Int = xview.Width
|
||||||
|
Dim larguraCodigo As Int = xview.Width - 100dip
|
||||||
|
|
||||||
|
'Calcula as dimensões dos elementos do código de barras'
|
||||||
|
Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código'
|
||||||
|
Dim larguraBarra As Int = larguraCodigo / ((codigo.Length*11)+11+11+13) 'largura de cada barra'
|
||||||
|
Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras'
|
||||||
|
|
||||||
|
|
||||||
|
'Desenha as barras e os números do código de barras'
|
||||||
|
Dim rect As B4XRect
|
||||||
|
rect.Initialize(0, 0, larguraPainel, alturaPainel)
|
||||||
|
|
||||||
|
cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco'
|
||||||
|
|
||||||
|
Dim larguraAtual As Int = 50dip
|
||||||
|
|
||||||
|
For i=0 To novoCodigo.Length-1
|
||||||
|
Dim cor As Int = xui.Color_Black
|
||||||
|
If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White
|
||||||
|
If novoCodigo.CharAt(i) = "2" Then
|
||||||
|
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra)
|
||||||
|
Else If novoCodigo.CharAt(i) = "3" Then
|
||||||
|
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, xui.Color_Blue, larguraBarra)
|
||||||
|
Else
|
||||||
|
cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra)
|
||||||
|
End If
|
||||||
|
|
||||||
|
larguraAtual = larguraAtual + larguraBarra
|
||||||
|
Next
|
||||||
|
|
||||||
|
'Desenha o número abaixo do código de barras'
|
||||||
|
Dim fonte As B4XFont = xui.CreateFontAwesome(63)
|
||||||
|
|
||||||
|
cvs.DrawText(codigo, cvs.TargetRect.CenterX, alturaBarra+10dip, fonte, xui.Color_Black, "CENTER")
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
cvs.Invalidate
|
||||||
|
Dim res As B4XBitmap = cvs.CreateBitmap
|
||||||
|
cvs.Release
|
||||||
|
Return res
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub preparaCODE128(codigo As String) As String
|
||||||
|
|
||||||
|
Dim codigoNovo As String = codigo
|
||||||
|
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
sb.Initialize
|
||||||
|
|
||||||
|
sb.Append("11010010000") ' iniciar codigo b
|
||||||
|
|
||||||
|
Dim somatoria As Int = 104 ' valor do inicio
|
||||||
|
|
||||||
|
For i=0 To codigoNovo.Length-1
|
||||||
|
Dim digitoGrupo As String = codigoNovo.CharAt(i)
|
||||||
|
|
||||||
|
Dim multiplicador As Int = (i+1)
|
||||||
|
Dim valorDigito As Int = valorDigitoCODE128(digitoGrupo)
|
||||||
|
Dim valorDigitoMultiplicado As Int = (multiplicador*valorDigito)
|
||||||
|
somatoria = (somatoria + valorDigitoMultiplicado)
|
||||||
|
|
||||||
|
sb.Append(sequenciaDigitoCODE128(digitoGrupo))
|
||||||
|
Next
|
||||||
|
|
||||||
|
Dim checksum As Int = (somatoria Mod 103)
|
||||||
|
Dim checksumDigito As String = codigoDigitoCODE128(checksum)
|
||||||
|
|
||||||
|
sb.Append(sequenciaDigitoCODE128(checksumDigito))
|
||||||
|
|
||||||
|
sb.Append("1100011101011") 'fim do codigo
|
||||||
|
|
||||||
|
Return sb.ToString
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub sequenciaDigitoCODE128(digitoGrupo As String) As String
|
||||||
|
If digitoGrupo=" " Then Return "11011001100"
|
||||||
|
If digitoGrupo="!" Then Return "11001101100"
|
||||||
|
If digitoGrupo=$"""$ Then Return "11001100110"
|
||||||
|
If digitoGrupo="#" Then Return "10010011000"
|
||||||
|
If digitoGrupo="$" Then Return "10010001100"
|
||||||
|
If digitoGrupo="%" Then Return "10001001100"
|
||||||
|
If digitoGrupo="&" Then Return "10011001000"
|
||||||
|
If digitoGrupo="'" Then Return "10011000100"
|
||||||
|
If digitoGrupo="(" Then Return "10001100100"
|
||||||
|
If digitoGrupo=")" Then Return "11001001000"
|
||||||
|
If digitoGrupo="*" Then Return "11001000100"
|
||||||
|
If digitoGrupo="+" Then Return "11000100100"
|
||||||
|
If digitoGrupo="," Then Return "10110011100"
|
||||||
|
If digitoGrupo="-" Then Return "10011011100"
|
||||||
|
If digitoGrupo="." Then Return "10011001110"
|
||||||
|
If digitoGrupo="/" Then Return "10111001100"
|
||||||
|
If digitoGrupo="0" Then Return "10011101100"
|
||||||
|
If digitoGrupo="1" Then Return "10011100110"
|
||||||
|
If digitoGrupo="2" Then Return "11001110010"
|
||||||
|
If digitoGrupo="3" Then Return "11001011100"
|
||||||
|
If digitoGrupo="4" Then Return "11001001110"
|
||||||
|
If digitoGrupo="5" Then Return "11011100100"
|
||||||
|
If digitoGrupo="6" Then Return "11001110100"
|
||||||
|
If digitoGrupo="7" Then Return "11101101110"
|
||||||
|
If digitoGrupo="8" Then Return "11101001100"
|
||||||
|
If digitoGrupo="9" Then Return "11100101100"
|
||||||
|
If digitoGrupo=":" Then Return "11100100110"
|
||||||
|
If digitoGrupo=";" Then Return "11101100100"
|
||||||
|
If digitoGrupo="<" Then Return "11100110100"
|
||||||
|
If digitoGrupo="=" Then Return "11100110010"
|
||||||
|
If digitoGrupo=">" Then Return "11011011000"
|
||||||
|
If digitoGrupo="?" Then Return "11011000110"
|
||||||
|
If digitoGrupo="@" Then Return "11000110110"
|
||||||
|
If digitoGrupo="A" Then Return "10100011000"
|
||||||
|
If digitoGrupo="B" Then Return "10001011000"
|
||||||
|
If digitoGrupo="C" Then Return "10001000110"
|
||||||
|
If digitoGrupo="D" Then Return "10110001000"
|
||||||
|
If digitoGrupo="E" Then Return "10001101000"
|
||||||
|
If digitoGrupo="F" Then Return "10001100010"
|
||||||
|
If digitoGrupo="G" Then Return "11010001000"
|
||||||
|
If digitoGrupo="H" Then Return "11000101000"
|
||||||
|
If digitoGrupo="I" Then Return "11000100010"
|
||||||
|
If digitoGrupo="J" Then Return "10110111000"
|
||||||
|
If digitoGrupo="K" Then Return "10110001110"
|
||||||
|
If digitoGrupo="L" Then Return "10001101110"
|
||||||
|
If digitoGrupo="M" Then Return "10111011000"
|
||||||
|
If digitoGrupo="N" Then Return "10111000110"
|
||||||
|
If digitoGrupo="O" Then Return "10001110110"
|
||||||
|
If digitoGrupo="P" Then Return "11101110110"
|
||||||
|
If digitoGrupo="Q" Then Return "11010001110"
|
||||||
|
If digitoGrupo="R" Then Return "11000101110"
|
||||||
|
If digitoGrupo="S" Then Return "11011101000"
|
||||||
|
If digitoGrupo="T" Then Return "11011100010"
|
||||||
|
If digitoGrupo="U" Then Return "11011101110"
|
||||||
|
If digitoGrupo="V" Then Return "11101011000"
|
||||||
|
If digitoGrupo="W" Then Return "11101000110"
|
||||||
|
If digitoGrupo="X" Then Return "11100010110"
|
||||||
|
If digitoGrupo="Y" Then Return "11101101000"
|
||||||
|
If digitoGrupo="Z" Then Return "11101100010"
|
||||||
|
If digitoGrupo="[" Then Return "11100011010"
|
||||||
|
If digitoGrupo="\" Then Return "11101111010"
|
||||||
|
If digitoGrupo="]" Then Return "11001000010"
|
||||||
|
If digitoGrupo="^" Then Return "11110001010"
|
||||||
|
If digitoGrupo="_" Then Return "10100110000"
|
||||||
|
If digitoGrupo="`" Then Return "10100001100"
|
||||||
|
If digitoGrupo="a" Then Return "10010110000"
|
||||||
|
If digitoGrupo="b" Then Return "10010000110"
|
||||||
|
If digitoGrupo="c" Then Return "10000101100"
|
||||||
|
If digitoGrupo="d" Then Return "10000100110"
|
||||||
|
If digitoGrupo="e" Then Return "10110010000"
|
||||||
|
If digitoGrupo="f" Then Return "10110000100"
|
||||||
|
If digitoGrupo="g" Then Return "10011010000"
|
||||||
|
If digitoGrupo="h" Then Return "10011000010"
|
||||||
|
If digitoGrupo="i" Then Return "10000110100"
|
||||||
|
If digitoGrupo="j" Then Return "10000110010"
|
||||||
|
If digitoGrupo="k" Then Return "11000010010"
|
||||||
|
If digitoGrupo="l" Then Return "11001010000"
|
||||||
|
If digitoGrupo="m" Then Return "11110111010"
|
||||||
|
If digitoGrupo="n" Then Return "11000010100"
|
||||||
|
If digitoGrupo="o" Then Return "10001111010"
|
||||||
|
If digitoGrupo="p" Then Return "10100111100"
|
||||||
|
If digitoGrupo="q" Then Return "10010111100"
|
||||||
|
If digitoGrupo="r" Then Return "10010011110"
|
||||||
|
If digitoGrupo="s" Then Return "10111100100"
|
||||||
|
If digitoGrupo="t" Then Return "10011110100"
|
||||||
|
If digitoGrupo="u" Then Return "10011110010"
|
||||||
|
If digitoGrupo="v" Then Return "11110100100"
|
||||||
|
If digitoGrupo="w" Then Return "11110010100"
|
||||||
|
If digitoGrupo="x" Then Return "11110010010"
|
||||||
|
If digitoGrupo="y" Then Return "11011011110"
|
||||||
|
If digitoGrupo="z" Then Return "11011110110"
|
||||||
|
If digitoGrupo="{" Then Return "11110110110"
|
||||||
|
If digitoGrupo="|" Then Return "10101111000"
|
||||||
|
If digitoGrupo="}" Then Return "10100011110"
|
||||||
|
If digitoGrupo="~" Then Return "10001011110"
|
||||||
|
|
||||||
|
Return ""
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub valorDigitoCODE128(digitoGrupo As String) As Int
|
||||||
|
|
||||||
|
If digitoGrupo=" " Then Return 0
|
||||||
|
If digitoGrupo="!" Then Return 1
|
||||||
|
If digitoGrupo=$"""$ Then Return 2
|
||||||
|
If digitoGrupo="#" Then Return 3
|
||||||
|
If digitoGrupo="$" Then Return 4
|
||||||
|
If digitoGrupo="%" Then Return 5
|
||||||
|
If digitoGrupo="&" Then Return 6
|
||||||
|
If digitoGrupo="'" Then Return 7
|
||||||
|
If digitoGrupo="(" Then Return 8
|
||||||
|
If digitoGrupo=")" Then Return 9
|
||||||
|
If digitoGrupo="*" Then Return 10
|
||||||
|
If digitoGrupo="+" Then Return 11
|
||||||
|
If digitoGrupo="," Then Return 12
|
||||||
|
If digitoGrupo="-" Then Return 13
|
||||||
|
If digitoGrupo="." Then Return 14
|
||||||
|
If digitoGrupo="/" Then Return 15
|
||||||
|
If digitoGrupo="0" Then Return 16
|
||||||
|
If digitoGrupo="1" Then Return 17
|
||||||
|
If digitoGrupo="2" Then Return 18
|
||||||
|
If digitoGrupo="3" Then Return 19
|
||||||
|
If digitoGrupo="4" Then Return 20
|
||||||
|
If digitoGrupo="5" Then Return 21
|
||||||
|
If digitoGrupo="6" Then Return 22
|
||||||
|
If digitoGrupo="7" Then Return 23
|
||||||
|
If digitoGrupo="8" Then Return 24
|
||||||
|
If digitoGrupo="9" Then Return 25
|
||||||
|
If digitoGrupo=":" Then Return 26
|
||||||
|
If digitoGrupo=";" Then Return 27
|
||||||
|
If digitoGrupo="<" Then Return 28
|
||||||
|
If digitoGrupo="=" Then Return 29
|
||||||
|
If digitoGrupo=">" Then Return 30
|
||||||
|
If digitoGrupo="?" Then Return 31
|
||||||
|
If digitoGrupo="@" Then Return 32
|
||||||
|
If digitoGrupo="A" Then Return 33
|
||||||
|
If digitoGrupo="B" Then Return 34
|
||||||
|
If digitoGrupo="C" Then Return 35
|
||||||
|
If digitoGrupo="D" Then Return 36
|
||||||
|
If digitoGrupo="E" Then Return 37
|
||||||
|
If digitoGrupo="F" Then Return 38
|
||||||
|
If digitoGrupo="G" Then Return 39
|
||||||
|
If digitoGrupo="H" Then Return 40
|
||||||
|
If digitoGrupo="I" Then Return 41
|
||||||
|
If digitoGrupo="J" Then Return 42
|
||||||
|
If digitoGrupo="K" Then Return 43
|
||||||
|
If digitoGrupo="L" Then Return 44
|
||||||
|
If digitoGrupo="M" Then Return 45
|
||||||
|
If digitoGrupo="N" Then Return 46
|
||||||
|
If digitoGrupo="O" Then Return 47
|
||||||
|
If digitoGrupo="P" Then Return 48
|
||||||
|
If digitoGrupo="Q" Then Return 49
|
||||||
|
If digitoGrupo="R" Then Return 50
|
||||||
|
If digitoGrupo="S" Then Return 51
|
||||||
|
If digitoGrupo="T" Then Return 52
|
||||||
|
If digitoGrupo="U" Then Return 53
|
||||||
|
If digitoGrupo="V" Then Return 54
|
||||||
|
If digitoGrupo="W" Then Return 55
|
||||||
|
If digitoGrupo="X" Then Return 56
|
||||||
|
If digitoGrupo="Y" Then Return 57
|
||||||
|
If digitoGrupo="Z" Then Return 58
|
||||||
|
If digitoGrupo="[" Then Return 59
|
||||||
|
If digitoGrupo="\" Then Return 60
|
||||||
|
If digitoGrupo="]" Then Return 61
|
||||||
|
If digitoGrupo="^" Then Return 62
|
||||||
|
If digitoGrupo="_" Then Return 63
|
||||||
|
If digitoGrupo="`" Then Return 64
|
||||||
|
If digitoGrupo="a" Then Return 65
|
||||||
|
If digitoGrupo="b" Then Return 66
|
||||||
|
If digitoGrupo="c" Then Return 67
|
||||||
|
If digitoGrupo="d" Then Return 68
|
||||||
|
If digitoGrupo="e" Then Return 69
|
||||||
|
If digitoGrupo="f" Then Return 70
|
||||||
|
If digitoGrupo="g" Then Return 71
|
||||||
|
If digitoGrupo="h" Then Return 72
|
||||||
|
If digitoGrupo="i" Then Return 73
|
||||||
|
If digitoGrupo="j" Then Return 74
|
||||||
|
If digitoGrupo="k" Then Return 75
|
||||||
|
If digitoGrupo="l" Then Return 76
|
||||||
|
If digitoGrupo="m" Then Return 77
|
||||||
|
If digitoGrupo="n" Then Return 78
|
||||||
|
If digitoGrupo="o" Then Return 79
|
||||||
|
If digitoGrupo="p" Then Return 80
|
||||||
|
If digitoGrupo="q" Then Return 81
|
||||||
|
If digitoGrupo="r" Then Return 82
|
||||||
|
If digitoGrupo="s" Then Return 83
|
||||||
|
If digitoGrupo="t" Then Return 84
|
||||||
|
If digitoGrupo="u" Then Return 85
|
||||||
|
If digitoGrupo="v" Then Return 86
|
||||||
|
If digitoGrupo="w" Then Return 87
|
||||||
|
If digitoGrupo="x" Then Return 88
|
||||||
|
If digitoGrupo="y" Then Return 89
|
||||||
|
If digitoGrupo="z" Then Return 90
|
||||||
|
If digitoGrupo="{" Then Return 91
|
||||||
|
If digitoGrupo="|" Then Return 92
|
||||||
|
If digitoGrupo="}" Then Return 93
|
||||||
|
If digitoGrupo="~" Then Return 94
|
||||||
|
|
||||||
|
Return 0
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub codigoDigitoCODE128(digitoGrupo As Int) As String
|
||||||
|
|
||||||
|
If digitoGrupo=0 Then Return " "
|
||||||
|
If digitoGrupo=1 Then Return "!"
|
||||||
|
If digitoGrupo=2 Then Return $"""$
|
||||||
|
If digitoGrupo=3 Then Return "#"
|
||||||
|
If digitoGrupo=4 Then Return "$"
|
||||||
|
If digitoGrupo=5 Then Return "%"
|
||||||
|
If digitoGrupo=6 Then Return "&"
|
||||||
|
If digitoGrupo=7 Then Return "'"
|
||||||
|
If digitoGrupo=8 Then Return "("
|
||||||
|
If digitoGrupo=9 Then Return ")"
|
||||||
|
If digitoGrupo=10 Then Return "*"
|
||||||
|
If digitoGrupo=11 Then Return "+"
|
||||||
|
If digitoGrupo=12 Then Return ","
|
||||||
|
If digitoGrupo=13 Then Return "-"
|
||||||
|
If digitoGrupo=14 Then Return "."
|
||||||
|
If digitoGrupo=15 Then Return "/"
|
||||||
|
If digitoGrupo=16 Then Return "0"
|
||||||
|
If digitoGrupo=17 Then Return "1"
|
||||||
|
If digitoGrupo=18 Then Return "2"
|
||||||
|
If digitoGrupo=19 Then Return "3"
|
||||||
|
If digitoGrupo=20 Then Return "4"
|
||||||
|
If digitoGrupo=21 Then Return "5"
|
||||||
|
If digitoGrupo=22 Then Return "6"
|
||||||
|
If digitoGrupo=23 Then Return "7"
|
||||||
|
If digitoGrupo=24 Then Return "8"
|
||||||
|
If digitoGrupo=25 Then Return "9"
|
||||||
|
If digitoGrupo=26 Then Return ":"
|
||||||
|
If digitoGrupo=27 Then Return ";"
|
||||||
|
If digitoGrupo=28 Then Return "<"
|
||||||
|
If digitoGrupo=29 Then Return "="
|
||||||
|
If digitoGrupo=30 Then Return ">"
|
||||||
|
If digitoGrupo=31 Then Return "?"
|
||||||
|
If digitoGrupo=32 Then Return "@"
|
||||||
|
If digitoGrupo=33 Then Return "A"
|
||||||
|
If digitoGrupo=34 Then Return "B"
|
||||||
|
If digitoGrupo=35 Then Return "C"
|
||||||
|
If digitoGrupo=36 Then Return "D"
|
||||||
|
If digitoGrupo=37 Then Return "E"
|
||||||
|
If digitoGrupo=38 Then Return "F"
|
||||||
|
If digitoGrupo=39 Then Return "G"
|
||||||
|
If digitoGrupo=40 Then Return "H"
|
||||||
|
If digitoGrupo=41 Then Return "I"
|
||||||
|
If digitoGrupo=42 Then Return "J"
|
||||||
|
If digitoGrupo=43 Then Return "K"
|
||||||
|
If digitoGrupo=44 Then Return "L"
|
||||||
|
If digitoGrupo=45 Then Return "M"
|
||||||
|
If digitoGrupo=46 Then Return "N"
|
||||||
|
If digitoGrupo=47 Then Return "O"
|
||||||
|
If digitoGrupo=48 Then Return "P"
|
||||||
|
If digitoGrupo=49 Then Return "Q"
|
||||||
|
If digitoGrupo=50 Then Return "R"
|
||||||
|
If digitoGrupo=51 Then Return "S"
|
||||||
|
If digitoGrupo=52 Then Return "T"
|
||||||
|
If digitoGrupo=53 Then Return "U"
|
||||||
|
If digitoGrupo=54 Then Return "V"
|
||||||
|
If digitoGrupo=55 Then Return "W"
|
||||||
|
If digitoGrupo=56 Then Return "X"
|
||||||
|
If digitoGrupo=57 Then Return "Y"
|
||||||
|
If digitoGrupo=58 Then Return "Z"
|
||||||
|
If digitoGrupo=59 Then Return "["
|
||||||
|
If digitoGrupo=60 Then Return "\"
|
||||||
|
If digitoGrupo=61 Then Return "]"
|
||||||
|
If digitoGrupo=62 Then Return "^"
|
||||||
|
If digitoGrupo=63 Then Return "_"
|
||||||
|
If digitoGrupo=64 Then Return "`"
|
||||||
|
If digitoGrupo=65 Then Return "a"
|
||||||
|
If digitoGrupo=66 Then Return "b"
|
||||||
|
If digitoGrupo=67 Then Return "c"
|
||||||
|
If digitoGrupo=68 Then Return "d"
|
||||||
|
If digitoGrupo=69 Then Return "e"
|
||||||
|
If digitoGrupo=70 Then Return "f"
|
||||||
|
If digitoGrupo=71 Then Return "g"
|
||||||
|
If digitoGrupo=72 Then Return "h"
|
||||||
|
If digitoGrupo=73 Then Return "i"
|
||||||
|
If digitoGrupo=74 Then Return "j"
|
||||||
|
If digitoGrupo=75 Then Return "k"
|
||||||
|
If digitoGrupo=76 Then Return "l"
|
||||||
|
If digitoGrupo=77 Then Return "m"
|
||||||
|
If digitoGrupo=78 Then Return "n"
|
||||||
|
If digitoGrupo=79 Then Return "o"
|
||||||
|
If digitoGrupo=80 Then Return "p"
|
||||||
|
If digitoGrupo=81 Then Return "q"
|
||||||
|
If digitoGrupo=82 Then Return "r"
|
||||||
|
If digitoGrupo=83 Then Return "s"
|
||||||
|
If digitoGrupo=84 Then Return "t"
|
||||||
|
If digitoGrupo=85 Then Return "u"
|
||||||
|
If digitoGrupo=86 Then Return "v"
|
||||||
|
If digitoGrupo=87 Then Return "w"
|
||||||
|
If digitoGrupo=88 Then Return "x"
|
||||||
|
If digitoGrupo=89 Then Return "y"
|
||||||
|
If digitoGrupo=90 Then Return "z"
|
||||||
|
If digitoGrupo=91 Then Return "{"
|
||||||
|
If digitoGrupo=92 Then Return "|"
|
||||||
|
If digitoGrupo=93 Then Return "}"
|
||||||
|
If digitoGrupo=94 Then Return "~"
|
||||||
|
|
||||||
|
Return " "
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#End Region
|
||||||
File diff suppressed because one or more lines are too long
@@ -24,6 +24,7 @@ ModuleBookmarks29=
|
|||||||
ModuleBookmarks3=
|
ModuleBookmarks3=
|
||||||
ModuleBookmarks30=
|
ModuleBookmarks30=
|
||||||
ModuleBookmarks31=
|
ModuleBookmarks31=
|
||||||
|
ModuleBookmarks32=
|
||||||
ModuleBookmarks4=
|
ModuleBookmarks4=
|
||||||
ModuleBookmarks5=
|
ModuleBookmarks5=
|
||||||
ModuleBookmarks6=
|
ModuleBookmarks6=
|
||||||
@@ -56,6 +57,7 @@ ModuleBreakpoints29=
|
|||||||
ModuleBreakpoints3=
|
ModuleBreakpoints3=
|
||||||
ModuleBreakpoints30=
|
ModuleBreakpoints30=
|
||||||
ModuleBreakpoints31=
|
ModuleBreakpoints31=
|
||||||
|
ModuleBreakpoints32=
|
||||||
ModuleBreakpoints4=
|
ModuleBreakpoints4=
|
||||||
ModuleBreakpoints5=
|
ModuleBreakpoints5=
|
||||||
ModuleBreakpoints6=
|
ModuleBreakpoints6=
|
||||||
@@ -88,12 +90,13 @@ ModuleClosedNodes29=
|
|||||||
ModuleClosedNodes3=
|
ModuleClosedNodes3=
|
||||||
ModuleClosedNodes30=
|
ModuleClosedNodes30=
|
||||||
ModuleClosedNodes31=
|
ModuleClosedNodes31=
|
||||||
|
ModuleClosedNodes32=
|
||||||
ModuleClosedNodes4=
|
ModuleClosedNodes4=
|
||||||
ModuleClosedNodes5=
|
ModuleClosedNodes5=
|
||||||
ModuleClosedNodes6=
|
ModuleClosedNodes6=
|
||||||
ModuleClosedNodes7=
|
ModuleClosedNodes7=
|
||||||
ModuleClosedNodes8=
|
ModuleClosedNodes8=
|
||||||
ModuleClosedNodes9=
|
ModuleClosedNodes9=
|
||||||
NavigationStack=C_Principal,cargaAlmacen2,2447,6,C_Principal,JobDone,1669,2,C_Principal,envioinfo,1015,0,C_Principal,cargaGeneral,1177,6,C_Principal,e_ruta_EnterPressed,1823,0,C_Principal,ListView2_ItemClick,2386,0,C_Principal,et_ruta2_TextChanged,2393,5,Diseñador Visual,principal.bal,-100,6,C_Principal,B4XPage_Appear,176,6,C_Principal,cargar_Click,1074,6,B4XMainPage,B4XPage_Created,226,0
|
NavigationStack=C_Cliente,gest_Click,1562,0,C_Cliente,B_IMP_Click,2671,2,C_Principal,B4XPage_Appear,219,2,C_Cliente,imprime_pagare,6075,1,Subs,traeRutaReparto,1045,0,C_Principal,Class_Globals,0,0,C_Principal,connecta_LongClick,3838,0,C_Principal,Subir_Click,863,0,C_Principal,JobDone,1454,0,C_Principal,envioinfo,1083,3
|
||||||
SelectedBuild=0
|
SelectedBuild=0
|
||||||
VisibleModules=2,16,4,5,6,7,9,30,29,27
|
VisibleModules=2,17,5,6,8,10,31,30,28,7
|
||||||
|
|||||||
Reference in New Issue
Block a user