diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas
index 5bed64d..8379720 100644
--- a/B4A/B4XMainPage.bas
+++ b/B4A/B4XMainPage.bas
@@ -1277,6 +1277,11 @@ Sub Class_Globals
Private p_importarBDWA As Panel
Dim intentUsado As Boolean = False
+ Private p_bypass As Panel
+ Private et_bypass As EditText
+ Private b_cancelabypass As Button
+ Private b_acepbypass As Button
+ Private b_bypass As Button
End Sub
Public Sub Initialize
@@ -1335,6 +1340,8 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Subs.agregaColumna("CAT_GUNAPROD3", "CAT_DP_CANT_MIN_VENTA", "TEXT")
Subs.agregaColumna("ABONOS","TIPO_PAGO","TEXT")
Subs.agregaColumna("ABONOS","a_numpago","TEXT")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS GEOCERCA (ACTIVA TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS BARRAS (BARRA BLOB)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ABONOS (a_usuario TEXT, a_ruta TEXT, a_cliente TEXT, a_abono TEXT, a_fecha TEXT, a_enviado TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PAGARES (PA_ALMACEN TEXT, PA_RUTA_REP TEXT, PA_RUTAPREV TEXT, PA_FECHA_PREV TEXT, PA_CAPTURA TEXT, PA_MONTO TEXT, PA_USUARIO TEXT, PA_CLIENTE TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PICK_CIEGO (PC_ID_PROD TEXT, PC_NOM_PROD TEXT, PC_CANT TEXT, PC_ALMACEN TEXT, PC_RUTA TEXT, PC_FECHA TEXT)")
@@ -1754,10 +1761,11 @@ Private Sub i_engrane_Click
Subs.panelVisible(p_appUpdate, 0, 0)
If user.Text.Trim = "KMTS1" Then
- p_importarBDWA.Visible = True
+ p_importarBDWA.Visible = False
Else
p_importarBDWA.Visible = False
End If
+ If user.Text.trim = "KMTS1" Then b_bypass.Visible = True Else b_bypass.Visible = False
End Sub
Private Sub B4XPage_CloseRequest As ResumableSub
@@ -2232,4 +2240,42 @@ Private Sub cb_importarBDWA_CheckedChange(Checked As Boolean)
' LogColor($"cb_importarBDWA_CheckedChange = ${Checked}"$, Colors.Red)
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', '${Checked}')"$)
+End Sub
+
+
+
+Private Sub b_bypass_Click
+ c = Starter.skmt.ExecQuery("SELECT * FROM kmt_info")
+ If c.RowCount > 0 Then
+ Subs.panelVisible(p_bypass,0,0)
+ p_bypass.Visible = True
+ Else
+ MsgboxAsync("No hay ruta cargada, favor de cargar día","Atención")
+ End If
+End Sub
+
+Private Sub b_acepbypass_Click
+ DateTime.TimeFormat = "HH:mm:ss"
+ DateTime.DateFormat = "dd/MM/yyyy"
+ sDate = DateTime.Date(DateTime.Now)
+ sTime = DateTime.Time(DateTime.Now)
+
+ Dim datebypass() As String = Regex.Split("/",sDate)
+ Dim timebypass() As String = Regex.Split(":",sTime)
+
+ If et_bypass.Text = datebypass(0) & timebypass(0) & timebypass(1) Then
+ Starter.skmt.ExecNonQuery2("UPDATE GEOCERCA set ACTIVA = ? ", Array As Object(0))
+ et_bypass.Text = ""
+ MsgboxAsync("Geocerca Deshabilitada","Atención")
+ p_bypass.Visible = False
+ End If
+End Sub
+
+Private Sub b_cancelabypass_Click
+ p_bypass.Visible = False
+ et_bypass.Text = ""
+End Sub
+
+Private Sub p_bypass_Click
+
End Sub
\ No newline at end of file
diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas
index 5b2cf07..05f9e4a 100644
--- a/B4A/C_Cliente.bas
+++ b/B4A/C_Cliente.bas
@@ -29,7 +29,8 @@ Sub Class_Globals
Dim s As Cursor
Dim limite_credito As Double
Dim banderaabono As String
-
+ Dim m_lat_al, m_lon_al As String
+ Dim distance2 As Long
Dim ListView1 As ListView
Dim la_cuenta As Label
@@ -93,6 +94,7 @@ Sub Class_Globals
Dim rutaprev As String
Dim rutarep As String
Dim montopagare As String
+ Private qr As QRGenerator
Private p_abono As Panel
Private clv_abonos As CustomListView
Private et_abono As EditText
@@ -125,6 +127,11 @@ Sub Class_Globals
Private l_telefono As Label
Private l_fecha As Label
Private CheckBox1 As CheckBox
+ Private ImageView1 As ImageView
+
+ Private barcode As barcodeGenerator
+ Private B4XImageView1 As B4XImageView
+ Private ImageView2 As ImageView
End Sub
'You can add more parameters here.
@@ -218,9 +225,31 @@ Sub B4XPage_Appear
p_abono.Height = Root.Height
p_principal.Width = Root.Width
+ Dim cor_al As Cursor = Starter.skmt.ExecQuery("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'COORDS_ALMACEN' ")
+ If cor_al.RowCount > 0 Then
+ cor_al.Position = 0
+ Dim latlong() As String = Regex.Split(",",cor_al.GetString("CAT_VA_VALOR"))
+ m_lat_al = latlong(1)
+ m_lon_al = latlong(0)
+
+ End If
+
+ barcode.Initialize
+ qr.Initialize(B4XImageView1.mBase.Width)
+
Private cym As Map = Subs.traeCantYMonto2(Subs.traeCliente)
L_CANT.Text = cym.Get("cantidad")
l_total.Text = Round2(cym.Get("monto"), 2)
+
+ CallSubDelayed(Tracker, "Track")
+ CallSubDelayed(Tracker, "StartFLPSmall")
+ CallSubDelayed(Tracker, "StartFLP2")
+ If Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
+ B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
+ B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
+' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
+ GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation)
+ End If
Dim mostrarimp As Cursor = Starter.skmt.ExecQuery($"SELECT gestion from kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)"$)
mostrarimp.Position = 0
@@ -254,6 +283,24 @@ Sub B4XPage_Appear
Starter.skmt.ExecNonQuery2("UPDATE ABONOSP set DIAS = ?, DIASATRASO = ? where NOTA = ? AND CLIENTE IN (SELECT CUENTA FROM CUENTAA)",Array As String(DiferenciaDias,cdias.GetInt("CAT_CL_DIASCREDITO")-DiferenciaDias, pagarepen.GetString("NOTA")))
Next
End If
+
+ Dim geo As Cursor = Starter.skmt.ExecQuery("SELECT ACTIVA FROM GEOCERCA")
+ If geo.RowCount > 0 Then
+ geo.Position = 0
+ If geo.GetInt("ACTIVA") = 0 Then
+ HIST.Visible = True
+' b_cxc.Visible = True
+ b_noEntrega.Visible = True
+ gest.Visible = True
+ Else If geo.GetInt("ACTIVA") = 1 Then
+ HIST.Visible = False
+' b_cxc.Visible = False
+ b_noEntrega.Visible = False
+ gest.Visible = False
+ End If
+ End If
+
+
' If CREDITO = "1" Then
' Msgbox("AVISO","SE TIENE QUE IMPRIMIR PAGARÉ") 'ignore
@@ -411,14 +458,14 @@ Sub B4XPage_Appear
b_cancel_pagare.Visible = False
End If
- CallSubDelayed(Tracker, "Track")
- CallSubDelayed(Tracker, "StartFLPSmall")
- If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
- B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
- B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
-' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
- GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation)
- End If
+' CallSubDelayed(Tracker, "Track")
+' CallSubDelayed(Tracker, "StartFLPSmall")
+' If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
+' B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
+' B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
+'' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
+' GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation)
+' End If
Dim x1 As Cursor =Starter.skmt.ExecQuery("SELECT IFNULL(CAT_CL_LIMITECREDITO,0) AS CAT_CL_LIMITECREDITO FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)")
x1.Position = 0
@@ -445,6 +492,13 @@ Sub B4XPage_Appear
' End If
'
' End If
+
+ If (almacen = 81 Or almacen = 94) Then
+ HIST.Visible = True
+' b_cxc.Visible = True
+ b_noEntrega.Visible = True
+ gest.Visible = True
+ End If
End Sub
@@ -476,17 +530,91 @@ Sub GPS_LocationChanged (Location1 As Location)
Else
- Dim l1, l2 As Location
+ Dim l1, l2,l3 As Location
l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
Log($"Coordenadas de la tienda - lat:${LATITUD}, lon:${LONGITUD}"$)
l2.Initialize2(LATITUD, LONGITUD)
-
+ l3.Initialize2(m_lat_al,m_lon_al)
'now we need the distance between our location and the target location
distance = l1.DistanceTo(l2) 'the result is in meter
-
+ distance2 = l1.DistanceTo(l3) 'the result is in meter
Log("DISTANCIA "&distance)
+
+
+ Dim geo As Cursor = Starter.skmt.ExecQuery("SELECT ACTIVA FROM GEOCERCA")
+ If geo.RowCount > 0 Then
+ geo.Position = 0
+ If geo.GetInt("ACTIVA") = 1 Then
+
+ If (almacen = 88 Or almacen = 92) Then
+
+ If distance2 < 100 Then
+ HIST.Visible = True
+ b = Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa) AND SALDO_PENDIENTE <> 0")
+ b.Position = 0
+ Dim cabonos As String = b.GetString("CLIENTE")
+ If cabonos = 0 Then
+ b_cxc.Visible = False
+ Else
+ b_cxc.Visible = True
+ End If
+ b_noEntrega.Visible = True
+ gest.Visible = True
+ Else
+
+ If distance < 100 Then
+ HIST.Visible = True
+ b = Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa) AND SALDO_PENDIENTE <> 0")
+ b.Position = 0
+ Dim cabonos As String = b.GetString("CLIENTE")
+ If cabonos = 0 Then
+ b_cxc.Visible = False
+ Else
+ b_cxc.Visible = True
+ End If
+ b_noEntrega.Visible = True
+ gest.Visible = True
+ Else
+ HIST.Visible = False
+ b_cxc.Visible = False
+ b_noEntrega.Visible = False
+ gest.Visible = False
+ End If
+
+ End If
+
+ Else
+ HIST.Visible = True
+ b = Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa) AND SALDO_PENDIENTE <> 0")
+ b.Position = 0
+ Dim cabonos As String = b.GetString("CLIENTE")
+ If cabonos = 0 Then
+ b_cxc.Visible = False
+ Else
+ b_cxc.Visible = True
+ End If
+ b_noEntrega.Visible = True
+ gest.Visible = True
+ End If
+ Else If geo.GetInt("ACTIVA") = 0 Then
+ HIST.Visible = True
+ b = Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa) AND SALDO_PENDIENTE <> 0")
+ b.Position = 0
+ Dim cabonos As String = b.GetString("CLIENTE")
+ If cabonos = 0 Then
+ b_cxc.Visible = False
+ Else
+ b_cxc.Visible = True
+ End If
+ b_noEntrega.Visible = True
+ gest.Visible = True
+ End If
+
+
+
+ End If
End If
Dim sDate,sTime As String
@@ -513,7 +641,7 @@ Sub gest_Click
B4XPages.ShowPage("Principal")
End If
Else
- If Subs.traeAlmacen = 92 Then
+ If (Subs.traeAlmacen = 92 Or Subs.traeAlmacen = 94) Then
Dim k As Cursor = Starter.skmt.ExecQuery("SELECT CUENTA from CUENTAA")
k.Position = 0
@@ -584,7 +712,7 @@ Sub gest_Click
End Sub
Sub checacredito
- If l_total.Text = ".00" And L_CANT.Text = 1 Then
+ If l_total.Text = ".00" And (L_CANT.Text = 1 OR L_CANT.Text = 2) Then
Guardado
Else
@@ -600,100 +728,37 @@ Sub checacredito
x1.Position = 0
limite_credito = 0
If CREDITO = 1 And x1.GetString("CAT_CL_LIMITECREDITO") <> 0 Then '''' se debe de cambiar a si acepta o no credito, aparte de tener la bandera a credito
- Msgbox2Async("EL CLIENTE TIENE CREDITO DISPONIBLE, UNA VEZ SELECCIONADA UNA OPCION NO SE PODRA MODIFICAR!!!!!","Forma de pago","","Credito","Efectivo",LoadBitmap(File.DirAssets,"alert2.png"),False)
- Wait For Msgbox_Result (Result As Int)
- If Result= DialogResponse.POSITIVE Then
- Log(1)
-' p_credito.Visible = True
-' 'monto
-' c=Starter.skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS MONTO from HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND HVD_RECHAZO = 0 AND HVD_PARCIAL = 0")
-' c.Position = 0
-' montopagare = c.GetString("MONTO")
-' c.Close
-' l_limite.Text = "Monto de la venta: $" & l_total.Text
- Else If Result = DialogResponse.NEGATIVE Then
- escreditoono = 0
- Log(2)
- Tipoentrega = "CONTADO"
- B_IMP_Click
- banderaimp = 1
- Else If Result = DialogResponse.CANCEL Then
+
+ If Subs.traeAlmacen = 81 Then
+
Log(12)
escreditoono = 1
-' If l_total.Text.Replace(",","") <= NumberFormat2( x1.GetString("CAT_CL_LIMITECREDITO").Replace(",",""),0,2,2,False) Then
limite_credito = x1.GetString("CAT_CL_LIMITECREDITO")
- esPagoACreditoGuardamosPagare'' para brincar el r
- Log(3)
- '' descomentar
-' Private cliente As String = Subs.traeCliente
-' c = Starter.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info where cat_cl_codigo = '${cliente}'"$)
-' If c.RowCount > 0 Then
-' c.Position = 0
-' Private RUTA_PREVENTA = c.GetString("CAT_CL_RUTA")
-' End If
-' c = Starter.skmt.ExecQuery($"select distinct hvd_num_ticket from hist_ventas where hvd_cliente = '${cliente}'"$)
-' If c.RowCount > 0 Then
-' c.Position = 0
-' NOTA = c.GetString("HVD_NUM_TICKET")
-' End If
-' DateTime.DateFormat = "MM/dd/yyyy"
-' sDate=DateTime.Date(DateTime.Now)
-' sTime=DateTime.Time(DateTime.Now)
-' ProgressDialogShow("Un momento por favor!!")
-' Dim cmd As DBCommand
-' cmd.Initialize
-' cmd.Name = "insertaPagareGunaRep"
-' cmd.Parameters = Array As Object(Subs.traeAlmacen, RUTA_PREVENTA, Subs.traeRutaReparto, cliente, l_total.Text.Replace(",",""), NOTA, sDate & " " & sTime)
-' reqManager.ExecuteCommand(cmd, $"insertaPagare_${NOTA}"$)
- '' fin descomentar
+ If l_total.Text <> ".00" Then
+ esPagoACreditoGuardamosPagare
+ End If
-' Else
-' MsgboxAsync("El cliente debe de dar un pago de "& (l_total.Text.Replace(",","") - x1.GetString("CAT_CL_LIMITECREDITO")) &"","Atención")
-' Log(3)
-' Tipoentrega = "CREDITO"
-' DateTime.DateFormat = "dd/MM/yyyy"
-' DateTime.TimeFormat = "HH:mm:ss"
-' sDate=DateTime.Date(DateTime.Now)
-' sTime=DateTime.Time(DateTime.Now)
-' 'cliente
-' c=Starter.skmt.ExecQuery("select CUENTA from cuentaa")
-' c.Position = 0
-' cuenta = c.GetString("CUENTA")
-' c.Close
-' 'usuario
-' c=Starter.skmt.ExecQuery("select usuario from usuarioa")
-' c.Position = 0
-' usuario = c.GetString("USUARIO")
-' c.Close
-' 'Almacen
-' c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
-' c.Position = 0
-' almacen = c.GetString("ID_ALMACEN")
-' c.Close
-' 'FECHA PREVENTA
-' c=Starter.skmt.ExecQuery("select HVD_FECHA from HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
-' c.Position = 0
-' fechaprev = c.GetString("HVD_FECHA")
-' c.Close
-' 'RUTAPREVENTA
-' c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)")
-' c.Position = 0
-' rutaprev = c.GetString("CAT_CL_RUTA")
-' c.Close
-' 'RUTA rep
-' c=Starter.skmt.ExecQuery("select RUTAA from RUTAA")
-' c.Position = 0
-' rutarep = c.GetString("RUTAA")
-' c.Close
-' 'monto
-' c=Starter.skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS MONTO from HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND HVD_RECHAZO = 0 AND HVD_PARCIAL = 0")
-' c.Position = 0
-' montopagare = c.GetString("MONTO")
-' c.Close
-' Starter.skmt.ExecNonQuery2("INSERT INTO PAGARES (PA_ALMACEN, PA_RUTA_REP, PA_RUTAPREV, PA_FECHA_PREV, PA_CAPTURA, PA_MONTO, PA_USUARIO, PA_CLIENTE) VALUES(?,?,?,?,?,?,?,?) ", Array As Object (almacen,rutarep,rutaprev,fechaprev,(sDate),l_total.Text,usuario,cuenta))
-' B_IMP_Click
-' banderaimp = 1
-' End If
+ Else
+
+
+ Msgbox2Async("EL CLIENTE TIENE CREDITO DISPONIBLE, UNA VEZ SELECCIONADA UNA OPCION NO SE PODRA MODIFICAR!!!!!","Forma de pago","","Credito","Efectivo",LoadBitmap(File.DirAssets,"alert2.png"),False)
+ Wait For Msgbox_Result (Result As Int)
+ If Result= DialogResponse.POSITIVE Then
+ Log(1)
+ Else If Result = DialogResponse.NEGATIVE Then
+ escreditoono = 0
+ Log(2)
+ Tipoentrega = "CONTADO"
+ B_IMP_Click
+ banderaimp = 1
+ Else If Result = DialogResponse.CANCEL Then
+ Log(12)
+ escreditoono = 1
+ limite_credito = x1.GetString("CAT_CL_LIMITECREDITO")
+ esPagoACreditoGuardamosPagare
+ Log(3)
+
+ End If
End If
Else
Log(4)
@@ -759,12 +824,20 @@ Sub esPagoACreditoGuardamosPagare
banderaimp = 1
Else
If l_total.Text.Replace(",","") <= limite_credito Then
+ DateTime.DateFormat = "dd/MM/yyyy"
+ DateTime.TimeFormat = "HH:mm:ss"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
Starter.skmt.ExecNonQuery2("INSERT INTO PAGARES (PA_ALMACEN, PA_RUTA_REP, PA_RUTAPREV, PA_FECHA_PREV, PA_CAPTURA, PA_MONTO, PA_USUARIO, PA_CLIENTE,PA_TICKET) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object (almacen,rutarep,rutaprev,fechaprev,(sDate),l_total.Text.Replace(",",""),usuario,cuenta,NOTA))
B_IMP_Click
banderaimp = 1
Else
+ DateTime.DateFormat = "dd/MM/yyyy"
+ DateTime.TimeFormat = "HH:mm:ss"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
Log(limite_credito)
- Msgbox2Async("Se debe de realizar un pago por " & NumberFormat2((l_total.Text.Replace(",","")-limite_credito),0,2,2,False) & " por que exede el limite de credito","Atención","","Aceptar","Cancelar",LoadBitmap(File.DirAssets,"alert2.png"),False)
+ Msgbox2Async("Se debe de realizar un pago por " & NumberFormat2((l_total.Text.Replace(",","")-limite_credito),0,2,2,False) & " por que excede el limite de credito","Atención","","Aceptar","Cancelar",LoadBitmap(File.DirAssets,"alert2.png"),False)
Wait For Msgbox_Result (Result As Int)
If Result= DialogResponse.CANCEL Then
Starter.skmt.ExecNonQuery2("INSERT INTO PAGARES (PA_ALMACEN, PA_RUTA_REP, PA_RUTAPREV, PA_FECHA_PREV, PA_CAPTURA, PA_MONTO, PA_USUARIO, PA_CLIENTE,PA_TICKET) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object (almacen,rutarep,rutaprev,fechaprev,(sDate),l_total.Text.Replace(",",""),usuario,cuenta,NOTA))
@@ -875,7 +948,13 @@ Sub Guardado
' If mandamapa.RowCount > 0 Then
' StartActivity(MAPA_RUTAS)
' Else If mandamapa.RowCount = 0 Then
- B4XPages.ShowPage("Principal")
+' If (almacen = 81 Or almacen = 94) Then
+'
+'
+' Else
+
+ B4XPages.ShowPage("Principal")
+' End If
' End If
End Sub
@@ -963,16 +1042,7 @@ End Sub
Sub HIST_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
- Msgbox2Async("Ya se gestiono el cliente, no se pueden hacer modificaciones","Atención","","","Ok",LoadBitmap(File.DirAssets,"alert2.png"),False)
- Wait For Msgbox_Result (Result As Int)
- If Result= DialogResponse.NEGATIVE Then
- B4XPages.ShowPage("Principal")
- End If
- Else
-
+
Dim pagacheca2 As Cursor = Starter.skmt.ExecQuery("SELECT * FROM PAGARES WHERE PA_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
If pagacheca2.RowCount > 0 Then
@@ -986,7 +1056,7 @@ Sub HIST_Click
Else
- If Subs.traeAlmacen = 92 Then
+ If (Subs.traeAlmacen = 92 Or Subs.traeAlmacen = 94) Then
Dim k As Cursor = Starter.skmt.ExecQuery("SELECT CUENTA from CUENTAA")
k.Position = 0
@@ -1061,7 +1131,7 @@ Sub HIST_Click
End If
End If
End If
- End If
+
' B4XPages.MainPage.historico.prodsMap.Initialize
'' B4XPages.MainPage.historico.clv_pedido.Clear
' B4XPages.ShowPage("Historico")
@@ -1073,7 +1143,8 @@ Sub B_IMP_Click
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
- DateTime.DateFormat = "MM/dd/yyyy"
+' DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.DateFormat = "dd/MM/yyyy"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
c.Close
@@ -1128,8 +1199,8 @@ Sub B_IMP_Click
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
Sleep(1000)
cont = cont + 1
- If cont = 2 Then Printer1.Connect
- If cont > 4 Then impresoraConectada = True
+ If cont = 7 Then Printer1.Connect
+ If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
@@ -1558,7 +1629,7 @@ Printer1.WriteString(" " & CRLF)
Printer1.WriteString(" " & CRLF)
If almacen = "81" Then
- Printer1.WriteString("Telefono de atención:" & CRLF)
+ Printer1.WriteString("Telefono de atencion:" & CRLF)
Printer1.WriteString("" & CRLF)
End If
@@ -1627,7 +1698,7 @@ End Sub
Sub Printer_Connected (Success As Boolean)
If Success Then
' B_IMP.Enabled = True
- PASA_IMP = "1"
+' PASA_IMP = "1"
Else
' B_IMP.Enabled = False
If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore
@@ -2310,7 +2381,8 @@ Sub imprime_abonopagare2
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
- DateTime.DateFormat = "MM/dd/yyyy"
+' DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.DateFormat = "dd/MM/yyyy"
DateTime.TimeFormat = "HH:mm:ss"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
@@ -2375,6 +2447,8 @@ Sub imprime_abonopagare2
TAMANO = 0
ESPACIO = 22
BLANCO = " "
+
+
Dim bmp As Bitmap
bmp.InitializeResize(File.DirAssets, "logo-guna-18.jpg", 192, 192, True) 'ignore
Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp)
@@ -2393,7 +2467,7 @@ Sub imprime_abonopagare2
c7.Close
-
+
Printer1.WriteString("DISTRIBUIDORA ROCHA TULA PACHUCA" & CRLF)
' Printer1.WriteString(sucursal & CRLF)
Printer1.WriteString(sDate & CRLF)
@@ -2475,6 +2549,55 @@ Sub imprime_abonopagare2
c4.Close
End If
+ Dim numpago As Int = c5.RowCount + 1
+
+ Dim tipopagotick As String = ""
+ If itemselect = "TRANSFERENCIA" Then
+ tipopagotick = "T"
+ Else If itemselect = "EFECTIVO" Then
+ tipopagotick = "E"
+ Else If itemselect = "CHEQUE" Then
+ tipopagotick = "C"
+ End If
+
+ '' codigo de barras
+' ImageView1.Bitmap = barcode.CODE128(notaabono&sDate&tipopagotick&numpago)
+ '' codigo de qr
+ B4XImageView1.SetBitmap(qr.Create(notaabono&sDate&tipopagotick&numpago))
+
+
+ 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
+
+ '' codigo de barras
+' Dim Out As OutputStream
+' Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "Test.png", False)
+' barcode.CODE128(notaabono&sDate&tipopagotick&numpago).WriteToStream(Out, 100, "PNG")
+' Out.Close
+
+ '' codigo de qr
+ Dim Out As OutputStream
+ Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "qr.png", False)
+ qr.Create(notaabono&sDate&tipopagotick&numpago).WriteToStream(Out, 100, "PNG")
+ Out.Close
@@ -2483,7 +2606,7 @@ Sub imprime_abonopagare2
' c.Position = 0
' notaabono = c.GetString("NOTA")
' End If
- Dim numpago As Int = c5.RowCount + 1
+
Log(notaabono)
Log(et_abono.Text)
Printer1.WriteString("Comprobante de pago del pagare" & CRLF)
@@ -2501,9 +2624,7 @@ Sub imprime_abonopagare2
Printer1.WriteString(" " & CRLF)
Printer1.WriteString("------------------------------" & CRLF)
Printer1.WriteString("-------------FIRMA------------" & CRLF)
- Printer1.WriteString(" " & CRLF)
- Printer1.WriteString(" " & CRLF)
- Printer1.WriteString(" " & CRLF)
+
DateTime.DateFormat = "ddMMyyyy"
sDate=DateTime.Date(DateTime.Now)
itemselect = "EFECTIVO"
@@ -2511,16 +2632,27 @@ Sub imprime_abonopagare2
' Items.Add("TRANSFERENCIA")
' Items.Add("EFECTIVO")
' Items.Add("CHEQUE")
- Dim tipopagotick As String = ""
- If itemselect = "TRANSFERENCIA" Then
- tipopagotick = "T"
- Else If itemselect = "EFECTIVO" Then
- tipopagotick = "E"
- Else If itemselect = "CHEQUE" Then
- tipopagotick = "C"
- End If
- Printer1.WriteBarCode("I",NOTA&sDate&tipopagotick&numpago)
+
+
+
+
+' Dim bmp As Bitmap
+ '' bmp.InitializeResize(File.DirAssets, "logo-guna-18.jpg", 192, 192, True) 'ignore
+
+ Dim bmp2 As Bitmap
+ bmp2.InitializeResize(File.DirInternal & Dir & Dir2, "qr.png", 192, 192, True) 'ignore
+' bmp.Initialize(File.DirInternal & Dir & Dir2, "qr.png") 'ignore
+ Dim myimage2 As AnImage = Printer1.ImageToBWIMage(bmp2)
+ myimage2 = Printer1.DitherImage2D(myimage2, 128)
+ myimage2= Printer1.PackImage(myimage2)
+ Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
+ Printer1.WriteString(Printer1.REVERSE)
+ Printer1.PrintImage(myimage2)
+ Printer1.WriteString(Printer1.UNREVERSE)
+
+
+' Printer1.WriteBarCode("I",NOTA&sDate&tipopagotick&numpago)
Printer1.WriteString(" " & CRLF)
Printer1.WriteString(" " & CRLF)
Printer1.WriteString(" " & CRLF)
@@ -2584,11 +2716,19 @@ End Sub
' End If
'End Sub
+'Saves the data received from PictureTaken event
+Public Sub SavePictureToFile(Data() As Byte, Dir As String, FileName As String)
+ Dim out As OutputStream = File.OpenOutput(Dir, FileName, False)
+ out.WriteBytes(Data, 0, Data.Length)
+ out.Close
+End Sub
+
Sub imprime_abonopagare
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
- DateTime.DateFormat = "MM/dd/yyyy"
+' DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.DateFormat = "dd/MM/yyyy"
DateTime.TimeFormat = "HH:mm:ss"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
@@ -2636,6 +2776,7 @@ Sub imprime_abonopagare
If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
+ Log("asasdas")
impresoraConectada = False
Else
' If logger Then Log("conectando 2")
@@ -2643,9 +2784,10 @@ Sub imprime_abonopagare
Private cont As Int = 0
Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
Sleep(1000)
+ Log("asasdas")
cont = cont + 1
- If cont = 2 Then Printer1.Connect
- If cont > 4 Then impresoraConectada = True
+ If cont = 7 Then Printer1.Connect
+ If cont > 15 Then impresoraConectada = True
Loop
Sleep(500)
impresoraConectada = False
@@ -2653,6 +2795,7 @@ Sub imprime_abonopagare
TAMANO = 0
ESPACIO = 22
BLANCO = " "
+ Printer1.Justify = 0
Dim bmp As Bitmap
bmp.InitializeResize(File.DirAssets, "logo-guna-18.jpg", 192, 192, True) 'ignore
Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp)
@@ -2671,7 +2814,7 @@ Sub imprime_abonopagare
c7.Close
-
+ Printer1.WriteString(" " & CRLF)
Printer1.WriteString("DISTRIBUIDORA ROCHA TULA PACHUCA" & CRLF)
' Printer1.WriteString(sucursal & CRLF)
Printer1.WriteString(sDate & CRLF)
@@ -2686,9 +2829,20 @@ Sub imprime_abonopagare
Dim notaabono As String
Dim saldopendiente As Double
Dim saldopendiente2 As Double
+' Items.Add("TRANSFERENCIA")
+' Items.Add("EFECTIVO")
+' Items.Add("CHEQUE")
+ Dim tipopagotick As String = ""
+ If itemselect = "TRANSFERENCIA" Then
+ tipopagotick = "T"
+ Else If itemselect = "EFECTIVO" Then
+ tipopagotick = "E"
+ Else If itemselect = "CHEQUE" Then
+ tipopagotick = "C"
+ End If
If tipo_abonox = "abono" Then
-
+ Log("AQUI ABONO")
c = Starter.skmt.ExecQuery($"select distinct hvd_num_ticket from hist_ventas where hvd_cliente = '${la_cuenta.Text}' and HVD_PRONOMBRE <> 'Cobranza Pendiente' "$)
If c.RowCount > 0 Then
@@ -2754,21 +2908,76 @@ Sub imprime_abonopagare
End If
-
+' bc.Initialize
' c = Starter.skmt.ExecQuery("SELECT NOTA FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
' If c.RowCount > 0 Then
' c.Position = 0
' notaabono = c.GetString("NOTA")
' End If
+ DateTime.DateFormat = "ddMMyyyy"
+ sDate=DateTime.Date(DateTime.Now)
Dim numpago As Int = c5.RowCount + 1
+
+ '' codigo de barras
+' ImageView1.Bitmap = barcode.CODE128(notaabono&sDate&tipopagotick&numpago)
+ '' codigo de qr
+ B4XImageView1.SetBitmap(qr.Create(notaabono&sDate&tipopagotick&numpago))
+
+
+ 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
+
+ '' codigo de barras
+' Dim Out As OutputStream
+' Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "Test.png", False)
+' barcode.CODE128(notaabono&sDate&tipopagotick&numpago).WriteToStream(Out, 100, "PNG")
+' Out.Close
+
+ '' codigo de qr
+ Dim Out As OutputStream
+ Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "qr.png", False)
+ qr.Create(notaabono&sDate&tipopagotick&numpago).WriteToStream(Out, 100, "PNG")
+ Out.Close
+
Log(notaabono)
Log(et_abono.Text)
Printer1.WriteString("Comprobante de pago del pagare" & CRLF)
Printer1.WriteString("Folio: " & Folio &"-"&(numpago)& CRLF)
- Printer1.WriteString("Monto deuda: " & (NumberFormat(saldopendiente2 - saldopendiente3,0,2)) & CRLF)
+
+ If tipo_abonox = "abono" Then
+ Printer1.WriteString("Monto deuda: " & (NumberFormat(saldopendiente - saldopendiente1,0,2)) & CRLF)
+ Else
+ Printer1.WriteString("Monto deuda: " & (NumberFormat(saldopendiente2 - saldopendiente3,0,2)) & CRLF)
+ End If
+
Printer1.WriteString("Monto abono: " & (NumberFormat(et_abono.Text,0,2)) & CRLF)
- Printer1.WriteString("Restante "&Folio&": " &(NumberFormat(saldopendiente2-et_abono.Text - saldopendiente3,0,2)) & CRLF)
+
+ If tipo_abonox = "abono" Then
+ Printer1.WriteString("Restante "&Folio&": " &(NumberFormat(saldopendiente-et_abono.Text ,0,2)) & CRLF)
+ Else
+ Printer1.WriteString("Restante "&Folio&": " &(NumberFormat(saldopendiente2-et_abono.Text - saldopendiente3,0,2)) & CRLF)
+ End If
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
Printer1.WriteString("Restante pagares: " &(NumberFormat(saldopendiente-et_abono.Text - saldopendiente1,0,2)) & CRLF)
Printer1.WriteString("Fecha Abono: " & sDate & CRLF)
Printer1.WriteString(" " & CRLF)
@@ -2780,36 +2989,37 @@ Sub imprime_abonopagare
Printer1.WriteString(" " & CRLF)
Printer1.WriteString("------------------------------" & CRLF)
Printer1.WriteString("-------------FIRMA------------" & CRLF)
- Printer1.WriteString(" " & CRLF)
- Printer1.WriteString(" " & CRLF)
- Printer1.WriteString(" " & CRLF)
- DateTime.DateFormat = "ddMMyyyy"
- sDate=DateTime.Date(DateTime.Now)
-' Items.Add("TRANSFERENCIA")
-' Items.Add("EFECTIVO")
-' Items.Add("CHEQUE")
- Dim tipopagotick As String = ""
- If itemselect = "TRANSFERENCIA" Then
- tipopagotick = "T"
- Else If itemselect = "EFECTIVO" Then
- tipopagotick = "E"
- Else If itemselect = "CHEQUE" Then
- tipopagotick = "C"
- End If
- Printer1.WriteBarCode("I",notaabono&sDate&tipopagotick&numpago)
+
+' Dim bmp As Bitmap
+'' bmp.InitializeResize(File.DirAssets, "logo-guna-18.jpg", 192, 192, True) 'ignore
+
+ Dim bmp2 As Bitmap
+ bmp2.InitializeResize(File.DirInternal & Dir & Dir2, "qr.png", 192, 192, True) 'ignore
+' bmp.Initialize(File.DirInternal & Dir & Dir2, "qr.png") 'ignore
+ Dim myimage2 As AnImage = Printer1.ImageToBWIMage(bmp2)
+ myimage2 = Printer1.DitherImage2D(myimage2, 128)
+ myimage2= Printer1.PackImage(myimage2)
+ Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
+ Printer1.WriteString(Printer1.REVERSE)
+ Printer1.PrintImage(myimage2)
+ Printer1.WriteString(Printer1.UNREVERSE)
+
+' Printer1.WriteBarCode("I",notaabono&sDate&tipopagotick&numpago)
Printer1.WriteString(" " & CRLF)
Printer1.WriteString(" " & CRLF)
Printer1.WriteString(" " & CRLF)
- Sleep(1000)
+
+ Sleep(2000)
Printer1.DisConnect
ProgressDialogHide
+
If Subs.traeAlmacen = "92" Then
-''mayoreo
+ ''mayoreo
If tipo_abonox = "abono" Then
Msgbox2Async("Deseas imprimir de nuevo el ticket?", "ATENCION","SI","", "NO",LoadBitmap(File.DirAssets,"alert2.png"), False)
@@ -2950,7 +3160,7 @@ Sub imprime_abonopagare
End If
End If
-''mayoreo
+ ''mayoreo
Else
If tipo_abonox = "abono" Then
@@ -3101,7 +3311,8 @@ Sub imprime_pagare
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
- DateTime.DateFormat = "MM/dd/yyyy"
+' DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.DateFormat = "dd/MM/yyyy"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
c.Close
@@ -3192,6 +3403,7 @@ Sub imprime_pagare
' Ticket = c6.GetString("HVD_NUM_TICKET")
' End If
' c6.Close
+
DateTime.DateFormat = "dd/MM/yyyy"
DateTime.TimeFormat = "HH:mm:ss"
sDate=DateTime.Date(DateTime.Now)
@@ -3290,7 +3502,7 @@ Sub imprime_pagare
Printer1.Justify = 0
s.Close
Printer1.WriteString(" " & CRLF)
- s=Starter.skmt.ExecQuery($"select HVD_PRONOMBRE, HVD_CANT, length(HVD_CANT) as L_CANT, HVD_COSTO_TOT, length(HVD_COSTO_TOT) as L_COSTOU,HVD_PROID, HVD_CODPROMO,IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) AND HVD_RECHAZO = 0 AND HVD_CODPROMO <> '${Subs.traeAlmacen}' order by HVD_CODPROMO, ESPROMO DESC, HVD_PROID"$)
+ s=Starter.skmt.ExecQuery($"select HVD_PRONOMBRE, HVD_CANT, length(HVD_CANT) as L_CANT, HVD_COSTO_TOT, length(HVD_COSTO_TOT) as L_COSTOU,HVD_PROID, HVD_CODPROMO,IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) AND HVD_RECHAZO = 0 and HVD_PRONOMBRE <> 'Cobranza Pendiente' AND HVD_CODPROMO <> '${Subs.traeAlmacen}' order by HVD_CODPROMO, ESPROMO DESC, HVD_PROID"$)
If S.RowCount>0 Then
Printer1.WriteString("-------PROMOS ENTREGA--------" & CRLF)
Printer1.WriteString("Cant. Precio Importe" & CRLF)
@@ -3353,13 +3565,70 @@ Sub imprime_pagare
Printer1.WriteString("" & CRLF)
Printer1.WriteString("______________________________" & CRLF)
- Printer1.WriteString(" " & CRLF)
- Printer1.WriteString(" " & CRLF)
- Printer1.WriteString(" " & CRLF)
+
DateTime.DateFormat = "ddMMyyyy"
sDate=DateTime.Date(DateTime.Now)
' Printer1.WriteString("JHGHGH " & CRLF)
- Printer1.WriteBarCode("I",la_cuenta.Text&sDate)
+
+
+
+
+
+ '' codigo de barras
+' ImageView1.Bitmap = barcode.CODE128(notaabono&sDate&tipopagotick&numpago)
+ '' codigo de qr
+ B4XImageView1.SetBitmap(qr.Create(la_cuenta.Text&sDate))
+
+
+ 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
+
+ '' codigo de barras
+' Dim Out As OutputStream
+' Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "Test.png", False)
+' barcode.CODE128(la_cuenta.Text&sDate).WriteToStream(Out, 100, "PNG")
+' Out.Close
+
+ '' codigo de qr
+ Dim Out As OutputStream
+ Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "qr.png", False)
+ qr.Create(la_cuenta.Text&sDate).WriteToStream(Out, 100, "PNG")
+ Out.Close
+
+
+
+
+
+ Dim bmp2 As Bitmap
+ bmp2.InitializeResize(File.DirInternal & Dir & Dir2, "qr.png", 192, 192, True) 'ignore
+' bmp.Initialize(File.DirInternal & Dir & Dir2, "qr.png") 'ignore
+ Dim myimage2 As AnImage = Printer1.ImageToBWIMage(bmp2)
+ myimage2 = Printer1.DitherImage2D(myimage2, 128)
+ myimage2= Printer1.PackImage(myimage2)
+ Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
+ Printer1.WriteString(Printer1.REVERSE)
+ Printer1.PrintImage(myimage2)
+ Printer1.WriteString(Printer1.UNREVERSE)
+
+' Printer1.WriteBarCode("I",la_cuenta.Text&sDate)
Printer1.WriteString(" " & CRLF)
Printer1.WriteString(" " & CRLF)
@@ -3393,6 +3662,19 @@ End Sub
Private Sub b_cancel_pagare_Click
tipo_abonox = "abono"
+
+ Dim Items As List
+ Items.Initialize
+
+ Items.Add("SELECCIONA UNA OPCION")
+ Items.Add("TRANSFERENCIA")
+ Items.Add("EFECTIVO")
+ Items.Add("CHEQUE")
+
+ cb_tipopago.SetItems(Items)
+
+ itemselect= "SELECCIONA UNA OPCION"
+
' Msgbox2Async($"¿Que deseas realizar?"$,"Atención", "","", "Abono pagare", Null, True)
' Wait For Msgbox_Result (resultado As Int)
' If resultado = DialogResponse.POSITIVE Then
@@ -3516,7 +3798,8 @@ Sub imprime_cancelarpagare
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
- DateTime.DateFormat = "MM/dd/yyyy"
+' DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.DateFormat = "dd/MM/yyyy"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
c.Close
@@ -4215,7 +4498,8 @@ Private Sub HIST_LongClick
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
- DateTime.DateFormat = "MM/dd/yyyy"
+' DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.DateFormat = "dd/MM/yyyy"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
c.Close
@@ -4309,11 +4593,12 @@ Private Sub HIST_LongClick
For i=0 To S.RowCount -1
S.Position=i
Log(s.GetString("HVD_RECHAZO"))
+
If s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT") > 0 Then
If s.GetString("HVD_CODPROMO") = Subs.traeAlmacen Then
Printer1.Justify = 0
Printer1.WriteString((s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT") )&" "&s.GetString("HVD_PRONOMBRE") & CRLF)
-
+ Printer1.WriteString(" " & CRLF)
' Dim punit As String = NumberFormat2((s.GETSTRING("HVD_COSTO_TOT")/s.GetString("HVD_CANT")),0,2,2,False)
' TAMANO = punit.Length + TAMANO
@@ -4339,7 +4624,7 @@ Private Sub HIST_LongClick
Else If s.GetString("HVD_RECHAZO") = 1 Then
Printer1.Justify = 0
Printer1.WriteString((s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT")) &" "&s.GetString("HVD_PRONOMBRE") & CRLF)
-
+ Printer1.WriteString(" " & CRLF)
' Private vc5 As Cursor = Starter.skmt.ExecQuery($"select iFNULL(CAT_GP_PRECIO,0) AS CAT_GP_PRECIO from CAT_GUNAPROD where CAT_GP_ID = '${s.GetString("HVD_PROID")}'"$)
' vc5.Position = 0
' Dim punit As String = NumberFormat2((vc5.GetString("CAT_GP_PRECIO")),0,2,2,False)
@@ -4388,6 +4673,7 @@ Private Sub HIST_LongClick
Printer1.WriteString("* "&s.GetString("HVD_PRONOMBRE") & CRLF)
Else
Printer1.WriteString((s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT"))&" "&s.GetString("HVD_PRONOMBRE") & CRLF)
+ Printer1.WriteString(" " & CRLF)
End If
' Dim punit As String =NumberFormat2((s.GETSTRING("HVD_COSTO_TOT")/s.GetString("HVD_CANT")),0,2,2,False)
' TAMANO = punit.Length + TAMANO
@@ -4427,4 +4713,5 @@ Private Sub HIST_LongClick
Printer1.DisConnect
ProgressDialogHide
' Guardado
-End Sub
\ No newline at end of file
+End Sub
+
diff --git a/B4A/C_DetalleVenta.bas b/B4A/C_DetalleVenta.bas
index 25ad0f4..a75d88b 100644
--- a/B4A/C_DetalleVenta.bas
+++ b/B4A/C_DetalleVenta.bas
@@ -86,6 +86,9 @@ End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
+
+
+
Subs.centraPanel(p_principal, Root.Width)
' b_guardar.Visible = False
' Titulo.Left = Round(p_principal.Width/2)-(Titulo.Width/2)
@@ -308,6 +311,8 @@ Sub B4XPage_Appear
Else
L_CANT.Text = NumberFormat2((arti + arti1 +arti2 + arti3),0,0,0,True)
End If
+
+
End Sub
Sub GPS_LocationChanged (Location1 As Location)
@@ -503,6 +508,20 @@ Sub CreateListItem2(Text As String, precioU As String, inv As Int, inv2 As Int,
End Sub
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
Log("etCantHasFocus=" & etCantHasFocus)
LogColor("b_prodMenos_Click", Colors.Magenta)
@@ -637,9 +656,26 @@ Sub b_prodMenos_Click
' L_CANT.Text = cym.Get("cantidad")
' L_TOTAL.Text = Round2(cym.Get("monto"), 2)
' cuentaProds("-")
+ End If
End Sub
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
' Log("etCantHasFocus=" & etCantHasFocus)
LogColor("b_prodMas_Click", Colors.Magenta)
@@ -728,6 +764,8 @@ Sub b_prodMas_Click
' If cantoriginal <= esteTag.Get(1) Then
' L_CANT.Text = L_CANT.Text + 1
' End If
+
+ End If
End Sub
Sub cuentaProds(accion As String)
@@ -1018,12 +1056,25 @@ Private Sub l_pCantC_Click
End Sub
Private Sub b_revversar_Click
- 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
+ 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
- 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 Sub
diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas
index 0a435f5..d653bbf 100644
--- a/B4A/C_Principal.bas
+++ b/B4A/C_Principal.bas
@@ -136,6 +136,7 @@ Sub Class_Globals
Private PB_carga2 As ProgressBar
Private l_carga2 As Label
'fin carga
+ Private b_impresion_rec As Button
End Sub
'You can add more parameters here.
@@ -826,6 +827,7 @@ Sub Subir_Click
' envioinfo
' Else
envioinfo
+ imp_LIQUIDACION
' End If
' c.Close
@@ -1223,6 +1225,11 @@ Sub cargaGeneral
reqManager.ExecuteQuery(cmd , 0, "gunaprod")
Log($"Pedimos gunaprod - ${ALMACEN}, ${e_ruta.text}"$)
reqs.Add("gunaprod")
+
+ cmd.Initialize
+ cmd.Name = "select_GEOCERCA_GUNA_VN"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "GEOCERCA")
If ALMACEN = "81" Then
@@ -1322,6 +1329,17 @@ Sub JobDone(Job As HttpJob)
End If
End If
+ If Job.JobName = "DBRequest" Then
+ Dim result As DBResult = reqManager.HandleJob(Job)
+ If result.Tag = "GEOCERCA" Then 'query tag
+ Starter.skmt.ExecNonQuery("DELETE FROM GEOCERCA")
+ For Each records() As Object In result.Rows
+ Dim CAT_AL_GEOCERCA As String = records(result.Columns.Get("CAT_AL_GEOCERCA"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO GEOCERCA(ACTIVA) VALUES (?)", Array As Object (CAT_AL_GEOCERCA))
+ Next
+ End If
+ End If
+
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "select_abonosp" Then 'query tag
@@ -1994,6 +2012,7 @@ Sub e_ruta_EnterPressed
Starter.skmt.ExecNonQuery("delete from HIST_REPARTO_GEO")
Starter.skmt.ExecNonQuery("delete from pedido_cliente")
Starter.skmt.ExecNonQuery("delete from PAGARES")
+ Starter.skmt.ExecNonQuery("DELETE FROM GEOCERCA")
Starter.skmt.ExecNonQuery("delete from CHECADO_CHECK")
Starter.skmt.ExecNonQuery("delete from CHECKLIST2")
Starter.skmt.ExecNonQuery("delete from pedido")
@@ -2304,15 +2323,23 @@ End Sub
Private Sub b_rechazos_Click
Dim label1 As Label
label1 = lv_prod_Prin.SingleLineLayout.Label
- label1.TextSize = 20
+ label1.TextSize = 18
label1.TextColor = Colors.White
p_prod.Width = Root.Width
p_prod.Height = Root.Height
lv_prod_Prin.Width = Root.Width
- b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2
+' b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2
b_regreso.Top = p_prod.Height - b_regreso.Height
+
+ b_impresion_rec.Top = p_prod.Height - b_impresion_rec.Height
' label1.TextSize = 20
label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD)
+
+ If l_ctast.Text = "0" Then
+ b_impresion_rec.Enabled = True
+ Else If l_ctast.Text <> "0" Then
+ b_impresion_rec.Enabled = False
+ End If
' lv_prod_Prin.Left = p_prod.Width / 2
lv_prod_Prin.Width = Root.Width - (Root.Width * .10)
@@ -2320,7 +2347,7 @@ Private Sub b_rechazos_Click
Subs.centraListView(lv_prod_Prin,Root.Width)
p_prod.Visible = True
p_prod.BringToFront
- Private c As Cursor = Starter.skmt.ExecQuery("select HVD_PRONOMBRE, IFNULL(SUM(HVD_RECHAZOCANT), 0) AS HVD_RECHAZOCANT, HVD_PROID from HIST_VENTAS WHERE hvd_rechazo <> 2 and HVD_RECHAZOCANT > 0 GROUP BY HVD_PROID order by HVD_PRONOMBRE asc")
+ Private c As Cursor = Starter.skmt.ExecQuery("select HVD_PRONOMBRE, IFNULL(SUM(HVD_RECHAZOCANT), 0) AS HVD_RECHAZOCANT, HVD_PROID from HIST_VENTAS WHERE hvd_rechazo <> 2 and HVD_RECHAZOCANT > 0 and HVD_PRONOMBRE <> 'Cobranza Pendiente' GROUP BY HVD_PROID order by HVD_PRONOMBRE asc")
lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.White
lv_prod_Prin.Clear
If c.RowCount > 0 Then
@@ -2339,8 +2366,10 @@ Private Sub b_rechazos_Click
If ( c.GetInt("HVD_RECHAZOCANT") - resta) <= 0 Then
Else
+' If c.GetString("HVD_PRONOMBRE") <> "Cobranbra Pendiente" Then
itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Inventario: ${(c.GetInt("HVD_RECHAZOCANT") - resta)}"$
lv_prod_Prin.AddSingleLine(itemText)
+' End If
End If
Next
Else
@@ -2883,4 +2912,275 @@ Private Sub ImageView1_LongClick
d.Position=0
cuantos_noventa = D.GetString("CUANTOS_NOVENTA")
d.Close
+End Sub
+
+Private Sub b_impresion_rec_Click
+ Dim totalentrega As Int
+ Dim totalrechazo As Int
+ Dim totalpiezas As Int
+ Dim sDate, sTime As String
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+' DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.DateFormat = "dd/MM/yyyy"
+ DateTime.TimeFormat="HH:mm:ss"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c.Close
+' c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =?", Array As String ("SUCURSAL"))
+' c.Position = 0
+' sucursal = c.GetString("CAT_VA_VALOR")
+' c.Close
+
+ 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
+
+ TAMANO = 0
+ ESPACIO = 28
+ BLANCO = " "
+
+ Printer1.WriteString("gUNA Distribuciones" & CRLF)
+ Printer1.WriteString(sDate & " " &sTime & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("------------RECHAZO-----------" & CRLF)
+
+ Private c As Cursor = Starter.skmt.ExecQuery("select HVD_PRONOMBRE, IFNULL(SUM(HVD_RECHAZOCANT), 0) AS HVD_RECHAZOCANT, IFNULL(SUM(HVD_CANT), 0) AS HVD_CANT, (IFNULL(SUM(HVD_CANT), 0) - IFNULL(SUM(HVD_RECHAZOCANT), 0)) as total, HVD_PROID from HIST_VENTAS where HVD_RECHAZO = 1 AND HVD_PRONOMBRE <> 'Cobranza Pendiente' GROUP BY HVD_PROID order by HVD_PRONOMBRE asc")
+ If c.RowCount > 0 Then
+ For i = 0 To c.RowCount - 1
+ c.Position = i
+ Printer1.WriteString(" " & CRLF)
+
+ Private c3 As Cursor=Starter.skmt.ExecQuery($"select Ifnull(sum(PE_CANT),0) AS PE_CANT from PEDIDO WHERE PE_PROID ='${c.GetString("HVD_PROID")}'"$)
+ Private resta As String = 0
+
+ If c3.RowCount > 0 Then
+ c3.Position = 0
+ resta = c3.GetString("PE_CANT")
+ Else
+ resta = 0
+ End If
+ Printer1.Justify = 0
+ Printer1.WriteString(c.GetString("HVD_PRONOMBRE") & CRLF)
+' Printer1.Justify = 0
+' Printer1.WriteString("TP: "& c.GetInt("HVD_CANT")&" ")
+' Printer1.Justify = 1
+' Printer1.WriteString(" TE: " & (c.GetInt("total") + resta)&" ")
+' Printer1.Justify = 2
+ Printer1.WriteString("RECHAZO: " & (c.GetInt("HVD_RECHAZOCANT") - resta)&" ")
+ Printer1.Justify = 0
+ Printer1.WriteString(" " & CRLF)
+' Printer1.WriteString(" " & CRLF)
+
+' itemText2 = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF} TP: ${(c.GetInt("HVD_CANT"))} TE: ${( c.GetInt("total") + resta)} TR: ${(c.GetInt("HVD_RECHAZOCANT") - resta)}"$
+ totalentrega = totalentrega + c.GetInt("total") + resta
+ totalrechazo = totalrechazo + c.GetInt("HVD_RECHAZOCANT") - resta
+ totalpiezas = totalpiezas + c.GetInt("HVD_CANT")
+' Log(itemText2)
+
+ Next
+ End If
+ c.Close
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(" " & CRLF)
+' Printer1.WriteString("Total Piezas: "& totalpiezas & CRLF)
+' Printer1.WriteString("Total Entrega: "& totalentrega & CRLF)
+ Printer1.WriteString("Total Rechazo: "& totalrechazo & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Sleep(1000)
+ Printer1.DisConnect
+
+ ProgressDialogHide
+End Sub
+
+Sub imp_LIQUIDACION
+
+ ProgressDialogShow("Imprimiendo, un momento ...")
+ Printer1.DisConnect
+ If Not(Printer1.IsConnected) Then
+' If logger Then Log("conectando 1")
+ Printer1.Connect
+ Private cont As Int = 0
+ Do While Not(impresoraConectada)
+ Sleep(1000)
+ cont = cont + 1
+ If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
+ If cont > 15 Then impresoraConectada = True
+ Loop
+ Sleep(500)
+ impresoraConectada = False
+ Else
+' If logger Then Log("conectando 2")
+ Printer1.Connect
+ Private cont As Int = 0
+ Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
+ Sleep(1000)
+ cont = cont + 1
+ If cont = 2 Then Printer1.Connect
+ If cont > 4 Then impresoraConectada = True
+ Loop
+ Sleep(500)
+ impresoraConectada = False
+ End If
+
+ TAMANO = 0
+ ESPACIO = 29
+ BLANCO = " "
+ Printer1.Justify = 0
+ Dim sDate, sTime As String
+ DateTime.DateFormat = "dd/MM/yyyy"
+ DateTime.TimeFormat = "HH:mm:ss"
+ sDate = DateTime.Date(DateTime.Now)
+ sTime = DateTime.Time(DateTime.Now)
+ Printer1.WriteString("Fecha: " &sDate & CRLF)
+ Printer1.WriteString("Hora: " &sTime & CRLF)
+ Printer1.WriteString("Ruta: " & l_ruta.Text & CRLF)
+ Printer1.WriteString("Usuario: " & Subs.dameUsuarioDeDB & CRLF)
+ Printer1.WriteString("----------LIQUIDACION----------" & CRLF)
+ Printer1.WriteString("--------------------------------" & CRLF)
+
+ Printer1.WriteString("Monto entregado: $" & NumberFormat2(L_MONTOE.Text,0,2,2,True) & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("Monto rechazado: $" & NumberFormat2(l_rechazo.Text,0,2,2,True) & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("Pagares cobrados: $" & NumberFormat2(l_pagarescobrados.Text,0,2,2,True) & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ If l_pagarescobrados.Text > 0 Then
+ Printer1.WriteString("--------------------------------" & CRLF)
+ Printer1.WriteString(" Cliente Abono" & CRLF)
+ Printer1.WriteString("--------------------------------" & CRLF)
+' Printer1.WriteString( CRLF)
+ Dim abonoscreditos As Cursor = Starter.skmt.ExecQuery("SELECT a_abono, length(a_abono) as L_abono , length(a_cliente) as L_cliente , a_cliente FROM ABONOS ORDER BY a_cliente")
+ For g = 0 To abonoscreditos.RowCount -1
+ abonoscreditos.Position = g
+
+ TAMANO = abonoscreditos.GetInt("L_abono") + TAMANO
+ ESPACIO = (ESPACIO - TAMANO)/2
+' Log(ESPACIO)
+ For j =0 To ESPACIO -1
+ BLANCO = " " & BLANCO
+ Next
+ Printer1.Justify = 0
+ Printer1.WriteString( abonoscreditos.GetString("a_cliente") & BLANCO)
+ Printer1.Justify = 1
+ Printer1.WriteString( NumberFormat2(abonoscreditos.GetString("a_abono"),0,2,2,True))
+ Printer1.WriteString( CRLF)
+ TAMANO = 0
+ ESPACIO = 29
+ BLANCO = " "
+ Printer1.Justify = 0
+ Next
+ Printer1.WriteString("--------------------------------" & CRLF)
+ Printer1.WriteString( CRLF)
+ End If
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("Pagares nuevos: $" & NumberFormat2(l_pagaresnuevos.Text,0,2,2,True) & CRLF)
+
+ If l_pagaresnuevos.Text > 0 Then
+ Printer1.WriteString("--------------------------------" & CRLF)
+ Printer1.WriteString(" Cliente Pagare" & CRLF)
+ Printer1.WriteString("--------------------------------" & CRLF)
+' Printer1.WriteString( CRLF)
+ Dim abonoscreditos As Cursor = Starter.skmt.ExecQuery("SELECT PA_MONTO, length(PA_MONTO) as L_PA_MONTO , length(PA_CLIENTE) as L_cliente , PA_CLIENTE FROM PAGARES ORDER BY PA_CLIENTE")
+ For g = 0 To abonoscreditos.RowCount -1
+ abonoscreditos.Position = g
+
+ TAMANO = abonoscreditos.GetInt("L_PA_MONTO") + TAMANO
+ ESPACIO = (ESPACIO - TAMANO)/2
+' Log(ESPACIO)
+ For j =0 To ESPACIO -1
+ BLANCO = " " & BLANCO
+ Next
+ Printer1.Justify = 0
+ Printer1.WriteString( abonoscreditos.GetString("PA_CLIENTE") & BLANCO)
+ Printer1.Justify = 1
+ Printer1.WriteString( NumberFormat2(abonoscreditos.GetString("PA_MONTO"),0,2,2,True))
+ Printer1.WriteString( CRLF)
+ TAMANO = 0
+ ESPACIO = 29
+ BLANCO = " "
+ Printer1.Justify = 0
+ Next
+ Printer1.WriteString("--------------------------------" & CRLF)
+ Printer1.WriteString( CRLF)
+ End If
+ Printer1.WriteString(" " & CRLF)
+ Dim abonoscreditosefe As Cursor = Starter.skmt.ExecQuery("SELECT SUM(IFNULL(a_abono,0)) AS ABONO FROM ABONOS WHERE TIPO_PAGO = 'EFECTIVO' ORDER BY a_cliente")
+ abonoscreditosefe.Position = 0
+ Dim abonoscreditostrans As Cursor = Starter.skmt.ExecQuery("SELECT SUM(IFNULL(a_abono,0)) AS ABONO FROM ABONOS WHERE TIPO_PAGO = 'TRANSFERENCIA' ORDER BY a_cliente")
+ abonoscreditostrans.Position = 0
+ Dim abonoscreditosche As Cursor = Starter.skmt.ExecQuery("SELECT SUM(IFNULL(a_abono,0)) AS ABONO FROM ABONOS WHERE TIPO_PAGO = 'CHEQUE' ORDER BY a_cliente")
+ abonoscreditosche.Position = 0
+ Log(NumberFormat2(abonoscreditosefe.GetDouble("ABONO"),0,2,2,False) )
+
+ Printer1.WriteString("Monto efectivo: $" & NumberFormat2((l_montoaliquidar.Text - abonoscreditosche.GetDouble("ABONO") - abonoscreditostrans.GetDouble("ABONO")),0,2,2,True) & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("Monto cheque: $" & NumberFormat2(abonoscreditosche.GetDouble("ABONO"),0,2,2,True) & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("Monto transferencia: $" & NumberFormat2(abonoscreditostrans.GetDouble("ABONO"),0,2,2,True) & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("Monto a liquidar: $" & NumberFormat2(l_montoaliquidar.Text,0,2,2,True) & CRLF)
+
+
+
+' Dim sumainv As Cursor = Starter.skmt.ExecQuery("SELECT SUM(HVD_CANT) AS CANTIDAD FROM HIST_VENTAS WHERE HVD_CODPROMO <> HVD_PROID")
+' sumainv.Position = 0
+'
+' Printer1.WriteString("------------------------------" & CRLF)
+' Printer1.WriteString("Total piezas: " & sumainv.GetString("CANTIDAD")& CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.Justify = 0
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Sleep(1000)
+ Printer1.DisConnect
+ ProgressDialogHide
+
+
+ Msgbox2Async("Deseas imprimir de nuevo el ticket?", "ATENCION","SI","", "NO",LoadBitmap(File.DirAssets,"alert2.png"), False)
+ Wait For Msgbox_Result (resultado As Int)
+ If resultado = DialogResponse.POSITIVE Then
+ imp_LIQUIDACION
+ Else
+
+ End If
+End Sub
+
+Private Sub connecta_LongClick
+ imp_LIQUIDACION
End Sub
\ No newline at end of file
diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal
index 10fa184..db937f6 100644
Binary files a/B4A/Files/cliente.bal and b/B4A/Files/cliente.bal differ
diff --git a/B4A/Files/login.bal b/B4A/Files/login.bal
index d8de9a4..b554739 100644
Binary files a/B4A/Files/login.bal and b/B4A/Files/login.bal differ
diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal
index d7bd71d..c04ca71 100644
Binary files a/B4A/Files/principal.bal and b/B4A/Files/principal.bal differ
diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas
index c4042e3..5364048 100644
--- a/B4A/Tracker.bas
+++ b/B4A/Tracker.bas
@@ -192,47 +192,116 @@ Public Sub StopFLP
End Sub
Sub flp_LocationChanged (Location1 As Location)
- Starter.trackerActividad = Subs.fechaKMT(DateTime.Now)
- UUGCoords = Location1
-' If Main.logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
- CallSub2(Starter, "GPS_LocationChanged", Location1)
-' CallSub2(gestion, "GPS_LocationChanged", Location1)
-' CallSubDelayed2(gestion, "GPS_LocationChanged", Location1)
+' Starter.trackerActividad = Subs.fechaKMT(DateTime.Now)
+' UUGCoords = Location1
+'' If Main.logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
+' CallSub2(Starter, "GPS_LocationChanged", Location1)
+'' CallSub2(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.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
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
-'///////
+' If Not(Starter.skmt.IsInitialized) Then Starter.skmt.Initialize(Starter.ruta,"kmt.db", True)
+' Try
+' 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))
+' B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
+' Catch
+' LogColor(LastException, Colors.Red)
+' 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)
+' Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude&"|"&B4XPages.MainPage.usuario&"|")
+' Log("Mandamos Ubicacion")
+' Log(FirebaseMessaging.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")
+
+ CallSub2(Starter, "GPS_LocationChanged", Location1)
+ CallSub2(B4XPages.MainPage.cliente, "GPS_LocationChanged", Location1)
+' CallSub2(gestion, "GPS_LocationChanged", Location1)
+ If B4XPages.MainPage.cliente.IsInitialized Then
+ CallSub2(B4XPages.GetPage("Cliente"), "GPS_LocationChanged", Location1)
End If
- DateTime.TimeFormat = origFormat 'Regresamos formato de fecha original
- 'Revisamos servicios
- Subs.monitor
+' CallSub2(nuevocliente, "GPS_LocationChanged", Location1)
+
+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
Sub CreateNotification (Body As String) As Notification 'ignore
diff --git a/B4A/barcodeGenerator.bas b/B4A/barcodeGenerator.bas
new file mode 100644
index 0000000..8c361f1
--- /dev/null
+++ b/B4A/barcodeGenerator.bas
@@ -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
\ No newline at end of file
diff --git a/B4A/guna_reparto.b4a b/B4A/guna_reparto.b4a
index 71d63ad..1c70036 100644
--- a/B4A/guna_reparto.b4a
+++ b/B4A/guna_reparto.b4a
@@ -210,8 +210,8 @@ Library22=sql
Library23=togglelibrary
Library24=xcustomlistview
Library25=xui
-Library26=zxing_scanner
-Library27=xui views
+Library26=xui views
+Library27=zxing_scanner
Library3=baqrcode
Library4=byteconverter
Library5=camera
@@ -219,47 +219,48 @@ Library6=compressstrings
Library7=core
Library8=fileprovider
Library9=fusedlocationprovider
-ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~'AddManifestText(~\n~'~\n~')~\n~'SetApplicationAttribute(android:icon, "@drawable/icon")~\n~'SetApplicationAttribute(android:label, "$LABEL$")~\n~'CreateResourceFromFile(Macro, Themes.LightTheme)~\n~''End of default text.~\n~'~\n~'''''' CAMBIA LA CLAVE API~\n~'AddApplicationText(~\n~'~\n~' ~\n~')~\n~'~\n~'CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~'SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~'AddManifestText()~\n~'AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~''AddManifestText()~\n~''AddManifestText()~\n~''AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~'AddManifestText()~\n~''/////////////// FLP y FBMessageing MOD Inicia /////////////////////~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~''CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~'SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~''/////////////// FLP y FBMessageing MOD Termina /////////////////////~\n~'~\n~''Si al cargar un mapa de google mande este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~'AddApplicationText()~\n~'~\n~''/////////////////////// App Updating ////////////////~\n~' AddManifestText(~\n~' )~\n~' AddApplicationText(~\n~' ~\n~' ~\n~' ~\n~' )~\n~' CreateResource(xml, provider_paths,~\n~' ~\n~' ~\n~' ~\n~' ~\n~' ~\n~' )~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'~\n~'AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~'AddPermission(android.permission.INTERNET)~\n~'AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.READ_PHONE_STATE)~\n~'AddPermission(android.permission.WAKE_LOCK)~\n~'CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~' ~\n~'SetApplicationAttribute(android:largeHeap, "true")~\n~'~\n~'AddManifestText(~\n~' ~\n~' )~\n~' AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)~\n~' SetApplicationAttribute(android:allowBackup, "false")~\n~' ~\n~' ~\n~' AddManifestText(~\n~' )~\n~' AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~~\n~~\n~~\n~~\n~~\n~~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~AddApplicationText(~\n~)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddApplicationText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~~\n~'/////////////////////// App Updating ////////////////~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~ ~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~)~\n~CreateResource(xml, provider_paths,~\n~~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddManifestText()~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~ ~\n~ 'Para que se registre para abrir bases de datos~\n~ AddActivityText(main,~\n~~\n~~\n~~\n~~\n~~\n~)~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~AddManifestText()~\n~~\n~
+ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~'AddManifestText(~\n~'~\n~')~\n~'SetApplicationAttribute(android:icon, "@drawable/icon")~\n~'SetApplicationAttribute(android:label, "$LABEL$")~\n~'CreateResourceFromFile(Macro, Themes.LightTheme)~\n~''End of default text.~\n~'~\n~'''''' CAMBIA LA CLAVE API~\n~'AddApplicationText(~\n~'~\n~' ~\n~')~\n~'~\n~'CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~'SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~'AddManifestText()~\n~'AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~''AddManifestText()~\n~''AddManifestText()~\n~''AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~'AddManifestText()~\n~''/////////////// FLP y FBMessageing MOD Inicia /////////////////////~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~''CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~'SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~''/////////////// FLP y FBMessageing MOD Termina /////////////////////~\n~'~\n~''Si al cargar un mapa de google mande este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~'AddApplicationText()~\n~'~\n~''/////////////////////// App Updating ////////////////~\n~' AddManifestText(~\n~' )~\n~' AddApplicationText(~\n~' ~\n~' ~\n~' ~\n~' )~\n~' CreateResource(xml, provider_paths,~\n~' ~\n~' ~\n~' ~\n~' ~\n~' ~\n~' )~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'~\n~'AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~'AddPermission(android.permission.INTERNET)~\n~'AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.READ_PHONE_STATE)~\n~'AddPermission(android.permission.WAKE_LOCK)~\n~'CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~' ~\n~'SetApplicationAttribute(android:largeHeap, "true")~\n~'~\n~'AddManifestText(~\n~' ~\n~' )~\n~' AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)~\n~' SetApplicationAttribute(android:allowBackup, "false")~\n~' ~\n~' ~\n~' AddManifestText(~\n~' )~\n~' AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~~\n~~\n~~\n~~\n~~\n~~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~AddApplicationText(~\n~)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddApplicationText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~~\n~'/////////////////////// App Updating ////////////////~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~ ~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~)~\n~CreateResource(xml, provider_paths,~\n~~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddManifestText()~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~ ~\n~ 'Para que se registre para abrir bases de datos~\n~ AddActivityText(main,~\n~~\n~~\n~~\n~~\n~~\n~)~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~AddManifestText()
Module1=appUpdater
-Module10=C_Foto
-Module11=C_Historico
-Module12=C_Mapas
-Module13=C_NoVenta
-Module14=C_NuevoCliente
-Module15=C_Pedidos
-Module16=C_Principal
-Module17=C_Productos
-Module18=C_tabulador
-Module19=C_TicketsDia
+Module10=C_DetalleVenta
+Module11=C_Foto
+Module12=C_Historico
+Module13=C_Mapas
+Module14=C_NoVenta
+Module15=C_NuevoCliente
+Module16=C_Pedidos
+Module17=C_Principal
+Module18=C_Productos
+Module19=C_tabulador
Module2=B4XMainPage
-Module20=C_UpdateAvailable
-Module21=CameraExClass
-Module22=DBRequestManager
-Module23=EscPosPrinter
-Module24=foto
-Module25=ManageExternalStorage
-Module26=MAPA_CLIENTE
-Module27=MAPA_RUTAS
-Module28=QRGenerator
-Module29=Starter
-Module3=BatteryUtilities
-Module30=Subs
-Module31=Tracker
-Module4=C_Buscar
-Module5=C_Cheklist
-Module6=C_Cliente
-Module7=C_Clientes
-Module8=C_Detalle_Promo
-Module9=C_DetalleVenta
+Module20=C_TicketsDia
+Module21=C_UpdateAvailable
+Module22=CameraExClass
+Module23=DBRequestManager
+Module24=EscPosPrinter
+Module25=foto
+Module26=ManageExternalStorage
+Module27=MAPA_CLIENTE
+Module28=MAPA_RUTAS
+Module29=QRGenerator
+Module3=barcodeGenerator
+Module30=Starter
+Module31=Subs
+Module32=Tracker
+Module4=BatteryUtilities
+Module5=C_Buscar
+Module6=C_Cheklist
+Module7=C_Cliente
+Module8=C_Clientes
+Module9=C_Detalle_Promo
NumberOfFiles=96
NumberOfLibraries=27
-NumberOfModules=31
+NumberOfModules=32
Version=12.8
@EndOfDesignText@
#Region Project Attributes
#ApplicationLabel: Guna Reparto
#VersionCode: 1
- #VersionName: 5.09.20
+ #VersionName: 5.10.16
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
diff --git a/B4A/guna_reparto.b4a.meta b/B4A/guna_reparto.b4a.meta
index fbe2a92..005b661 100644
--- a/B4A/guna_reparto.b4a.meta
+++ b/B4A/guna_reparto.b4a.meta
@@ -24,6 +24,7 @@ ModuleBookmarks29=
ModuleBookmarks3=
ModuleBookmarks30=
ModuleBookmarks31=
+ModuleBookmarks32=
ModuleBookmarks4=
ModuleBookmarks5=
ModuleBookmarks6=
@@ -56,6 +57,7 @@ ModuleBreakpoints29=
ModuleBreakpoints3=
ModuleBreakpoints30=
ModuleBreakpoints31=
+ModuleBreakpoints32=
ModuleBreakpoints4=
ModuleBreakpoints5=
ModuleBreakpoints6=
@@ -88,12 +90,13 @@ ModuleClosedNodes29=
ModuleClosedNodes3=
ModuleClosedNodes30=
ModuleClosedNodes31=
+ModuleClosedNodes32=
ModuleClosedNodes4=
ModuleClosedNodes5=
ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
-NavigationStack=C_Cliente,CheckBox1_CheckedChange,2000,6,Diseñador Visual,principal.bal,-100,1,C_Cliente,gest_Click,567,2,C_Principal,JobDone,1765,0,C_Principal,B4XPage_CloseRequest,1922,0,C_Principal,B_carga_Click,1918,0,C_Principal,connecta_Click,1938,0,B4XMainPage,i_engrane_Click,1742,1,appUpdater,Process_Globals,74,1,C_Clientes,caculaRutaGPS,719,2,C_Cliente,imprime_pagare,3355,1
+NavigationStack=C_Cliente,imprime_abonopagare2,2376,1,C_Cliente,imprime_cancelarpagare,3793,0,C_Cliente,imprime_pagare,3306,0,C_Principal,JobDone,1268,0,C_Principal,inventario_Click,2749,0,C_Principal,b_rechazos_Click,2316,0,Diseñador Visual,principal.bal,-100,1,C_Principal,imp_LIQUIDACION,3022,0,C_Principal,b_impresion_rec_Click,2910,0,C_Cliente,B_IMP_Click,1139,0,C_Cliente,HIST_LongClick,4490,0
SelectedBuild=0
-VisibleModules=2,16,4,5,6,7,9,30,29,27
+VisibleModules=2,17,5,6,7,8,10,31,30,28