- VERSION 5.03.08

- Se agregó codigo para la confirmacion de pagares mediante WhatsApp en Cliente.
- Se agregaron 270 segundos (4.5 minutos) al tiempo calculado en el ruteo de Clientes.
- Se hicieorn mas pequeños los números de los globitos en MAPAS_RUTAS, de 20 a 15.
- Se puso un toastMessage cuando las coordenadas del CEDIS están en CERO.
This commit is contained in:
2025-03-09 00:35:10 -06:00
parent 2c9cdf7a6b
commit 8043a7787d
12 changed files with 837 additions and 674 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -31,6 +31,7 @@ Sub Class_Globals
Private b_limpiarRuta As Button
Dim rutaGenerada As Boolean = False
Dim rutaacambiar As String
Dim mostrarProgressDialog As Boolean
End Sub
'You can add more parameters here.
@@ -100,7 +101,7 @@ Sub B4XPage_Appear
Subs.centraEtiqueta(l_rutaInfo, Root.Width)
Subs.centraListView(ListView1, p_colonia.Width)
ListView1.Height = p_colonia.Height * 0.70
Subs.centraEtiqueta(lfila, Root.Width)
Subs.centraEtiqueta(lfila, Root.Width + (b_getRutaInfo.Width / 2))
b_getRutaInfo.Visible = True
b_getRutaInfo.BringToFront
If Starter.cedisLocation.Latitude = "0" Then
@@ -113,9 +114,12 @@ Sub B4XPage_Appear
End If
End If
Log(Starter.cedisLocation)
If mostrarProgressDialog = True Then
ProgressDialogShow2("Calculando distancia y tiempo, un momento por favor.", False)
mostrarProgressDialog = False
End If
End Sub
Private Sub B4XPage_CloseRequest As ResumableSub
' BACK key pressed
'Return True to close, False to cancel
@@ -244,7 +248,7 @@ End Sub
Sub BUSCA_TextChanged (Old As String, New As String)
q_buscar = "%" & busca.Text & "%"
c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where CAT_CL_NOMBRE like ? and gestion = 0 AND CAT_CL_RUTA <> 1000 order by CAT_CL_CODIGO ", Array As String(q_buscar))
c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where CAT_CL_NOMBRE like ? and gestion = 0 AND CAT_CL_RUTA <> 1000 order by CAT_CL_CODIGO ", Array As String(q_buscar))
ListView1.Clear
lfila.text = "Nombre y Calle"
Subs.SetDivider(ListView1, Colors.Blue, 2)
@@ -278,6 +282,7 @@ Sub distanciaEntreCoords(id As String, coords1 As String, coords2 As String) As
Dim j As HttpJob
j.Initialize("", Me)
j.Download("https://router.project-osrm.org/route/v1/driving/"&coords1&";"&coords2&"?overview=false")
Log(("https://router.project-osrm.org/route/v1/driving/"&coords1&";"&coords2&"?overview=false"))
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
Dim jp As JSONParser
@@ -646,7 +651,7 @@ Sub caculaRutaGPS(coords As List, agregarActual As Boolean)
For i = 0 To coords.Size - 1
Private ti As Map = coords.Get(i)
Starter.skmt.ExecNonQuery($"update kmt_info set SECUENCIA = ${ti.Get("pos")} where CAT_CL_CODIGO = '${ti.Get("id").As(String).SubString(1)}'"$) ' Ponemos la secuencia con el orden del ruteo para poder verla en el mapa.
Starter.skmt.ExecNonQuery($"insert into waypoints (codigo, indice) values ('${ti.Get("id").As(String).SubString(1)}', '${ti.Get("pos")}')"$)
Starter.skmt.ExecNonQuery($"insert into waypoints (codigo, indice) values ('${ti.Get("id").As(String).SubString(1)}', '${ti.Get("pos")}')"$)
Next
c = Starter.skmt.ExecQuery("select codigo, indice, CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_NOEXT, CAT_CL_LAT, CAT_CL_LONG from waypoints inner join kmt_info on waypoints.codigo = kmt_info.CAT_CL_CODIGO where gestion = 0 AND CAT_CL_RUTA <> 1000 order by indice")
If c.RowCount > 0 Then 'Ya hay waypoints en la base de datos.
@@ -674,6 +679,9 @@ Sub caculaRutaGPS(coords As List, agregarActual As Boolean)
Private pri As String = $"${primerLon},${primerLat}"$
Private ult As String = $"${ultimaLon},${ultimaLat}"$
Private ced As String = Starter.cedisLocation.Longitude & "," & Starter.cedisLocation.Latitude
If Starter.cedisLocation.Longitude = 0 Or Starter.cedisLocation.Latitude = 0 Then
ToastMessageShow("Las coordenadas del CEDIS NO deben estar en CERO", True)
End If
Private ubiActual As String = Starter.inicioLon & "," & Starter.inicioLat
Wait For(distanciaEntreCoords("aaaa", pri, ubiActual)) Complete (r As List)
Log("DistToPrimero: " & r)
@@ -681,12 +689,13 @@ Sub caculaRutaGPS(coords As List, agregarActual As Boolean)
Wait For(distanciaEntreCoords("aaaa", ult, ced)) Complete (r As List)
Log("DistToUltimo: " & r)
Private DistToUltimo As String = NumberFormat2((r.Get(1)/1000), 1, 2, 0, True)
duration = duration + (270 * puntos) ' Agregamoms 4.5 minutos por parada/tienda - 270 segundos = 4.5 minutos
Log($"Distancia total: $1.1{distance/1000} kms, tiempo aprox: $1.1{duration/60} mins. ($1.1{duration/60/60} hrs)"$)
l_rutaInfo.Text = $"Actual a primer tienda: ${distToPrimero} kms
Distancia: $1.1{distance/1000} kms, tiempo aprox: 5.8 hrs${CRLF}Visitas restantes: ${puntos + 1}
Última tienda a CEDIS: 1.2 kms"$
Distancia: $1.1{distance/1000} kms, tiempo aprox: $1.1{duration/60/60} hrs${CRLF}Visitas restantes: ${puntos + 1}
Última tienda a CEDIS: ${DistToUltimo} kms"$
' Distancia: $1.1{distance/1000} kms, tiempo aprox: $1.1{duration/60/60} hrs${CRLF}Visitas restantes: ${puntos - 1}
' Última tienda a CEDIS: ${DistToUltimo} kms"$
Log($"Última tienda a CEDIS: ${DistToUltimo} kms"$)
l_rutaInfo.Width = Root.Width * 0.9
Subs.centraEtiqueta(l_rutaInfo, Root.Width)
l_rutaInfo.Visible = True

View File

