mirror of
https://github.com/KeymonSoft/Guna_Preventa.git
synced 2026-04-17 12:56:17 +00:00
241 lines
11 KiB
QBasic
241 lines
11 KiB
QBasic
B4A=true
|
|
Group=Default Group
|
|
ModulesStructureVersion=1
|
|
Type=Class
|
|
Version=12.8
|
|
@EndOfDesignText@
|
|
Sub Class_Globals
|
|
Private Root As B4XView 'ignore
|
|
Private xui As XUI 'ignore
|
|
Dim db As SQL
|
|
Private Root2 As B4XView
|
|
Dim p_transparenteInicioFin2 As Panel
|
|
Dim b_Inicio_Fin_venta2 As Button
|
|
Dim contadorIniciarVenta, precision As Int
|
|
Dim IniVenNO, dentroDeGeocerca, enVenta As Boolean
|
|
Dim motivoNoVenta, motivoNoVisita As String
|
|
Dim banderaGeoCerca As String
|
|
Private reqManager As DBRequestManager
|
|
End Sub
|
|
|
|
'You can add more parameters here.
|
|
Public Sub Initialize (vCallback As Object, vEventName As String, vRoot As B4XView, db1 As SQL, DBReq As DBRequestManager) As Object
|
|
db = db1
|
|
Root2 = vRoot
|
|
reqManager = DBReq
|
|
db.ExecNonQuery("CREATE TABLE IF NOT EXISTS BITACORAGPS(fechab TEXT, usuariob TEXT, almacenb TEXT, rutab TEXT, eventob TEXT, clienteb TEXT, iniciob TEXT, finb TEXT, latitudb TEXT, longitudb TEXT, precision TEXT, motivonoventa TEXT, motivonovisita TEXT, BAN_GEOB TEXT)")
|
|
agregaColumna("BITACORAGPS", "BAN_GEOB", "TEXT")
|
|
contadorIniciarVenta = 0
|
|
cargamosPanel
|
|
Return Me
|
|
End Sub
|
|
|
|
'This event will be called once, before the page becomes visible.
|
|
Private Sub B4XPage_Created (Root1 As B4XView)
|
|
Root = Root1
|
|
'load the layout to Root
|
|
End Sub
|
|
|
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
|
|
|
'En geocerca si mete la contraseña poner 0 en precision gps y si esta dentro de los 50 mts poner 1 y 2 para eventos que no lo ocupen
|
|
'Mandar fecha de sync(sysdate)
|
|
Sub mandaBitacora(fechab As String, usuariob As String, almacenb As String, rutab As String, eventob As String, clienteb As String, iniciob As String, finb As String, latitudb As String, longitudb As String, precisionb As String, motivoNoVentab As String, motivoNoVisitab As String, BAN_GEOB As String)
|
|
Log(motivoNoVisitab)
|
|
' Log("bitacora")
|
|
Private cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "mandaBitacora3_GUNA"
|
|
' Log("BITACORA3")
|
|
Private nombreCliente As String = traeNombreCliente(clienteb)
|
|
If eventob = "Llega a almacen" Then
|
|
nombreCliente = "BOLETA"
|
|
clienteb = ""
|
|
finb = iniciob
|
|
End If
|
|
If eventob = "Salida almacen" Then nombreCliente = "CHECKLIST"
|
|
If eventob = "Fin Día" Then nombreCliente = "FIN DIA"
|
|
If eventob = "Carga día" Then nombreCliente = "CARGA DIA"
|
|
If eventob = "Carga día suplencia" Then nombreCliente = traeRutasSup
|
|
If eventob <> "Termina Venta" And eventob <> "No Venta" Then
|
|
db.ExecNonQuery($"INSERT INTO BITACORAGPS (fechab, usuariob , almacenb , rutab , eventob , clienteb , iniciob , finb , latitudb, longitudb , precision , motivonoventa , motivonovisita, BAN_GEOB) VALUES ('${fechab}' ,'${usuariob}' , '${almacenb}' , '${rutab}' , '${eventob}' , '${clienteb}' , '${iniciob}' , '${finb}' , '${latitudb}' , '${longitudb}' , '${precisionb}' , '${motivoNoVentab}' , '${motivoNoVisitab}', '${BAN_GEOB}')"$)
|
|
Else
|
|
Private e As Cursor = db.ExecQuery($"select fechab from BITACORAGPS where usuariob = '${usuariob}' and almacenb = '${almacenb}' and rutab = '${rutab}' and clienteb = '${clienteb}' and eventob = 'Inicia Venta' order by fechab desc"$)
|
|
If e.RowCount > 0 Then
|
|
e.Position = 0
|
|
Log("ACTUALIZA BITACORA")
|
|
If eventob = "Termina Venta" Then
|
|
db.ExecNonQuery($"update BITACORAGPS set finb = '${finb}' where rutab = '${rutab}' and almacenb = '${almacenb}' and usuariob = '${usuariob}' and clienteb = '${clienteb}' and fechab = '${e.GetString("fechab")}' "$)
|
|
cmd.Parameters = Array As Object(finb, rutab, almacenb, usuariob, clienteb, "Inicia Venta", e.GetString("fechab"))
|
|
else if eventob = "No Venta" Then
|
|
db.ExecNonQuery($"update BITACORAGPS set finb = '${finb}', motivonoventa = '${motivoNoVentab}', motivonovisita = '${motivoNoVisitab}' where rutab = '${rutab}' and almacenb = '${almacenb}' and usuariob = '${usuariob}' and clienteb = '${clienteb}' and fechab = '${e.GetString("fechab")}' "$)
|
|
cmd.Parameters = Array As Object(finb, motivoNoVentab, motivoNoVisitab, rutab, almacenb, usuariob, clienteb, "Inicia Venta", e.GetString("fechab"))
|
|
End If
|
|
End If
|
|
End If
|
|
If eventob <> "Inicia Venta" Then
|
|
Private c As Cursor = db.ExecQuery($"select * from BITACORAGPS where usuariob = '${usuariob}' and almacenb = '${almacenb}' and rutab = '${rutab}' and clienteb = '${clienteb}' order by fechab desc"$)
|
|
If c.RowCount > 0 Then
|
|
c.Position = 0
|
|
cmd.Parameters = Array As Object(c.GetString("almacenb"), c.GetString("usuariob"), c.GetString("rutab"), c.GetString("eventob"), c.GetString("clienteb"), nombreCliente, c.GetString("iniciob"), c.GetString("finb"), c.GetString("latitudb"), c.GetString("longitudb"), c.GetString("precision"), c.GetString("motivonoventa"), c.GetString("motivonovisita"), c.GetString("fechab"), c.GetString("BAN_GEOB"))
|
|
reqManager.ExecuteCommand(cmd , "mandaBitacora")
|
|
End If
|
|
End If
|
|
' Log("Mandamos bitacora")
|
|
End Sub
|
|
|
|
'Regresa el nombre del cliente del id dado.
|
|
Sub traeNombreCliente(id As String) As String
|
|
Private c As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_NOMBRE from kmt_info3 where CAT_CL_CODIGO = '${id}'"$)
|
|
Private n As String = "N/A"
|
|
Do While c.NextRow
|
|
n = c.GetString("CAT_CL_NOMBRE")
|
|
Loop
|
|
Return n
|
|
End Sub
|
|
|
|
'Regresa la ruta actual de la base de datos.
|
|
Sub traeRutasSup As String
|
|
Dim c As Cursor
|
|
Dim rutas As String
|
|
rutas = ""
|
|
|
|
c = B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info3")
|
|
|
|
If c.RowCount > 0 Then
|
|
For i = 0 To c.RowCount - 1
|
|
c.Position = i
|
|
rutas = rutas & c.GetString("CAT_CL_RUTA") & ", "
|
|
Next
|
|
If rutas.Length > 0 Then rutas = rutas.SubString2(0, rutas.Length - 2)
|
|
End If
|
|
|
|
c.Close
|
|
Return rutas
|
|
End Sub
|
|
|
|
'Muestra u oculta el boton de inicio y fin de venta
|
|
Sub inicioFin
|
|
LogColor($">>>>>>>>>>>> XX EN VENTA : ${enVenta} <<<<<<<<<<<<"$, Colors.Blue)
|
|
Log(b_Inicio_Fin_venta2.Text)
|
|
If enVenta = False Then
|
|
p_transparenteInicioFin2.BringToFront
|
|
p_transparenteInicioFin2.Visible = True
|
|
' b_Inicio_Fin_venta2.Text = "INICIAR VENTA"
|
|
' Log("Hacemos visible el boton de Inicio Venta")
|
|
Else
|
|
If b_Inicio_Fin_venta2.Text <> "TERMINAR VENTA" Then
|
|
p_transparenteInicioFin2.Visible = False
|
|
' b_Inicio_Fin_venta2.Visible = False
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub b_Inicio_Fin_venta2_Click
|
|
' b_Inicio_Fin_venta.Visible = False
|
|
' Subs.bitacora(Subs.fechanormal(DateTime.Now), usuario, Subs.traeAlmacen, Subs.traeRuta, "Pre-venta", "0", Subs.fechanormal(DateTime.Now), Subs.fechanormal(DateTime.Now), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, precision, "", "")
|
|
contadorIniciarVenta = 0
|
|
IniVenNO = False
|
|
If dentroDeGeocerca Then precision = 1
|
|
' LogColor("-------> "&contadorIniciarVenta & " <-------", Colors.Red)
|
|
LogColor($">>>>>>>>>>>> EN VENTA : ${enVenta} <<<<<<<<<<<<"$, Colors.Blue)
|
|
motivoNoVenta = ""
|
|
motivoNoVisita = ""
|
|
p_transparenteInicioFin2.Visible = False
|
|
If b_Inicio_Fin_venta2.Text = "TERMINAR VENTA" Then
|
|
mandaBitacora(Subs.fechanormal(DateTime.Now), Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeRutaBitacora, "Termina Venta", Subs.traeCliente, "", Subs.fechanormal(DateTime.Now), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, precision, motivoNoVenta, motivoNoVisita, banderaGeoCerca)
|
|
enVenta = False
|
|
LogColor($">>>>>> EN VENTA: ${enVenta}"$, Colors.red)
|
|
iniciamosVenta
|
|
B4XPages.ShowPageAndRemovePreviousPages("Principal")
|
|
' guardadoventa
|
|
Else if b_Inicio_Fin_venta2.Text = "INICIAR VENTA" Then
|
|
contadorIniciarVenta = 0
|
|
IniVenNO = False
|
|
contadorIniciarVenta = contadorIniciarVenta + 1
|
|
If contadorIniciarVenta = 1 And IniVenNO = False And motivoNoVenta <> "NO VENTA" Then
|
|
IniVenNO = True
|
|
mandaBitacora(Subs.fechanormal(DateTime.Now), Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeRutaBitacora, "Inicia Venta", Subs.traeCliente, Subs.fechanormal(DateTime.Now), "", B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, precision, "", "", banderaGeoCerca)
|
|
enVenta = True
|
|
LogColor($">>>>>> EN VENTA: ${enVenta}"$, Colors.red)
|
|
' LogColor($">>>>>> INICIA VENTA: ${Starter.enVenta} - ${Subs.traeCliente}"$, Colors.red)
|
|
Else If contadorIniciarVenta = 1 And IniVenNO = False And motivoNoVenta = "NO VENTA" Then
|
|
IniVenNO = True
|
|
mandaBitacora(Subs.fechanormal(DateTime.Now), Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeRutaBitacora, "Inicia Venta", Subs.traeCliente, Subs.fechanormal(DateTime.Now), "", B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, precision, motivoNoVenta, "", banderaGeoCerca)
|
|
enVenta = True
|
|
LogColor($">>>>>> EN VENTA: ${enVenta}"$, Colors.red)
|
|
Else If contadorIniciarVenta > 1 Then
|
|
p_transparenteInicioFin2.Visible = False
|
|
End If
|
|
End If
|
|
p_transparenteInicioFin2.Visible = False
|
|
LogColor($">>>>>>>>>>>> EN VENTA : ${enVenta} <<<<<<<<<<<<"$, Colors.Blue)
|
|
End Sub
|
|
|
|
'Cargamos el layout del panel.
|
|
private Sub cargamosPanel
|
|
Log(p_transparenteInicioFin2.IsInitialized)
|
|
' Log(p_transparenteInicioFin2.)
|
|
If Not(p_transparenteInicioFin2.IsInitialized) Then
|
|
LogColor(">>>>>>> CARGAMOS PANEL BITACORA", Colors.red)
|
|
Root2.LoadLayout("inicioFinVenta")
|
|
p_transparenteInicioFin2.Width = Root2.Width
|
|
p_transparenteInicioFin2.Height = Root2.Height
|
|
b_Inicio_Fin_venta2.top = 700
|
|
b_Inicio_Fin_venta2.Left = 5
|
|
b_Inicio_Fin_venta2.Width = Root2.Width - 20
|
|
b_Inicio_Fin_venta2.Text = "INICIAR VENTA"
|
|
p_transparenteInicioFin2.BringToFront
|
|
End If
|
|
End Sub
|
|
|
|
Sub p_transparenteInicioFin2_click
|
|
|
|
End Sub
|
|
|
|
' Ponemos el texto del boton en "INICIAR VENTA" y enVenta en Falso .
|
|
Sub iniciamosVenta
|
|
enVenta = False
|
|
b_Inicio_Fin_venta2.Text = "INICIAR VENTA"
|
|
End Sub
|
|
|
|
Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore
|
|
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla
|
|
Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$)
|
|
c.Position = 0
|
|
If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
|
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$)
|
|
End If
|
|
' Log(1)
|
|
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
|
Try
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
|
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$)
|
|
Catch
|
|
Log(LastException)
|
|
End Try
|
|
Log(2)
|
|
End Try
|
|
End Sub
|
|
|
|
'Borra los datos de la tabla BITACORAGPS
|
|
Sub borraDatosBitacora
|
|
db.ExecNonQuery("DELETE FROM BITACORAGPS")
|
|
End Sub
|
|
|
|
Sub JobDone(Job As HttpJob)
|
|
Log("JOBDONE BITACORA")
|
|
If Job.JobName = "DBRequest" Then
|
|
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
|
Log($"Tag: ${RESULT.tag}, success=${Job.Success}"$)
|
|
End If
|
|
'Log(Job.Tag)
|
|
If Job.Success = False Then
|
|
' Log("JOBDONE ERROR")
|
|
LogColor("Error: " & Job.ErrorMessage, Colors.red)
|
|
Else 'If Job Success then ...
|
|
' Log("JOBDONE SUCCESS")
|
|
End If
|
|
End Sub
|