@@ -88,7 +88,6 @@ End Sub
Sub B4XPage_Appear
Subs.centraPanel(p_principal, Root.Width)
' b_guardar.Visible = False
' Titulo.Left = Round(p_principal.Width/2)-(Titulo.Width/2)
L_CANT.Text =""
L_TOTAL.Text=""
@@ -107,10 +106,8 @@ Sub B4XPage_Appear
' Log("RC1:"&c.RowCount)
If c.RowCount>0 Then
' Log("Usamos HV")
For i=0 To c.RowCount -1
c.Position=i
Private c4 As Cursor = Starter.skmt.ExecQuery($"SELECT IFNULL(PE_CANT,0) AS PE_CANT FROM PEDIDO WHERE PE_PROID = '${c.GetString("HVD_PROID")}' AND PE_CLIENTEOR IN (SELECT CUENTA FROM CUENTAA) AND CONSECUTIVO = '${c.GetString("CONSECUTIVO")}'"$)
If c4.RowCount > 0 Then
c4.Position = 0
@@ -118,7 +115,6 @@ Sub B4XPage_Appear
Else
cantres = 0
End If
If c.GetString("BCAJAS") = "0" Then
If c.GetString("HVD_CANT") <> c.GetString("HVD_RECHAZOCANT") Then
'Traemos cantidad de hvd2
@@ -180,10 +176,8 @@ Sub B4XPage_Appear
End If
End If
Next
' cuentaProds("")
End If
Private c3 As Cursor=Starter.skmt.ExecQuery("Select * from PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
If c3.RowCount>0 Then
For i= 0 To c3.RowCount -1
@@ -203,10 +197,7 @@ Sub B4XPage_Appear
End If
Next
End If
Private vc As Cursor = Starter.skmt.ExecQuery($"select HVD_PROID, HVD_CANT,HVD_COSTO_TOT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT from HIST_VENTAS where BCAJAS = 0 and HVD_CODPROMO ='${Subs.traealmacen}' and HVD_CLIENTE in (select cuenta from cuentaa)"$)
Private Cuenta As String = 0
Private arti As String = 0
If vc.RowCount > 0 Then
@@ -231,7 +222,6 @@ Sub B4XPage_Appear
Next
End If
' Log(Cuenta)
Private vc2 As Cursor = Starter.skmt.ExecQuery("select HVD_PROID, HVD_CANT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT, CANTC,HVD_COSTO_TOT from HIST_VENTAS where HVD_CLIENTE in (select cuenta from cuentaa) AND BCAJAS = 1")
Private Cuenta1 As String = 0
Private arti1 As String = 0
@@ -248,14 +238,10 @@ Sub B4XPage_Appear
Next
End If
' Log(Cuenta1)
Private vc4 As Cursor = Starter.skmt.ExecQuery($"select HVD_PROID, HVD_CANT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT, CANTC,HVD_COSTO_TOT, HVD_RECHAZO, HVD_CODPROMO from HIST_VENTAS where HVD_CLIENTE in (select cuenta from cuentaa) AND BCAJAS = 0 and HVD_CODPROMO <> '${Subs.traeAlmacen}'"$)
Private Cuenta2 As String = 0
Private arti2 As String = 0
If vc4.RowCount > 0 Then
For i = 0 To vc4.RowCount - 1
vc4.Position = i
If vc4.GetString("HVD_PROID") <> vc4.GetString("HVD_CODPROMO") Then
@@ -275,10 +261,6 @@ Sub B4XPage_Appear
Next
End If
Private c4 As Cursor = Starter.skmt.ExecQuery($"SELECT IFNULL(PE_CANT,0) AS PE_CANT, iFNULL(PE_COSTO_TOT,0) AS PE_COSTO_TOT FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA)"$)
Private Cuenta3 As String = 0
Private arti3 As String = 0
@@ -289,7 +271,6 @@ Sub B4XPage_Appear
Cuenta3 = Cuenta3 + c4.GetString("PE_COSTO_TOT")
Next
End If
If Cuenta < 0 Then
Cuenta = 0
End If
@@ -302,7 +283,6 @@ Sub B4XPage_Appear
If Cuenta3 < 0 Then
Cuenta = 0
End If
If arti < 0 Then
arti = 0
End If
@@ -315,7 +295,6 @@ Sub B4XPage_Appear
If arti3 < 0 Then
arti = 0
End If
Log(Cuenta&","&Cuenta1&","&Cuenta2&","&Cuenta3)
Log(arti&","&arti1&","&arti2&","&arti3)
If Cuenta + Cuenta1 + Cuenta2 + Cuenta3 < 0 Then
@@ -328,8 +307,6 @@ 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)
@@ -485,7 +462,6 @@ Sub CreateListItem(Text As String, precioU As String, inv As Int, inv2 As Int, W
l_pCant.Text = inv
' et_pCant.Text = inv
' et_pCant.BringToFront
l_pCant.BringToFront
et_pCant.SendToBack
p_botMasMenC.Visible = False
@@ -517,7 +493,6 @@ Sub CreateListItem2(Text As String, precioU As String, inv As Int, inv2 As Int,
l_pCantC.Text = NumberFormat2(inv/Subs.traeConversion(prodId),0,0,0,False)
' et_pCant.Text = inv
' et_pCant.BringToFront
l_pCantC.BringToFront
et_pCantC.SendToBack
p_botMasMen.Visible = False
@@ -571,21 +546,15 @@ Sub b_prodMenos_Click
Starter.skmt.ExecNonQuery($"delete from PEDIDO where PE_PROID = '${esteTag.Get(2)}' and PE_CLIENTE in (Select CUENTA from cuentaa) AND CONSECUTIVO = '${esteTag.Get(8)}'"$)
End If
End If
End If
B4XPage_Appear
Else
If esteTag.Get(5) = esteTag.Get(6) Then
If laCant.Text > 0 Then
If esteTag.Get(3) <> Subs.traeAlmacen Then 'Si es PROMO entonces ...
Private c2 As Cursor =Starter.skmt.ExecQuery($"select HVD_RECHAZO FROM HIST_VENTAS WHERE HVD_PROID = '${esteTag.Get(2)}' AND HVD_CLIENTE IN (Select CUENTA from cuentaa) AND CONSECUTIVO = '${esteTag.Get(8)}'"$)
c2.Position = 0
If c2.GetString("HVD_RECHAZO") = "0" Then
Log("ES PROMO")
Log(esteTag.Get(3))
result = Msgbox2("Si se modifica una promoción, la promoción se rompe y solo quedarán los productos sueltos, ¿seguro que desea continuar?","Modificar Promoción", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
@@ -627,7 +596,6 @@ Sub b_prodMenos_Click
End If
End If
Else
If laCant.Text = "" Then laCant.Text = 0
laCant.Text = $"$1.0{laCant.Text-1}"$
If laCant.Text < 0 Then laCant.Text = 0
@@ -684,7 +652,6 @@ Sub b_prodMas_Click
Dim esteTag As List = Regex.Split("\|", laCant.Tag)
Log("LC_TEXT:"&laCant.Text&"|LC_TAG:"&laCant.Tag&"|ET:"&esteTag)
If laCant.Text = "" Then laCant.Text = 0
Private maxProds = esteTag.Get(1) + esteTag.Get(4) 'Prods disponibles + prods comprados
LogColor($"++++++++++++++++++++++++++ ${esteTag}"$, Colors.Green)
@@ -702,18 +669,13 @@ Sub b_prodMas_Click
'*'${minimoadesc}')
minimoadesc = "1"
If esteTag.Get(7) <> "1" Then
If esteTag.Get(5) = esteTag.Get(6) Then
If laCant.Text + 1 <= maxProds Then
Log($"NuevaCant = ${laCant.Text + 1}"$)
laCant.Text = $"$1.0{laCant.Text + 1}"$
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - 1 where cat_gp_id = ?", Array As Object(esteTag.Get(2)))
'checar este por si las dudas
Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 1, HVD_RECHAZOCANT = HVD_RECHAZOCANT - (1*'${minimoadesc}') WHERE HVD_PROID = '${esteTag.Get(2)}' and HVD_cliente in (Select CUENTA from cuentaa) AND CONSECUTIVO = '${esteTag.Get(8)}'"$)
Subs.prodVenta(esteTag.Get(5), esteTag.Get(2))
' Private cym As Map = Subs.traemosCantYMonto(clv_pedido)
' L_CANT.Text = cym.Get("cantidad")
@@ -722,7 +684,6 @@ Sub b_prodMas_Click
B4XPage_Appear
End If
Else
If laCant.Text + 1 <= maxProds Then
Log($"NuevaCant = ${laCant.Text + 1}"$)
laCant.Text = $"$1.0{laCant.Text + 1}"$
@@ -743,8 +704,6 @@ Sub b_prodMas_Click
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO(PE_PROID,PE_PRONOMBRE,PE_CANT,PE_CLIENTEOR,PE_CLIENTE,PE_COSTOU,PE_COSTO_TOT,PE_CAJAS,PE_BCAJAS,CONSECUTIVO) VALUES (?,?,?,?,?,?,?,0,0,?)", Array As String(esteTag.Get(2),c2.GetString("CAT_GP_NOMBRE"),1*minimoadesc,esteTag.Get(5),Subs.traeCliente,c2.GetString("CAT_GP_PRECIO"),c2.GetString("CAT_GP_PRECIO"),esteTag.Get(8)))
End If
End If
Subs.prodVenta(esteTag.Get(5), esteTag.Get(2))
' Private cym As Map = Subs.traemosCantYMonto(clv_pedido)
' L_CANT.Text = cym.Get("cantidad")
@@ -752,7 +711,6 @@ Sub b_prodMas_Click
' cuentaProds("+")
B4XPage_Appear
End If
End If
End If
' Dim preciou As Float = esteTag.Get(0)/esteTag.Get(1)
@@ -930,16 +888,12 @@ Sub cuentaProds(accion As String)
'
' End If
' End If
'
'
'
End Sub
Private Sub b_guardar_Click
End Sub
Private Sub l_pCant_Click
End Sub
@@ -972,16 +926,12 @@ Private Sub b_prodMasC_Click
' l_pCantC.Tag = Round2(precioU,2)&"|"&inv&"|"&prodId&"|"&promo&"|"&inv2&"|"&cliente_original
If esteTag.Get(7) <> "1" Then
If laCantc.Text + 1 <= maxProds Then
Log($"NuevaCant = ${laCantc.Text + 1}"$)
laCantc.Text = $"$1.0{laCantc.Text + 1}"$
Log(laCantc.Text)
Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 1, HVD_RECHAZOCANT = IFNULL(HVD_RECHAZOCANT,0) -(1 * ${Subs.traeConversion(esteTag.Get(2))}) WHERE HVD_PROID = '${esteTag.Get(2)}' and HVD_cliente in (Select CUENTA from cuentaa) AND CONSECUTIVO = '${esteTag.Get(8)}'"$)
' Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 1, HVD_RECHAZOCANT = HVD_RECHAZOCANT - 1 WHERE HVD_PROID = '${esteTag.Get(2)}' and HVD_cliente in (Select CUENTA from cuentaa)"$)
' Subs.prodVenta(esteTag.Get(5), esteTag.Get(2))
' Private cym As Map = Subs.traemosCantYMonto(clv_pedido)
' L_CANT.Text = cym.Get("cantidad")
@@ -1023,12 +973,8 @@ Private Sub b_prodMenosC_Click
laCantc.Text = laCantc.Text - 1
If laCantc.Text < 0 Then laCantc.Text = 0
B4XPage_Appear
Else
If esteTag.Get(5) = esteTag.Get(6) Then
If laCantc.Text > 0 Then
Log("entre al if o algo asi ")
If laCantc.Text = "" Then laCantc.Text = 0
@@ -1038,13 +984,9 @@ Private Sub b_prodMenosC_Click
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = (cat_gp_almacen + (1 * ?)) where cat_gp_id = ?", Array As Object(esteTag.Get(2), Subs.traeConversion(esteTag.Get(2))))
B4XPage_Appear
Else If laCantc.Text = 0 Then
End If
Else
If laCantc.Text > 0 Then
' Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 1, HVD_RECHAZOCANT = (IFNULL(HVD_RECHAZOCANT,0) +(1 * ${Subs.traeConversion(esteTag.Get(2))})) WHERE HVD_PROID = '${esteTag.Get(2)}' and HVD_cliente = '${esteTag.Get(6)}'"$)
Private c3 As Cursor = Starter.skmt.ExecQuery2("SELECT PE_CAJAS FROM PEDIDO WHERE PE_PROID = ? AND PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA) and CONSECUTIVO = ? ", Array As String(esteTag.Get(2),esteTag.Get(8)))
If c3.RowCount > 0 Then
@@ -1063,9 +1005,7 @@ Private Sub b_prodMenosC_Click
B4XPage_Appear
' Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = (cat_gp_almacen + (1 * ?)) where cat_gp_id = ?", Array As Object(esteTag.Get(2), Subs.traeConversion(esteTag.Get(2))))
Else If laCantc.Text = 0 Then
End If
End If
End If
Dim preciou As Float = esteTag.Get(0)/esteTag.Get(1)
@@ -1084,8 +1024,6 @@ Private Sub b_revversar_Click
Else
MsgboxAsync("Hay productos que ya se vendieron, no se puede regresar la venta","Atención")
End If
End Sub
Sub Printer1_Connected (Success As Boolean)
@@ -1161,8 +1099,6 @@ Sub StartPrinter
End Sub
Private Sub B_IMP_Click
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
@@ -1170,8 +1106,6 @@ Private Sub B_IMP_Click
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
c.Close
ProgressDialogShow("Imprimiendo, un momento ...")
Printer1.DisConnect
If Not(Printer1.IsConnected) Then
@@ -1201,7 +1135,6 @@ Private Sub B_IMP_Click
Sleep(500)
impresoraConectada = False
End If
TAMANO = 0
ESPACIO = 28
BLANCO = " "
@@ -1225,10 +1158,7 @@ Private Sub B_IMP_Click
c = Starter.skmt.ExecQuery("SELECT * FROM HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
If c.RowCount > 0 Then
Printer1.WriteString("------------Picking------------" & CRLF)
Printer1.WriteString("" & CRLF)
Printer1.WriteString("------------------------------" & CRLF)
' aqui es donde esta el pedo de julieta de los descuentos quitar el precio2 pero meter un if para saber si es ruta especial o es normal o que show.
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, HVD_RECHAZO FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_PROID"$)
@@ -1237,10 +1167,7 @@ Private Sub B_IMP_Click
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)
@@ -1266,9 +1193,7 @@ Private Sub B_IMP_Click
' TAMANO = 0
' ESPACIO = 29
' BLANCO = " "
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)
@@ -1314,26 +1239,18 @@ Private Sub B_IMP_Click
For i=0 To S.RowCount -1
S.Position=i
If s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT") > 0 Then
If s.GetString("HVD_CODPROMO") <> Subs.traeAlmacen Then
Printer1.Justify = 0
If s.GetString("HVD_CODPROMO") = s.GetString("HVD_PROID") Then
Printer1.WriteString("* "&s.GetString("HVD_PRONOMBRE") & CRLF)
Else
Printer1.WriteString((s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT"))&" "&s.GetString("HVD_PRONOMBRE") & 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
'
'
' Private ptot As String = NumberFormat2((punit*s.GetString("HVD_CANT")),0,2,2,False)
' TAMANO = ptot.Length + TAMANO
'
'
' ESPACIO = (ESPACIO - TAMANO)/2
' Log(ESPACIO)
' For E=0 To ESPACIO -1
@@ -1350,7 +1267,6 @@ Private Sub B_IMP_Click
' BLANCO = " "
Printer1.Justify = 0
Else
End If
End If
Next
@@ -1361,11 +1277,7 @@ Private Sub B_IMP_Click
Printer1.WriteString(" " & CRLF)
Sleep(1000)
Printer1.DisConnect
ProgressDialogHide
' Guardado
End Sub

View File

@@ -84,7 +84,6 @@ Sub Class_Globals
Private p_principal As Panel
Dim ime As IME
Private b_tabulador As Button
Private l_rutasP As Label
Private l_rechazo As Label
Private Label9 As Label
@@ -95,7 +94,6 @@ Sub Class_Globals
Private b_regreso As Button
Private lv_prod_Prin As ListView
Private b_venta_emp As Button
Private ListView2 As ListView
Private Button1 As Button
Private P_PAGARES As Panel
@@ -146,10 +144,10 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' l_aLiquidar.Text = c.GetString("MONTO_DIA")
' l_cuantosc.Text = c.GetString("CLIENTES_DIA")
' l_cuantosn.Text = b.GetString("CUANTOS")
'' drop = c.GetString("MONTO_DIA") / c.GetString("CLIENTES_DIA")
'' drop = c.GetString("MONTO_DIA") / c.GetString("CLIENTES_DIA")
'' l_montoSalida.Text = Round2(drop,2)
'' efectiva = c.GetString("CLIENTES_DIA") / e.GetString("POR_VISITAR")
'' l_efectiva.text = Round2(efectiva * 100, 2)
'' efectiva = c.GetString("CLIENTES_DIA") / e.GetString("POR_VISITAR")
'' l_efectiva.text = Round2(efectiva * 100, 2)
' l_ctast.Text = d.GetString("TOTAL_VISITAR")
' l_porvisitar.Text = e.GetString("POR_VISITAR")
' b.Close
@@ -284,7 +282,7 @@ Sub B4XPage_Appear
' If F4.GetString("CUANTOS") > 0 Then
' f3=Starter.skmt.execqUery("select sum(pe_costo_tot) as MONTO_VENTA FROM PEDIDO")
' f3.Position=0
'' Log(MONTO_REC_DIA & " - " & f3.GetString("MONTO_VENTA"))
'' Log(MONTO_REC_DIA & " - " & f3.GetString("MONTO_VENTA"))
' l_efectiva.text = to_number_vb(MONTO_REC_DIA - f3.GetString("MONTO_VENTA")) & "..."
' f3.Close
' Else
@@ -315,11 +313,11 @@ Sub B4XPage_Appear
' c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES where CAT_VA_DESCRIPCION = ? ", Array As String("CAMBIOS"))
' c.Position = 0
' If c.GetString("CUANTOS") = 0 Then
'' cambios.Text = 0
'' cambios.Text = 0
' Else
' B=Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'CAMBIOS'")
' B.Position = 0
'' cambios.Text = b.GetString("CAT_VA_VALOR")
'' cambios.Text = b.GetString("CAT_VA_VALOR")
' b.Close
' End If
c.Close
@@ -398,8 +396,7 @@ Sub B4XPage_Appear
Next
End If
cancelrecha.Close
''' RECHAZO - VENTA
Private r5 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(HVD_COSTO_TOT,0) AS HVD_COSTO_TOT, IFNULL(HVD_CANT,0) AS HVD_CANT, IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_PROID, HVD_CLIENTE, CONSECUTIVO from HIST_VENTAS where HVD_RECHAZO = '1' and BCAJAS = '0' ORDER BY HVD_PROID "$)
@@ -410,13 +407,11 @@ Sub B4XPage_Appear
Private r6 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(SUM(PE_CANT),0) AS PE_CANT from PEDIDO where PE_CLIENTEOR = '${r5.GetString("HVD_CLIENTE")}' AND PE_PROID = '${r5.GetString("HVD_PROID")}' AND CONSECUTIVO = '${r5.GetString("CONSECUTIVO")}' "$)
Dim totalcantped As String
If r6.RowCount > 0 Then
r6.Position = 0
r6.Position = 0
totalcantped = r6.GetString("PE_CANT")
Else
totalcantped = 0
End If
Log(r5.GetString("HVD_RECHAZOCANT") &" - "& totalcantped)
rescant = rescant + ((r5.GetString("HVD_COSTO_TOT")/(r5.GetString("HVD_CANT")))*((r5.GetString("HVD_RECHAZOCANT") - totalcantped)))
' Log(rescant)
@@ -424,13 +419,10 @@ Sub B4XPage_Appear
Next
End If
If rescant = "NaN" Then rescant = 0
LogColor(rescant,Colors.Red)
' LogColor(rescant,Colors.Red)
r5.Close
Private r5 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(HVD_COSTO_TOT,0) AS HVD_COSTO_TOT, IFNULL(HVD_CANT,0) AS HVD_CANT,IFNULL(CANTC,0) AS CANTC, IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_PROID, HVD_CLIENTE, CONSECUTIVO from HIST_VENTAS where HVD_RECHAZO = '1' and BCAJAS = '1' "$)
' Private r5 As Cursor = Starter.skmt.ExecQuery($"select * from HIST_VENTAS where HVD_RECHAZO = '1' and BCAJAS = '1' "$)
Private rescant2 As Double = 0
@@ -449,11 +441,9 @@ Sub B4XPage_Appear
Log(rescant2)
r5.Close
'''FIN RECHAZO - VENTA
'''RECHAZO
Private r5r As Cursor = Starter.skmt.ExecQuery($"select IFNULL(HVD_COSTO_TOT,0) AS HVD_COSTO_TOT, IFNULL(HVD_CANT,0) AS HVD_CANT, IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_PROID, HVD_CLIENTE, CONSECUTIVO from HIST_VENTAS where HVD_RECHAZO = '1' and BCAJAS = '0' "$)
Private rescantr As String = 0
If r5r.RowCount > 0 Then
For j4r = 0 To r5r.RowCount -1
@@ -470,12 +460,11 @@ Sub B4XPage_Appear
' LogColor(rescant,Colors.Red)
r5r.Close
Log(rescantr)
' Log(rescantr)
Private r5r As Cursor = Starter.skmt.ExecQuery($"select IFNULL(HVD_COSTO_TOT,0) AS HVD_COSTO_TOT, IFNULL(HVD_CANT,0) AS HVD_CANT,IFNULL(CANTC,0) AS CANTC, IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_PROID, HVD_CLIENTE, CONSECUTIVO from HIST_VENTAS where HVD_RECHAZO = '1' and BCAJAS = '1' "$)
' Private r5 As Cursor = Starter.skmt.ExecQuery($"select * from HIST_VENTAS where HVD_RECHAZO = '1' and BCAJAS = '1' "$)
Private rescant2r As String = 0
If r5r.RowCount > 0 Then
For j5r = 0 To r5r.RowCount -1
@@ -496,7 +485,6 @@ Sub B4XPage_Appear
'''' FIN RECHAZO
'''''
' Private r5 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(SUM(HVD_COSTO_TOT),0) AS HVD_COSTO_TOT from HIST_VENTAS where HVD_RECHAZO = '0' and BCAJAS = '0' "$)
' Private rescant3 As Double = 0
' If r5.RowCount > 0 Then
@@ -508,25 +496,21 @@ Sub B4XPage_Appear
' r5.Close
Private r55 As Cursor = Starter.skmt.ExecQuery($"select HVD_COSTO_TOT from HIST_VENTAS where HVD_RECHAZO = '0' and BCAJAS = '0' "$)
Private rescant3 As Double
Private rescant3 As Double
If r55.RowCount > 0 Then
For r75 = 0 To r55.RowCount -1
r55.Position = r75
rescant3 = rescant3 + r55.GetString("HVD_COSTO_TOT")
rescant3 = NumberFormat2(rescant3, 0, 2, 2, False)
Next
End If
Log(rescant3)
' Log(rescant3)
r55.Close
Private r5 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(SUM(HVD_COSTO_TOT),0) AS HVD_COSTO_TOT from HIST_VENTAS where HVD_RECHAZO = '0' and BCAJAS = '1' "$)
Private rescant4 As Double
If r5.RowCount > 0 Then
r5.Position = 0
r5.Position = 0
rescant4 = r5.GetString("HVD_COSTO_TOT")
End If
Log(rescant4)
@@ -535,14 +519,11 @@ Sub B4XPage_Appear
Private r5 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(SUM(PE_COSTO_TOT),0) AS PE_COSTO_TOT from PEDIDO "$)
Private rescant5 As Double
If r5.RowCount > 0 Then
r5.Position = 0
r5.Position = 0
rescant5 = r5.GetString("PE_COSTO_TOT")
End If
Log(rescant5)
r5.Close
'''
Private r5 As Cursor = Starter.skmt.ExecQuery($"select IFNULL(HVD_COSTO_TOT,0) AS HVD_COSTO_TOT, IFNULL(HVD_CANT,0) AS HVD_CANT, IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_PROID, HVD_CLIENTE, CONSECUTIVO from HIST_VENTAS where HVD_RECHAZO = '1' and BCAJAS = '0' "$)
Private rescant6 As Double
@@ -577,12 +558,8 @@ Sub B4XPage_Appear
If rescant7 = "NaN" Then rescant7 = 0
Log(rescant7)
r5.Close
l_rechazo.text = NumberFormat2((rescant + rescant2),0,2,2,False)
L_MONTOE.Text = NumberFormat2((rescant3 + rescant4 + rescant5 + rescant6 + rescant7),0,2,2,False)
B4XPages.MainPage.clientesVisitados = L_MONTOE.Text
B4XPages.MainPage.clientesVenta = l_cuantosc.Text
B4XPages.MainPage.clientesRechazo = l_cuantosn.Text
@@ -593,14 +570,12 @@ Sub B4XPage_Appear
B4XPages.MainPage.rechazos = l_cuantosn.text
B4XPages.MainPage.montoEntregado = L_MONTOE.text
B4XPages.MainPage.montoRechazado = l_rechazo.text
reqManager.Initialize(Me, B4XPages.MainPage.server)
' LogColor($"ReqServer = ${B4XPages.MainPage.server}"$, Colors.red)
If l_ctast.Text = 0 And l_porvisitar.Text <> 0 Then
Label9.Visible = True
L_MONTOE.Visible = True
'' hacer validacion su hay rechazo
' c=Starter.skmt.ExecQuery("select * from HIST_VENTAS WHERE hvd_rechazo <> 2 and HVD_RECHAZOCANT > 0 order by HVD_CODPROMO desc, HVD_PRONOMBRE asc")
' If c.RowCount > 0 Then
@@ -616,21 +591,16 @@ Sub B4XPage_Appear
End If
' Label9.Visible = True
' L_MONTOE.Visible = True
' If l_ctast.Text = 0 Then
'
' Else
' StartActivity(MAPA_RUTAS)
' End If
' checachek
End Sub
Sub checachek
b = Starter.skmt.ExecQuery("SELECT CHECADO FROM CHECADO_CHECK")
If b.RowCount > 0 Then
b = Starter.skmt.ExecQuery("SELECT CHECADO FROM CHECADO_CHECK")
If b.RowCount > 0 Then
b.Position = 0
If b.GetString("CHECADO") = 0 Then
b_check.Visible = True
@@ -638,7 +608,7 @@ Sub checachek
b_check.Visible =False
End If
b.Close
End If
End If
End Sub
Sub IsConnectedToInternet As Boolean 'ignore
@@ -666,12 +636,10 @@ End Sub
Sub trabajar_Click
If b_check.Visible = True Then
MsgboxAsync("Favor de hacer el checklist.","Atención")
MsgboxAsync("Favor de hacer el checklist.","Atención")
Else
B4XPages.ShowPage("Clientes")
B4XPages.ShowPage("Clientes")
End If
End Sub
Sub Subir_Click
@@ -686,7 +654,7 @@ Sub Subir_Click
' Starter.skmt.ExecNonQuery2("INSERT INTO BLOCKENVIO(ENVIADO) VALUES (?)", Array As Object (1))
' envioinfo
' Else
envioinfo
envioinfo
' End If
' c.Close
@@ -697,9 +665,6 @@ Sub Subir_Click
End Sub
Sub envioinfo
' NOVENTA
c = Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO, NV_REPROGRAMAR FROM NOVENTA")
D=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
@@ -718,8 +683,7 @@ Sub envioinfo
d.Position=0
cuantos_noventa = D.GetString("CUANTOS_NOVENTA")
d.Close
'PAGARES.
Dim pa As Cursor =Starter.skmt.ExecQuery("select PA_ALMACEN,PA_RUTA_REP,PA_RUTAPREV,PA_FECHA_PREV,PA_CAPTURA,PA_MONTO,PA_USUARIO,PA_CLIENTE,IFNULL(PA_CANCELADO,0) AS PA_CANCELADO from PAGARES")
If pa.RowCount > 0 Then
@@ -736,19 +700,15 @@ Sub envioinfo
Dim fechaano As String = fechaenvio1(2).SubString(2)
Dim fechareal As String = fechaenvio1(0)&"/"&fechaenvio1(1)&"/"&fechaano
' Log(fechareal)
Dim fechacap() As String
fechacap = Regex.Split("/",pa.GetString("PA_CAPTURA"))
Dim fechacapano As String = fechacap(2).SubString(2)
Dim fechacapreal As String = fechacap(0)&"/"&fechacap(1)&"/"&fechacapano
If pa.GetString("PA_CANCELADO") = "2" Then
cmd.Parameters = Array As Object(pa.GetString("PA_CLIENTE"),pa.GetString("PA_MONTO"),fechacapreal,pa.GetString("PA_ALMACEN"),pa.GetString("PA_RUTAPREV"),pa.GetString("PA_RUTA_REP"),fechareal,pa.GetString("PA_USUARIO"),2)
Else
cmd.Parameters = Array As Object(pa.GetString("PA_CLIENTE"),pa.GetString("PA_MONTO"),fechacapreal,pa.GetString("PA_ALMACEN"),pa.GetString("PA_RUTAPREV"),pa.GetString("PA_RUTA_REP"),fechareal,pa.GetString("PA_USUARIO"),"")
End If
reqManager.ExecuteCommand(cmd , "ins_pagares")
Next
End If
@@ -762,10 +722,9 @@ Sub envioinfo
If ab.RowCount > 0 Then
For i=0 To ab.RowCount -1
ab.Position = i
Dim ab1 As Cursor = Starter.skmt.ExecQuery($"SELECT SUM(a_abono) AS a_abono from ABONOS where a_cliente = '${ab.GetString("a_cliente")}'"$)
ab1.Position = 0
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_abono_REP_GUNA_VN"
@@ -817,8 +776,6 @@ Sub envioinfo
b.Close
f.Close
End If
c = Starter.skmt.ExecQuery("SELECT MIL, QUINIENTOS, DOCIENTOS, CIEN, CINCUENTA, VEINTE FROM TABULADOR_BILLETES")
d = Starter.skmt.ExecQuery("SELECT RUTAA FROM RUTAA")
b = Starter.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN")
@@ -831,7 +788,6 @@ Sub envioinfo
c.Position=i
Dim cmd As DBCommand
Dim fechatabulador() As String = Regex.Split(" ", f.GetString("HVD_FECHA"))
Dim fechatabulador3 As String = fechatabulador(0)
cmd.Initialize
cmd.Name = "insert_tabulador_billetes_GUNA_VN"
@@ -887,10 +843,6 @@ Sub envioinfo
Next
End If
c.Close
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_drop_rep_GUNA_VN"
@@ -1036,7 +988,6 @@ Sub cargar_Click
' Next
' End If
' c.Close
D=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
d.Position=0
cuantos_noventa = D.GetString("CUANTOS_NOVENTA")
@@ -1048,17 +999,12 @@ Sub cargar_Click
ToastMessageShow("Se actualizarán los datos, este proceso podria tardar hasta un minuto, gracias" , True)
ProgressDialogShow2("Descargando rutas, espere un momento.", False)
If Not(IsConnectedToInternet) Then MsgboxAsync("No hay conexión a Internet", "Revisa tu conexión")
Else
Log("XXXX")
MsgboxAsync("Para poder cargar día no puedes tener venta del día anterior. Por favor haz FIN DIA e intenta nuevamente.","Atención")
End If
End Sub
Sub JobDone(Job As HttpJob)
' Private r As DBResult = reqManager.HandleJob(Job)
If Job.Success = False Then
@@ -1128,7 +1074,6 @@ Sub JobDone(Job As HttpJob)
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "gunaprod3" Then 'query tag
@@ -1362,7 +1307,7 @@ Sub JobDone(Job As HttpJob)
If tc.RowCount = 0 Then
Log($"Guardamos ${HVD_CLIENTE}"$)
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA, HVD_CODPROMO, HVD_PROID,HVD_NUM_TICKET, HVD_NUM_REGISTRO, HVD_RECHAZO, HVD_ESTATUS, HVD_PARCIAL, BCAJAS,CANTC,CONSECUTIVO,BCAJAS_OR,CANTC_OR) VALUES (?,?,?,?,?,?,?,?,?,?,0,0,?,?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_FECHA, HVD_CODPROMO, HVD_PROID,HVD_NUM_TICKET, HVD_NUM_REGISTRO, HVD_RECHAZO, bcajas,cantc,consecutivo,bcajas,cantc))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS2(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA, HVD_CODPROMO, HVD_PROID,HVD_NUM_TICKET, HVD_NUM_REGISTRO, HVD_RECHAZO, HVD_ESTATUS, HVD_PARCIAL) VALUES (?,?,?,?,?,?,?,?,?,?,0,0)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_FECHA, HVD_CODPROMO, HVD_PROID,HVD_NUM_TICKET, HVD_NUM_REGISTRO, HVD_RECHAZO))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS2(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA, HVD_CODPROMO, HVD_PROID,HVD_NUM_TICKET, HVD_NUM_REGISTRO, HVD_RECHAZO, HVD_ESTATUS, HVD_PARCIAL) VALUES (?,?,?,?,?,?,?,?,?,?,0,0)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_FECHA, HVD_CODPROMO, HVD_PROID,HVD_NUM_TICKET, HVD_NUM_REGISTRO, HVD_RECHAZO))
End If
End If
Next
@@ -1403,8 +1348,7 @@ Sub JobDone(Job As HttpJob)
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "PAGARES" Then 'query tag
@@ -1433,8 +1377,6 @@ Sub JobDone(Job As HttpJob)
End If
End If
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "valida_pedidoc" Then 'query tag
@@ -1550,7 +1492,7 @@ Sub JobDone(Job As HttpJob)
End If
End If
If Job.JobName = "DBRequest" Then
If Job.JobName = "DBRequest" Then
Dim result As DBResult = reqManager.HandleJob(Job)
If result.Tag = "ins_reparto" Then 'query tag
For Each records() As Object In result.Rows
@@ -1574,18 +1516,13 @@ Sub JobDone(Job As HttpJob)
Job.Release
End If
If reqs.Size = 0 Then
ProgressDialogHide
c = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM CHECADO_CHECK")
c.Position = 0
If c.GetString("CUANTOS") = 0 Then
Starter.skmt.ExecNonQuery2("insert into CHECADO_CHECK (CHECADO) VALUES(?)", Array As String("0"))
Else If c.GetString("CUANTOS") = 1 Then
End If
c.Close
' Log(reqs.size)
@@ -1636,7 +1573,7 @@ Sub BUSCA_Click
MsgboxAsync("Favor de hacer el checklist.","Atención")
Else
' StartActivity(BUSCAR)
B4XPages.ShowPage("Buscar")
B4XPages.ShowPage("Buscar")
End If
End Sub
@@ -1710,36 +1647,34 @@ Sub B_CLIEPROD_Click
Panel1.Width = Root.Width
Panel1.Height = Root.Height
' ListView1. = Panel1.Width / 2
B_REGRESA.Left = (Panel1.Width - B_REGRESA.Width) / 2
B_REGRESA.Top = Panel1.Height - B_REGRESA.Height
BUSCA.Visible = False
connecta.Visible = False
trabajar.Visible = False
B_CLIEPROD.Visible = False
Panel1.Visible = True
Panel1.BringToFront
Btn_Ubicar_Ru.Visible=False
c=Starter.skmt.ExecQuery("select * from kmt_info WHERE gestion <> 0 order by HORAENT")
Subs.SetDivider(ListView1, Colors.LightGray, 2)
ListView1.Clear
ListView1.TwoLinesLayout.ItemHeight = 120dip
Dim label1 As Label
label1 = ListView1.TwoLinesLayout.Label
label1.TextSize = 22
label1.TextColor = Colors.White
label1.Height = 60dip
Dim label2 As Label
label2 = ListView1.TwoLinesLayout.SecondLabel
label2.TextSize = 22
label2.TextColor = Colors.White
label2.Top = 60dip
BUSCA.Visible = False
connecta.Visible = False
trabajar.Visible = False
B_CLIEPROD.Visible = False
Panel1.Visible = True
Panel1.BringToFront
Btn_Ubicar_Ru.Visible=False
c=Starter.skmt.ExecQuery("select * from kmt_info WHERE gestion <> 0 order by HORAENT")
Subs.SetDivider(ListView1, Colors.LightGray, 2)
ListView1.Clear
ListView1.TwoLinesLayout.ItemHeight = 120dip
Dim label1 As Label
label1 = ListView1.TwoLinesLayout.Label
label1.TextSize = 22
label1.TextColor = Colors.White
label1.Height = 60dip
Dim label2 As Label
label2 = ListView1.TwoLinesLayout.SecondLabel
label2.TextSize = 22
label2.TextColor = Colors.White
label2.Top = 60dip
label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD)
label2.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD)
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
If c.GetString("gestion") = "2" Then
ESTATUS = "ENTREGADO"
Log("entrega")
@@ -1749,12 +1684,8 @@ Sub B_CLIEPROD_Click
Else
ESTATUS = "SIN ESTATUS"
End If
If ESTATUS = "ENTREGADO" Then
Private vc As Cursor = Starter.skmt.ExecQuery($"select HVD_PROID,HVD_COSTO_TOT, HVD_CANT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT, CAT_GP_PRECIO from HIST_VENTAS LEFT JOIN CAT_GUNAPROD ON CAT_GP_ID = HVD_PROID where BCAJAS = 0 and HVD_CODPROMO ='${Subs.traealmacen}' and HVD_CLIENTE = '${c.GetString("CAT_CL_CODIGO")}'"$)
Private cuenta0 As String = 0
Private arti As String = 0
If vc.RowCount > 0 Then
@@ -1766,7 +1697,6 @@ Sub B_CLIEPROD_Click
Next
End If
' Log(cuenta0)
Private vc2 As Cursor = Starter.skmt.ExecQuery($"select HVD_PROID, HVD_CANT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT, CANTC,HVD_COSTO_TOT from HIST_VENTAS where HVD_CLIENTE = '${c.GetString("CAT_CL_CODIGO")}' AND BCAJAS = 1"$)
Private Cuenta1 As String = 0
Private arti1 As String = 0
@@ -1783,12 +1713,10 @@ Sub B_CLIEPROD_Click
Next
End If
' Log(Cuenta1)
Private vc4 As Cursor = Starter.skmt.ExecQuery($"select HVD_PROID, HVD_CANT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT, CANTC,HVD_COSTO_TOT, HVD_RECHAZO, HVD_CODPROMO from HIST_VENTAS where HVD_CLIENTE = '${c.GetString("CAT_CL_CODIGO")}' AND BCAJAS = 0 and HVD_CODPROMO <> '${Subs.traeAlmacen}'"$)
Private Cuenta2 As String = 0
Private arti2 As String = 0
If vc4.RowCount > 0 Then
For k = 0 To vc4.RowCount - 1
vc4.Position = k
If vc4.GetString("HVD_PROID") <> vc4.GetString("HVD_CODPROMO") Then
@@ -1805,11 +1733,9 @@ Sub B_CLIEPROD_Click
End If
End If
End If
Next
End If
' Log(arti2)
Private c4 As Cursor = Starter.skmt.ExecQuery($"SELECT IFNULL(PE_CANT,0) AS PE_CANT, iFNULL(PE_COSTO_TOT,0) AS PE_COSTO_TOT FROM PEDIDO WHERE PE_CLIENTE = '${c.GetString("CAT_CL_CODIGO")}'"$)
Private Cuenta3 As String = 0
Private arti3 As String = 0
@@ -1820,18 +1746,12 @@ Sub B_CLIEPROD_Click
Cuenta3 = Cuenta3 + c4.GetString("PE_COSTO_TOT")
Next
End If
Private TOTALMONTO As String = cuenta0 + Cuenta1 + Cuenta2 + Cuenta3
Private TOTALcantidad As String = arti + arti1 +arti2 + arti3
ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO")&" - " &c.GetString("CAT_CL_NOMBRE"), "Articulos :"& TOTALcantidad &" Monto :"& NumberFormat2(TOTALMONTO,0,2,2,True) & " " & ESTATUS )
Log("si entre2")
Else If ESTATUS = "RECHAZADO" Then
Private vc As Cursor = Starter.skmt.ExecQuery($"select HVD_PROID, HVD_CANT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT, CAT_GP_PRECIO, HVD_COSTO_TOT from HIST_VENTAS LEFT JOIN CAT_GUNAPROD ON CAT_GP_ID = HVD_PROID where BCAJAS = 0 and HVD_CODPROMO ='${Subs.traealmacen}' and HVD_CLIENTE = '${c.GetString("CAT_CL_CODIGO")}'"$)
Private cuenta0 As String = 0
Private arti As String = 0
If vc.RowCount > 0 Then
@@ -1844,7 +1764,6 @@ Sub B_CLIEPROD_Click
Next
End If
' Log(cuenta0)
Private vc2 As Cursor = Starter.skmt.ExecQuery($"select HVD_PROID, HVD_CANT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT, CANTC,HVD_COSTO_TOT from HIST_VENTAS where HVD_CLIENTE = '${c.GetString("CAT_CL_CODIGO")}' AND BCAJAS = 1"$)
Private Cuenta1 As String = 0
Private arti1 As String = 0
@@ -1861,12 +1780,10 @@ Sub B_CLIEPROD_Click
Next
End If
' Log(Cuenta1)
Private vc4 As Cursor = Starter.skmt.ExecQuery($"select HVD_PROID, HVD_CANT, IFNULL(HVD_RECHAZOCANT, 0) AS HVD_RECHAZOCANT, CANTC,HVD_COSTO_TOT, HVD_RECHAZO, HVD_CODPROMO from HIST_VENTAS where HVD_CLIENTE = '${c.GetString("CAT_CL_CODIGO")}' AND BCAJAS = 0 and HVD_CODPROMO <> '${Subs.traeAlmacen}'"$)
Private Cuenta2 As String = 0
Private arti2 As String = 0
If vc4.RowCount > 0 Then
For k = 0 To vc4.RowCount - 1
vc4.Position = k
If vc4.GetString("HVD_PROID") <> vc4.GetString("HVD_CODPROMO") Then
@@ -1883,11 +1800,9 @@ Sub B_CLIEPROD_Click
End If
End If
End If
Next
End If
' Log(arti2)
Private c4 As Cursor = Starter.skmt.ExecQuery($"SELECT IFNULL(PE_CANT,0) AS PE_CANT, iFNULL(PE_COSTO_TOT,0) AS PE_COSTO_TOT FROM PEDIDO WHERE PE_CLIENTE = '${c.GetString("CAT_CL_CODIGO")}'"$)
Private Cuenta3 As String = 0
Private arti3 As String = 0
@@ -1898,18 +1813,13 @@ Sub B_CLIEPROD_Click
Cuenta3 = Cuenta3 + c4.GetString("PE_COSTO_TOT")
Next
End If
Private TOTALMONTO As String = cuenta0 + Cuenta1 + Cuenta2 + Cuenta3
Private TOTALcantidad As String = arti + arti1 +arti2 + arti3
Log("si entre")
' Log("si entre")
ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO")&" - " &c.GetString("CAT_CL_NOMBRE"), "Articulos :"& TOTALcantidad &" Monto :"& NumberFormat2(TOTALMONTO,0,2,2,True) & " " & ESTATUS )
End If
Next
End If
Next
End If
' c=skmt.ExecQuery("select HVD_CLIENTE, HVD_PRONOMBRE, HVD_CANT, HVD_ESTATUS from HIST_VENTAS ORDER BY HVD_PRONOMBRE")
'
@@ -1938,7 +1848,7 @@ Sub B_CLIEPROD_Click
' ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE") & " " & c.GetString("HVD_CLIENTE") , c.GetString("HVD_CANT") & " " & ESTATUS )
' Next
' End If
End If
End If
End Sub
Sub B_REGRESA_Click
@@ -1956,8 +1866,7 @@ Sub Btn_Ubicar_Ru_Click
If b_check.Visible = True Then
MsgboxAsync("Favor de hacer el checklist.","Atención")
Else
StartActivity(MAPA_RUTAS)
StartActivity(MAPA_RUTAS)
End If
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
@@ -1966,22 +1875,18 @@ Private Sub b_tabulador_Click
If b_check.Visible = True Then
MsgboxAsync("Favor de hacer el checklist.","Atención")
Else
B4XPages.ShowPage("tabulador")
B4XPages.ShowPage("tabulador")
End If
End Sub
Private Sub b_check_Click
B4XPages.ShowPage("checklist")
End Sub
Private Sub ListView1_ItemClick (Position As Int, Value As Object)
Log(Value)
' Log(Value)
Dim clieasing() As String = Regex.Split(" ", Value)
Log(clieasing(0))
Starter.skmt.ExecNonQuery("delete from CUENTAA")
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(clieasing(0)))
B4XPages.ShowPage("Cliente")
@@ -1999,7 +1904,6 @@ Private Sub b_rechazos_Click
b_regreso.Top = p_prod.Height - b_regreso.Height
' label1.TextSize = 20
label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD)
' lv_prod_Prin.Left = p_prod.Width / 2
lv_prod_Prin.Width = Root.Width - (Root.Width * .10)
@@ -2007,19 +1911,13 @@ 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")
lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.White
lv_prod_Prin.Clear
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim itemText As String
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
@@ -2030,13 +1928,11 @@ Private Sub b_rechazos_Click
resta = 0
End If
If ( c.GetInt("HVD_RECHAZOCANT") - resta) <= 0 Then
Else
itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Inventario: ${(c.GetInt("HVD_RECHAZOCANT") - resta)}"$
lv_prod_Prin.AddSingleLine(itemText)
End If
Next
Else
lv_prod_Prin.AddSingleLine("No hay datos disponibles.")
@@ -2100,12 +1996,8 @@ Private Sub B_PAGARES_Click
For i = 0 To c.RowCount - 1
c.Position = i
Dim itemText As String
itemText = $"NOMBRE.: ${c.GetString("NOMBRE")} ${CRLF}FOLIO: ${(c.GetInt("NOTA"))}, MONTO: $ ${(c.GetInt("SALDO_PENDIENTE"))}"$
ListView2.AddSingleLine(itemText)
Next
Else
ListView2.AddSingleLine("No hay datos disponibles.")
@@ -2113,8 +2005,6 @@ Private Sub B_PAGARES_Click
c.Close
End Sub
Private Sub Button1_Click
P_PAGARES.Visible = False
End Sub

Binary file not shown.

Binary file not shown.

View File

@@ -310,6 +310,7 @@ Sub InfoWindowLongClick_Event (MethodName As String, Args() As Object) As Object
' B4XPages.ShowPage("clientes")
B4XPages.MainPage.clientes.caculaRutaGPS(B4XPages.MainPage.clientes.todosAVisitar, False)
Log("A VISITAR:" & B4XPages.MainPage.clientes.todosAVisitar)
B4XPages.MainPage.clientes.mostrarProgressDialog= True
B4XPages.ShowPage("clientes")
Loop
End If

491
B4A/QRGenerator.bas Normal file
View File

@@ -0,0 +1,491 @@
B4J=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=6.28
@EndOfDesignText@
'version 1.60
Sub Class_Globals
Private xui As XUI
Public cvs As B4XCanvas
Private ModuleSize As Int
Private GFSize As Int = 256
Private ExpTable(GFSize) As Int
Private LogTable(GFSize) As Int
Private PolyZero() As Int = Array As Int(0)
Private Generator1L() As Int = Array As Int(1, 127, 122, 154, 164, 11, 68, 117)
Private Generator4L() As Int = Array As Int(1, 152, 185, 240, 5, 111, 99, 6, 220, 112, 150, 69, 36, 187, 22, 228, 198, 121, 121, 165, 174) '4L
Private Generator4H() As Int = Array As Int(1, 59, 13, 104, 189, 68, 209, 30, 8, 163, 65, 41, 229, 98, 50, 36, 59)
Private Generator9L() As Int = Array As Int(1, 212, 246, 77, 73, 195, 192, 75, 98, 5, 70, 103, 177, 22, 217, 138, 51, 181, 246, 72, 25, 18, 46, 228, 74, 216, 195, 11, 106, 130, 150)
Private TempBB As B4XBytesBuilder
Private Matrix(0, 0) As Boolean
Private Reserved(0, 0) As Boolean
Private NumberOfModules As Int
Private mBitmapSize As Int
Type QRVersionData (Format() As Byte, Generator() As Int, MaxSize As Int, Version As Int, MaxUsableSize As Int, Alignments() As Int, _
Group1Size As Int, Group2Size As Int, Block1Size As Int, Block2Size As Int, VersionName As String, VersionInformation() As Byte)
Private versions As List
End Sub
Public Sub Initialize (BitmapSize As Int)
TempBB.Initialize
mBitmapSize = BitmapSize
PrepareTables
versions.Initialize
Dim l0() As Byte = Array As Byte(1,1,1,0,1,1,1,1,1,0,0,0,1,0,0)
Dim h0() As Byte = Array As Byte(0,0,1,0,1,1,0,1,0,0,0,1,0,0,1)
versions.Add(CreateVersionData(1, "1L", Generator1L, l0, 19 * 8, 17, Array As Int(), 1, 0, 19, 0, Null))
versions.Add(CreateVersionData(4, "4H", Generator4H, h0 , 36 * 8, 34, Array As Int(6, 26), 4, 0, 9, 0, Null))
versions.Add(CreateVersionData(4, "4L", Generator4L, l0 , 80 * 8, 78, Array As Int(6, 26), 1, 0, 80, 0, Null))
versions.Add(CreateVersionData(9, "9L", Generator9L, l0, 232 * 8, 230, Array As Int(6, 26, 46), 2, 0, 116, 0, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
versions.Add(CreateVersionData(23, "23H", Generator9L, h0, 464 * 8, 461, Array As Int(6, 30, 54, 78, 102), 16, 14, 15, 16, _
Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
versions.Add(CreateVersionData(40, "40H", Generator9L, h0, 1276 * 8, 1273, Array As Int(6, 30, 58, 86, 114, 142, 170), 20, 61, 15, 16, _
Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
versions.Add(CreateVersionData(40, "40L", Generator9L, l0, 2956 * 8, 2953, Array As Int(6, 30, 58, 86, 114, 142, 170), 19, 6, 118, 119, _
Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
End Sub
Private Sub CreateVersionData (Version As Int, Name As String, Generator() As Int, Format() As Byte, MaxSize As Int, MaxUsableSize As Int, Alignments() As Int, _
Group1Size As Int, Group2Size As Int, Block1Size As Int, Block2Size As Int, VersionInformation() As Byte) As QRVersionData
Dim v As QRVersionData
v.Initialize
v.Version = Version
v.VersionName = Name
v.Generator = Generator
v.Format = Format
v.MaxSize = MaxSize
v.MaxUsableSize = MaxUsableSize
v.Alignments = Alignments
v.Group1Size = Group1Size
v.Group2Size = Group2Size
v.Block1Size = Block1Size
v.Block2Size = Block2Size
v.VersionInformation = VersionInformation
Return v
End Sub
Public Sub Create(Text As String) As B4XBitmap
Dim Bytes() As Byte = Text.GetBytes("utf8") 'non-standard but still recommended
Dim vd As QRVersionData
For Each version As QRVersionData In versions
If version.MaxUsableSize >= Bytes.Length Then
vd = version
Exit
End If
Next
If vd.IsInitialized = False Then
Log("Too long!")
Return Null
End If
Log(vd.VersionName & ", Size: " & Bytes.Length)
NumberOfModules = 17 + vd.Version * 4
ModuleSize = mBitmapSize / (NumberOfModules + 8)
mBitmapSize = ModuleSize * (NumberOfModules + 8)
Dim p As B4XView = xui.CreatePanel("")
p.SetLayoutAnimated(0, 0, 0, mBitmapSize, mBitmapSize)
cvs.Initialize(p)
Dim Matrix(NumberOfModules, NumberOfModules) As Boolean
Dim Reserved(NumberOfModules, NumberOfModules) As Boolean
Dim Mode() As Byte = Array As Byte(0, 1, 0, 0) 'byte mode
Dim ContentCountIndicator() As Byte
If vd.Version >= 10 Then
ContentCountIndicator = IntTo16Bits(Bytes.Length)
Else
ContentCountIndicator = UnsignedByteToBits(Bytes.Length)
End If
Dim EncodedData As B4XBytesBuilder
EncodedData.Initialize
EncodedData.Append(Mode)
EncodedData.Append(ContentCountIndicator)
For Each b As Byte In Bytes
EncodedData.Append(UnsignedByteToBits(Bit.And(0xff, b)))
Next
'add terminator
Dim PadSize As Int = Min(4, vd.MaxSize - EncodedData.Length)
Dim pad(PadSize) As Byte
EncodedData.Append(pad)
Do While EncodedData.Length Mod 8 <> 0
EncodedData.Append(Array As Byte(0))
Loop
Do While EncodedData.Length < vd.MaxSize
EncodedData.Append(Array As Byte(1,1,1,0,1,1,0,0))
If EncodedData.Length < vd.MaxSize Then EncodedData.Append(Array As Byte(0,0,0,1,0,0,0,1))
Loop
VersionWithTwoGroups(vd.Generator, vd.Group1Size, vd.Group2Size, vd.Block1Size, vd.Block2Size, EncodedData)
AddFinders (vd)
AddDataToMatrix(EncodedData.ToArray, vd)
DrawMatrix
cvs.Invalidate
Dim bmp As B4XBitmap = cvs.CreateBitmap
cvs.Release
Return bmp
End Sub
Private Sub VersionWithTwoGroups (generator() As Int, Group1Size As Int, Group2Size As Int, Block1Size As Int, Block2Size As Int, EncodedData As B4XBytesBuilder)
Dim ecs As List
ecs.Initialize
Dim dataBlocks As List
dataBlocks.Initialize
Dim PrevIndex As Int
For block1 = 0 To Group1Size + Group2Size - 1
Dim BlockSize As Int
If block1 < Group1Size Then BlockSize = Block1Size Else BlockSize = Block2Size
Dim Data() As Byte = EncodedData.SubArray2(PrevIndex * 8, (PrevIndex + BlockSize) * 8)
PrevIndex = PrevIndex + BlockSize
Dim DataAsInts(Data.Length / 8) As Int
Dim i As Int
For i = 0 To Data.Length - 1 Step 8
DataAsInts(i / 8) = BitsToUnsignedByte(Data, i)
Next
dataBlocks.Add(DataAsInts)
Dim ec() As Int = CalcReedSolomon(DataAsInts, generator)
If ec.Length < generator.Length - 1 Then
Dim ec2(generator.Length - 1) As Int
IntArrayCopy(ec, 0, ec2, generator.Length - 1 - ec.Length, ec.Length)
ec = ec2
End If
ecs.Add(ec)
Next
Dim Interleaved As B4XBytesBuilder
Interleaved.Initialize
For i = 0 To Max(Block1Size, Block2Size) - 1
For block1 = 0 To dataBlocks.Size - 1
Dim ii() As Int = dataBlocks.Get(block1)
If ii.Length > i Then
Interleaved.Append(UnsignedByteToBits(ii(i)))
End If
Next
Next
For i = 0 To generator.Length - 2
For block1 = 0 To dataBlocks.Size - 1
Dim ii() As Int = ecs.Get(block1)
Interleaved.Append(UnsignedByteToBits(ii(i)))
Next
Next
EncodedData.Clear
EncodedData.Append(Interleaved.ToArray)
End Sub
Private Sub AddDataToMatrix (Encoded() As Byte, vd As QRVersionData)
Dim format() As Byte = vd.Format
Dim order As List = CreateOrder
'mask 0: (row + column) mod 2 == 0
For Each b As Byte In Encoded
Dim xy() As Int = GetNextPosition(order)
Matrix(xy(0), xy(1)) = (b = 1)
If (xy(1) + xy(0)) Mod 2 = 0 Then Matrix(xy(0), xy(1)) = Not(Matrix(xy(0), xy(1)))
Next
For i = 0 To 5
Matrix(i, 8) = format(i) = 1
Matrix(8, NumberOfModules - 1 - i) = format(i) = 1
Next
Matrix(7, 8) = format(6) = 1
Matrix(8, NumberOfModules - 1 - 6) = format(6) = 1
Matrix(8, 8) = format(7) = 1
Matrix(8, 7) = format(8) = 1
For i = 0 To 5
Matrix(8, 5 - i) = format(i + 9) = 1
Next
For i = 0 To 7
Matrix(NumberOfModules - 1 - 7 + i, 8) = format(7 + i) = 1
Next
If vd.Version >= 7 Then
Dim VersionInformation() As Byte = vd.VersionInformation
Dim c As Int = 18
For x = 0 To 5
For y = 0 To 2
c = c - 1
Matrix(x, NumberOfModules - 11 + y) = VersionInformation(c) = 1
Matrix(NumberOfModules - 11 + y, x) = VersionInformation(c) = 1
Next
Next
End If
End Sub
Private Sub GetNextPosition (order As List) As Int()
Do While True
Dim xy() As Int = order.Get(0)
order.RemoveAt(0)
If Reserved(xy(0), xy(1)) = False Then Return xy
Loop
Return Null
End Sub
Private Sub CreateOrder As List
Dim Order As List
Order.Initialize
Dim x As Int = NumberOfModules - 1
Dim y As Int = NumberOfModules - 1
Dim dy As Int = -1
Do While x >= 0 And y >= 0
Order.Add(Array As Int(x, y))
Order.Add(Array As Int(x - 1, y))
y = y + dy
If y = -1 Then
x = x - 2
y = 0
dy = 1
Else If y = NumberOfModules Then
x = x - 2
y = NumberOfModules - 1
dy = -1
End If
If x = 6 Then x = x - 1
Loop
Return Order
End Sub
Private Sub DrawMatrix
cvs.DrawRect(cvs.TargetRect, xui.Color_White, True, 0)
Dim r As B4XRect
For y = 0 To NumberOfModules - 1
For x = 0 To NumberOfModules - 1
r.Initialize((x + 4) * ModuleSize, (y + 4) * ModuleSize, 0, 0)
r.Width = ModuleSize
r.Height = ModuleSize
Dim clr As Int
If Matrix(x, y) Then
clr = xui.Color_Black
'cvs.DrawCircle(r.CenterX, r.CenterY, r.Width / 2, clr, True, 0)
cvs.DrawRect(r, clr, True, 0)
End If
Next
Next
End Sub
Private Sub BitsToUnsignedByte (b() As Byte, Offset As Int) As Int
Dim res As Int
For i = 0 To 7
Dim x As Int = Bit.ShiftLeft(1, 7 - i)
res = res + b(i + Offset) * x
Next
Return res
End Sub
Private Sub UnsignedByteToBits (Value As Int) As Byte()
TempBB.Clear
For i = 7 To 0 Step - 1
Dim x As Int = Bit.ShiftLeft(1, i)
Dim ii As Int = Bit.And(Value, x)
If ii <> 0 Then
TempBB.Append(Array As Byte(1))
Else
TempBB.Append(Array As Byte(0))
End If
Next
Return TempBB.ToArray
End Sub
Private Sub IntTo16Bits (Value As Int) As Byte()
TempBB.Clear
For i = 15 To 0 Step - 1
Dim x As Int = Bit.ShiftLeft(1, i)
Dim ii As Int = Bit.And(Value, x)
If ii <> 0 Then
TempBB.Append(Array As Byte(1))
Else
TempBB.Append(Array As Byte(0))
End If
Next
Return TempBB.ToArray
End Sub
Private Sub AddFinders (vd As QRVersionData)
AddFinder(0, 0, 6)
AddFinder(NumberOfModules - 7, 0, 6)
AddFinder(0, NumberOfModules - 7, 6)
AddAlignments(vd.Alignments)
If vd.Version >= 7 Then
For x = 0 To 2
For y = 0 To 5
Reserved(y, NumberOfModules - 11 + x) = True
Reserved(NumberOfModules - 11 + x, y) = True
Next
Next
End If
For i = 8 To NumberOfModules - 8
Matrix(i, 6) = (i Mod 2 = 0)
Matrix(6, i) = (i Mod 2 = 0)
Reserved(i, 6) = True
Reserved(6, i) = True
Next
Matrix(8, NumberOfModules - 1 - 7) = True
Reserved(8, NumberOfModules - 1 - 7) = True
For i = 0 To 7
Reserved(7, i) = True
Reserved(7, NumberOfModules - 1 - i) = True
Reserved(8, NumberOfModules - 1 - i) = True
Reserved(NumberOfModules -1 - 7, i) = True
Reserved(i, 7) = True
Reserved(i,NumberOfModules -1 - 7) = True
Reserved(NumberOfModules -1 - i, 7) = True
Reserved(NumberOfModules -1 - i, 8) = True
Next
For i = 0 To 8
Reserved(8, i) = True
Reserved(i, 8) = True
Next
End Sub
Private Sub AddAlignments (Positions() As Int)
For Each left As Int In Positions
For Each top As Int In Positions
AddFinder (left - 2, top - 2, 4)
Next
Next
End Sub
Private Sub AddFinder (Left As Int, Top As Int, SizeMinOne As Int)
For y = 0 To SizeMinOne
For x = 0 To SizeMinOne
If Reserved(Left + x, Top + y) Then
Return
End If
Next
Next
For y = 0 To SizeMinOne
For x = 0 To SizeMinOne
Dim value As Boolean
If x = 0 Or x = SizeMinOne Or y = 0 Or y = SizeMinOne Then
value = True
Else if x <> 1 And y <> 1 And x <> SizeMinOne - 1 And y <> SizeMinOne - 1 Then
value = True
End If
Matrix(Left + x, Top + y) = value
Reserved(Left + x, Top + y) = True
Next
Next
End Sub
#Region ReedSolomon
Private Sub CalcReedSolomon (Input() As Int, Generator() As Int) As Int()
Dim ecBytes As Int = Generator.Length - 1
Dim InfoCoefficients(Input.Length) As Int
IntArrayCopy(Input, 0, InfoCoefficients, 0, Input.Length)
InfoCoefficients = CreateGFPoly(InfoCoefficients)
InfoCoefficients = PolyMultiplyByMonomial(InfoCoefficients, ecBytes, 1)
Dim remainder() As Int = PolyDivide(InfoCoefficients, Generator)
Return remainder
End Sub
Private Sub PrepareTables
Dim x = 1 As Int
Dim Primitive As Int = 285
For i = 0 To GFSize - 1
ExpTable(i) = x
x = x * 2
If x >= GFSize Then
x = Bit.Xor(Primitive, x)
x = Bit.And(GFSize - 1, x)
End If
Next
For i = 0 To GFSize - 2
LogTable(ExpTable(i)) = i
Next
End Sub
Private Sub CreateGFPoly(Coefficients() As Int) As Int()
If Coefficients.Length > 1 And Coefficients(0) = 0 Then
Dim FirstNonZero As Int = 1
Do While FirstNonZero < Coefficients.Length And Coefficients(FirstNonZero) = 0
FirstNonZero = FirstNonZero + 1
Loop
If FirstNonZero = Coefficients.Length Then
Return Array As Int(0)
End If
Dim res(Coefficients.Length - FirstNonZero) As Int
IntArrayCopy(Coefficients, FirstNonZero, res, 0, res.Length)
Return res
End If
Return Coefficients
End Sub
Private Sub PolyAddOrSubtract(This() As Int, Other() As Int) As Int()
If This(0) = 0 Then Return Other
If Other(0) = 0 Then Return This
Dim Small() As Int = This
Dim Large() As Int = Other
If Small.Length > Large.Length Then
Dim temp() As Int = Small
Small = Large
Large = temp
End If
Dim SumDiff(Large.Length) As Int
Dim LengthDiff As Int = Large.Length - Small.Length
IntArrayCopy(Large, 0, SumDiff, 0, LengthDiff)
For i = LengthDiff To Large.Length - 1
SumDiff(i) = Bit.Xor(Small(i - LengthDiff), Large(i))
Next
Return CreateGFPoly(SumDiff)
End Sub
Private Sub IntArrayCopy(Src() As Int, SrcOffset As Int, Dest() As Int, DestOffset As Int, Count As Int)
For i = 0 To Count - 1
Dest(DestOffset + i) = Src(SrcOffset + i)
Next
End Sub
Private Sub PolyMultiplyByMonomial (This() As Int, Degree As Int, Coefficient As Int) As Int()
If Coefficient = 0 Then Return PolyZero
Dim product(This.Length + Degree) As Int
For i = 0 To This.Length - 1
product(i) = GFMultiply(This(i), Coefficient)
Next
Return CreateGFPoly(product)
End Sub
Private Sub PolyDivide (This() As Int, Other() As Int) As Int()
Dim quotient() As Int = PolyZero
Dim remainder() As Int = This
Dim denominatorLeadingTerm As Int = Other(0)
Dim inverseDenominatorLeadingTerm As Int = GFInverse(denominatorLeadingTerm)
Do While remainder.Length >= Other.Length And remainder(0) <> 0
Dim DegreeDifference As Int = remainder.Length - Other.Length
Dim scale As Int = GFMultiply(remainder(0), inverseDenominatorLeadingTerm)
Dim term() As Int = PolyMultiplyByMonomial(Other, DegreeDifference, scale)
Dim iterationQuotient() As Int = GFBuildMonomial(DegreeDifference, scale)
quotient = PolyAddOrSubtract(quotient, iterationQuotient)
remainder = PolyAddOrSubtract(remainder, term)
Loop
Return remainder
End Sub
Private Sub GFInverse(a As Int) As Int
Return ExpTable(GFSize - LogTable(a) - 1)
End Sub
Private Sub GFMultiply(a As Int, b As Int) As Int
If a = 0 Or b = 0 Then
Return 0
End If
Return ExpTable((LogTable(a) + LogTable(b)) Mod (GFSize - 1))
End Sub
Private Sub GFBuildMonomial(Degree As Int, Coefficient As Int) As Int()
If Coefficient = 0 Then Return PolyZero
Dim c(Degree + 1) As Int
c(0) = Coefficient
Return c
End Sub
#End Region

View File

@@ -71,8 +71,8 @@ Sub Service_Create
cedisLocation.Initialize
' cedisLocation.Latitude = "19.48118148992086"
' cedisLocation.Longitude = "-99.15295579261536"
cedisLocation.Latitude = "0"
cedisLocation.Longitude = "0"
cedisLocation.Latitude = "20.5879843"
cedisLocation.Longitude = "-100.3897913"
End Sub
Sub Service_Start (StartingIntent As Intent)

View File

@@ -274,8 +274,8 @@ End Sub
'Mandamos "coords" en un mensaje a "Sprvsr"
Sub mandamosLoc(coords As String) 'ignore
'' Log("Iniciamos mandamosLoc "&coords)
'' Log("locRequest="&Tracker.locRequest)
'' Log("Iniciamos mandamosLoc "&coords)
'' Log("locRequest="&Tracker.locRequest)
' guardaInfoEnBD(coords)'Escribimos coordenadas y fecha a una bd
' Dim t As String
' If Tracker.locRequest="Activa" Then
@@ -293,10 +293,10 @@ End Sub
'Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS"
Sub fechaInicioHoy As String 'ignore
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
DateTime.DateFormat="yyMMdd"
Private h As String = DateTime.Date(DateTime.Now)&"000000"
DateTime.DateFormat=OrigFormat 'return to orig date format
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
DateTime.DateFormat="yyMMdd"
Private h As String = DateTime.Date(DateTime.Now)&"000000"
DateTime.DateFormat=OrigFormat 'return to orig date format
Log("Hoy="&h)
Return h
End Sub
@@ -319,12 +319,12 @@ End Sub
'Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada
Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore
Try
' LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red)
' LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red)
If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then
' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now))
Return True
Else
' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now))
' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now))
Return False
End If
Catch
@@ -406,7 +406,7 @@ End Sub
'Revisamos que el servicio "PushService" este inicializado y activo
Sub revisaPushService 'ignore
' Private todoBienPS As Boolean = True
'' LogColor("**** **** Revisamos PushService **** ****", Colors.RGB(78,0,227))
'' LogColor("**** **** Revisamos PushService **** ****", Colors.RGB(78,0,227))
' Try
' If Not(PushService.wsh.IsInitialized) Then 'Si no esta inicializado ...
' log2DB("revisaPushService: No esta inicializado ... 'Reinicializando PushService'")
@@ -501,16 +501,16 @@ Sub dameErroresJSON(SQL As SQL, maxErrores As Int, comprimido As Boolean) As Str
cur.Close
j.Initialize(m2)
Log(j.ToString)
If comprimido Then
If comprimido Then
Return compress(j.ToString)
Else
Else
Return j.ToString
End If
End Sub
'Convierte una fecha en formato YYMMDDHHMMSS a Ticks
Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore
Try
Try
If fKMT.Length = 12 Then
Private parteFecha As String = fKMT.SubString2(0,6)
Private parteHora As String = fKMT.SubString(6)
@@ -628,7 +628,7 @@ Sub centraBoton(elemento As Button, anchoElementoSuperior As Int) 'ignore
End Sub
'Trae el nombre del producto con ID dado, desde HIST_VENTAS.
Sub traeNombre(id As String) As String
Sub traeNombre(id As String) As String
Private nombre As String
Private idc As Cursor = kmt.ExecQuery($"select HVD_PRONOMBRE from HIST_VENTAS where HVD_PROID = '${id}'"$)
idc.Position=0
@@ -713,18 +713,17 @@ End Sub
Sub traeConversion(id As String) As String
Private pu As String = "0"
Private idc As Cursor = kmt.ExecQuery($"select CONVERSION from CAT_GUNAPROD where CAT_GP_ID = '${id}'"$)
If idc.RowCount > 0 Then
idc.Position=0
If idc.RowCount > 0 And IsNumber(idc.GetString("CONVERSION")) Then pu = idc.GetString("CONVERSION")
Private idc As Cursor = kmt.ExecQuery($"select CONVERSION from CAT_GUNAPROD where CAT_GP_ID = '${id}'"$)
If idc.RowCount > 0 Then
idc.Position=0
If idc.RowCount > 0 And IsNumber(idc.GetString("CONVERSION")) Then pu = idc.GetString("CONVERSION")
' Log("id=" & id & "|p=" & x & "|" & idc.GetString("CAT_GP_PRECIO"))
End If
idc.Close
End If
idc.Close
Return pu
End Sub
'Trae el cliente desde la BD.
Sub traeCliente As String 'ignore
Private cli As Cursor = Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
@@ -1093,6 +1092,16 @@ Sub CreateBitmapWithNumber(OriginalBitmap As Bitmap, Number As Int) As Bitmap 'i
' Dibujar la imagen original
Canvas.DrawBitmap(OriginalBitmap, Null, DestRect)
' Dibujar el número en el centro del Bitmap y configurar el estilo del texto
Canvas.DrawText(Number, (OriginalBitmap.Width / 2), (OriginalBitmap.Height / 2.4), Typeface.DEFAULT, 20, Colors.White, "CENTER")
Canvas.DrawText(Number, (OriginalBitmap.Width / 2), (OriginalBitmap.Height / 2.4), Typeface.DEFAULT, 15, Colors.White, "CENTER")
Return NewBitmap
End Sub
'Muestra en el Log los campos y valores que regresan en el JobDone.
Sub logJobDoneResultados(resultado As DBResult)
For Each records() As Object In resultado.Rows
LogColor($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$, Colors.RGB(215,37,0))
For Each k As String In resultado.Columns.Keys
LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0))
Next
Next
End Sub

View File

@@ -230,10 +230,11 @@ Module24=foto
Module25=ManageExternalStorage
Module26=MAPA_CLIENTE
Module27=MAPA_RUTAS
Module28=Starter
Module29=Subs
Module28=QRGenerator
Module29=Starter
Module3=BatteryUtilities
Module30=Tracker
Module30=Subs
Module31=Tracker
Module4=C_Buscar
Module5=C_Cheklist
Module6=C_Cliente
@@ -242,13 +243,13 @@ Module8=C_Detalle_Promo
Module9=C_DetalleVenta
NumberOfFiles=91
NumberOfLibraries=27
NumberOfModules=30
NumberOfModules=31
Version=12.8
@EndOfDesignText@
#Region Project Attributes
#ApplicationLabel: Guna Reparto
#VersionCode: 1
#VersionName: 5.03.01
#VersionName: 5.03.08
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False

View File

@@ -23,6 +23,7 @@ ModuleBookmarks28=
ModuleBookmarks29=
ModuleBookmarks3=
ModuleBookmarks30=
ModuleBookmarks31=
ModuleBookmarks4=
ModuleBookmarks5=
ModuleBookmarks6=
@@ -54,6 +55,7 @@ ModuleBreakpoints28=
ModuleBreakpoints29=
ModuleBreakpoints3=
ModuleBreakpoints30=
ModuleBreakpoints31=
ModuleBreakpoints4=
ModuleBreakpoints5=
ModuleBreakpoints6=
@@ -85,12 +87,13 @@ ModuleClosedNodes28=
ModuleClosedNodes29=
ModuleClosedNodes3=
ModuleClosedNodes30=
ModuleClosedNodes31=
ModuleClosedNodes4=
ModuleClosedNodes5=
ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
NavigationStack=C_Principal,Button1_Click,2107,6,C_Principal,Class_Globals,93,0,C_Principal,P_PAGARES_Click,2110,0,C_Principal,B_CLIEPROD_Click,1723,6,C_Principal,b_rechazos_Click,1993,0,C_Principal,B_PAGARES_Click,2081,6,C_Buscar,Class_Globals,0,0,Diseñador Visual,principal.bal,-100,6,Diseñador Visual,cliente.bal,-100,1,C_Buscar,B4XPage_Created,30,0,C_Cliente,Class_Globals,20,0
NavigationStack=C_DetalleVenta,Class_Globals,0,0,C_DetalleVenta,B_IMP_Click,1262,0,C_Clientes,B4XPage_Appear,73,0,C_Clientes,Class_Globals,0,0,C_Clientes,caculaRutaGPS,647,0,C_Cliente,CrearQR,2042,0,C_Cliente,Class_Globals,3,0,Subs,CreateBitmapWithNumber,1079,0,Subs,traeConversion,719,0,Subs,InstallAPK,528,0,B4XMainPage,p_appUpdate_Click,1010,0
SelectedBuild=0
VisibleModules=1,2,3,4,5,6,7,8,9,10
VisibleModules=2,4,5,6,7,9,30,29,16,27