5 Commits

Author SHA1 Message Date
cvaldes1201
0f6bf7f62a 6.02.16
se agregan las encuestas de bat
2026-04-13 11:27:26 -06:00
cvaldes1201
696c3439b9 6.02.05 2026-03-10 10:24:55 -06:00
Javier
50047c0655 .... 2026-01-19 15:56:29 -06:00
Javier
4f363ea340 5.12.21 2026-01-15 08:43:31 -06:00
Javier
52b264af6c Se agrega los colores paras que no se confundan y se corrige que si no tienen venta y entran al res dia no truene 2026-01-05 10:53:07 -06:00
18 changed files with 1484 additions and 386 deletions

View File

@@ -39,6 +39,7 @@ Sub Class_Globals
Public promos As C_Promos
Public historico As C_Historico
Public historicobattodos As C_historicobatyodos
Public historicobat As C_historicobat
Dim reqManager As DBRequestManager
Dim v As String = Application.VersionName
@@ -145,6 +146,9 @@ Private Sub B4XPage_Created (Root1 As B4XView)
historicobat.Initialize
B4XPages.AddPage("historicobat", historicobat)
historicobattodos.Initialize
B4XPages.AddPage("historicobattodos", historicobattodos)
p_Main.Height = Root.Height
p_Main.Width = Root.Width
@@ -200,6 +204,13 @@ Private Sub B4XPage_Created (Root1 As B4XView)
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_PRO3055(H_IDCLIENTE TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_SUPLENCIA(RS_RUTA TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TICKET_IMPRESO (idCliente TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA_BAT(CLIENTE)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ENCUESTAS_BAT (CLIENTE TEXT,RUTA TEXT,ALMACEN TEXT,P1 TEXT,P2 TEXT,P3 TEXT,P4 TEXT,P5 TEXT,P6 TEXT,P7 TEXT,P8 TEXT,P9 TEXT,P10 TEXT, FECHA TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS hist_ventastodos (HVD_CLIENTE TEX, HVD_PRONOMBRE TEXT, HVD_CANT TEXT, HVD_COSTO_TOT TEXT, HVD_FECHA TEXT)")
' skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_VARIABLES (CAT_VA_DESCRIPCION TEXT, CAT_VA_VALOR TEXT)")
Subs.agregaColumna("HIST_ENCUESTA", "HE_LAT", "TEXT")
Subs.agregaColumna("HIST_ENCUESTA", "HE_FOTO", "BLOB")
@@ -210,8 +221,13 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Subs.agregaColumna("HIST_ENCUESTA", "HE_LON", "TEXT")
Subs.agregaColumna("HIST_VENTAS", "HVD_FECHA", "TEXT")
Subs.agregaColumna("kmt_info3", "encuesta", "TEXT")
Subs.agregaColumna("hist_ventastodos", "HVD_NUM_TICKET", "TEXT")
Subs.agregaColumna("hist_ventastodos", "HVD_CODPROMO", "TEXT")
Subs.agregaColumna("kmt_info3", "CAT_CL_CLASIFICADOR3", "TEXT")
Subs.agregaColumna("kmt_info3", "CAT_CL_CLASIFICADOR2", "TEXT")
Subs.agregaColumna("kmt_info3", "CAT_CL_CLASIFICADOR5", "TEXT")
Subs.agregaColumna("kmt_info3", "CAT_CL_TIPOCLIENTE", "TEXT")
Subs.agregaColumna("kmt_info3", "CAT_CL_LIMITECREDITO", "TEXT")
Subs.agregaColumna("kmt_info3", "CAT_CL_DIASCREDITO", "TEXT")
@@ -1041,7 +1057,7 @@ Sub revisaActualizacion 'Parte de la funcionalidad "appUpdater"
End If
End Try
Else
LogColor("appUpdater(), Job Failed " & link & CRLF & LastException.Message, Colors.Red)
' LogColor("appUpdater(), Job Failed " & link & CRLF & LastException.Message, Colors.Red)
If Msgbox2("Es necesaria una conexión a internet, por favor revise su conexión y vuelva a intentar", "ATENCIÓN", "OK", "", "", Null) = DialogResponse.POSITIVE Then 'Ignore
ExitApplication
End If

File diff suppressed because it is too large Load Diff

View File

@@ -140,6 +140,95 @@ Sub GUARDA_Click
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_TOT = ? where HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(stay_hh + stay_mi + stay_ss))
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_FIN = ? ", Array As Object(sTime))
DateTime.TimeFormat = "HH:mm:ss"
If Subs.traeAlmacen <> "43" Then
Mandapedido
End If
bitacora.mandaBitacora(Subs.fechanormal(DateTime.Now), usuario, Subs.traeAlmacen, Subs.traeRutaBitacora, "NO VENTA", Subs.traeCliente,Subs.fechanormal(DateTime.Now), Subs.fechanormal(DateTime.Now), B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, 2, motivo, r_1.Checked, B4XPages.MainPage.cliente.bitacora.banderaGeoCerca)
B4XPages.ShowPage("Principal")
End Sub
Sub Mandapedido
' PEDIDO
c=B4XPages.MainPage.skmt.ExecQuery2("SELECT PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO FROM PEDIDO WHERE (PE_RECALCULO = ? or PE_RECALCULO = ? or PE_RECALCULO IS NULL)",Array As String("","null"))
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_pedido_GV2"
cmd.Parameters = Array As Object(C.GetString("PE_CEDIS"), Subs.traeAlmacen, C.GetString("PE_COSTO_TOT"), C.GetString("PE_COSTOU"), C.GetString("PE_CANT"), C.GetString("PE_PRONOMBRE"), C.GetString("PE_PROID"), C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"))
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_pedido")
Next
End If
c.Close
' NOVENTA
c=B4XPages.MainPage.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON FROM NOVENTA")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_noventa_GV2"
cmd.Parameters = Array As Object(C.GetString("NV_CLIENTE"),C.GetString("NV_FECHA"),C.GetString("NV_USER"),C.GetString("NV_MOTIVO"),C.GetString("NV_COMM"),C.GetString("NV_LAT"),C.GetString("NV_LON"), Subs.traeAlmacen, Subs.traeRuta2(C.GetString("NV_CLIENTE")))
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa")
Next
End If
c.Close
c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA FROM PEDIDO_CLIENTE ")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_pedidos_GV3"
cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"),C.GetString("PC_FECHA"),C.GetString("PC_USER"),C.GetString("PC_NOART"),C.GetString("PC_MONTO"),C.GetString("PC_LON"),C.GetString("PC_LAT"),Subs.traeAlmacen,Subs.traeRuta2(C.GetString("PC_CLIENTE")),C.GetString("PC_COSTO_SIN"),C.GetString("PC_FACTURA") )
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_pedidos")
Next
End If
c.Close
' If Subs.traeAlmacen = "88" Or Subs.traeAlmacen = "6" Then
c=B4XPages.MainPage.skmt.ExecQuery2("SELECT PE_RECALCULO,PE_RECALCULOTOT,ifnull(PE_RECCEDIS,'') as PE_RECCEDIS,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,ifnull(PE_CANT,0) as PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, IFNULL(PE_RECCANT,0) AS PE_RECCANT FROM PEDIDO WHERE PE_RECALCULO <> ? or PE_RECALCULO <> ? or PE_RECALCULO IS NOT NULL",Array As String("","null"))
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
If c.GetString("PE_RECCEDIS") = "" Then
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_pedido_GV2"
cmd.Parameters = Array As Object(C.GetString("PE_CEDIS"), Subs.traeAlmacen, C.GetString("PE_RECALCULOTOT"), C.GetString("PE_RECALCULO"), C.GetString("PE_CANT"), C.GetString("PE_PRONOMBRE"), C.GetString("PE_PROID"), C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"))
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_pedido")
Else
If c.GetString("PE_RECCANT") = c.GetString("PE_CANT") Then
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_pedido_GV2"
cmd.Parameters = Array As Object(C.GetString("PE_RECCEDIS"), Subs.traeAlmacen, C.GetString("PE_RECALCULOTOT"), C.GetString("PE_RECALCULO"), C.GetString("PE_CANT"), C.GetString("PE_PRONOMBRE"), C.GetString("PE_PROID"), C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"))
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_pedido")
Else
'Con descuento
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_pedido_GV2"
cmd.Parameters = Array As Object(C.GetString("PE_RECCEDIS"), Subs.traeAlmacen, C.GetString("PE_RECALCULOTOT"), C.GetString("PE_RECALCULO"), C.GetString("PE_RECCANT"), C.GetString("PE_PRONOMBRE"), C.GetString("PE_PROID"), C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"))
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_pedido")
'Sin descuento
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_pedido_GV2"
cmd.Parameters = Array As Object(C.GetString("PE_CEDIS"), Subs.traeAlmacen, NumberFormat2((C.GetString("PE_CANT")-C.GetString("PE_RECCANT"))*C.GetString("PE_COSTOU"),1,2,2,False), C.GetString("PE_COSTOU"), (C.GetString("PE_CANT")-C.GetString("PE_RECCANT")), C.GetString("PE_PRONOMBRE"), C.GetString("PE_PROID"), C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"))
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_pedido")
End If
End If
Next
End If
c.Close
End Sub

View File

@@ -177,7 +177,7 @@ Sub Class_Globals
Dim sDate,sTime As String
Dim HORAINGRESO As String
Dim distancealm As Long
Private L_QUALA As Label
Private L_FERRERO As Label
Private L_SANMARCOS As Label
@@ -385,6 +385,14 @@ Sub B4XPage_Appear
If Starter.marcaCel <> "Sony" Then ToastMessageShow("Es necesario tener el GPS encendido", True)
StartActivity(Starter.gps.LocationSettingsIntent)
End If
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
c=B4XPages.MainPage.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA"))
c.Position = 0
If c.GetString("CUANTOS") = 0 Then
@@ -541,6 +549,23 @@ Sub B4XPage_Appear
End Sub
Sub Subir_Click
Dim envia As Boolean = False
Dim env As Cursor = Starter.skmt.ExecQuery("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'ENVIOALMACEN'")
If env.RowCount > 0 Then
env.Position = 0
If env.GetString("CAT_VA_VALOR") = 0 Then
envia = True
Else
If distancealm < 100 Then
envia = True
End If
End If
End If
If envia Then
checaPedido
CARGA = "SUBIR"
P1.Visible = True
@@ -628,7 +653,21 @@ Sub Subir_Click
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_QR2")
Next
End If
c.Close
c.Close
' ENCUESTAS BAT
c=B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM ENCUESTAS_BAT")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_encuestas_bat_guna"
cmd.Parameters = Array As Object(c.GetString("CLIENTE"),c.GetString("RUTA"),c.GetString("ALMACEN"),c.GetString("FECHA"),c.GetString("P1"),c.GetString("P2"),c.GetString("P3"),c.GetString("P4"),c.GetString("P5"),c.GetString("P6"),c.GetString("P7"),c.GetString("P8"),c.GetString("P9"),c.GetString("P10"))
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "INSENCUESTAS")
Next
End If
c.Close
' Plan Lealtad
c=B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM PLAN_LEALTAD WHERE DESCARGADO IS NULL")
@@ -644,19 +683,19 @@ Sub Subir_Click
End If
c.Close
' Plan Lealtad
c=B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM COMENTARIOS WHERE DESCARGADO IS NULL")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_coments_GUNA"
cmd.Parameters = Array As Object(C.GetString("COMENTARTIO"),C.GetString("CLIENTE"),Subs.traeAlmacen,Subs.traeRuta)
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "INS_coment")
Next
End If
c.Close
' ' Plan Lealtad
' c=B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM COMENTARIOS WHERE DESCARGADO IS NULL")
' If c.RowCount>0 Then
' For i=0 To c.RowCount -1
' c.Position=i
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name = "insert_coments_GUNA"
' cmd.Parameters = Array As Object(C.GetString("COMENTARTIO"),C.GetString("CLIENTE"),Subs.traeAlmacen,Subs.traeRuta)
' B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "INS_coment")
' Next
' End If
' c.Close
Dim fotomostrar1 As Cursor = Starter.skmt.ExecQuery("SELECT * FROM kmt_info3 where foto is not NULL")
@@ -752,7 +791,7 @@ Sub Subir_Click
d.Close
' If ALMACEN = "88" Or ALMACEN = "6" Then
c=B4XPages.MainPage.skmt.ExecQuery2("SELECT PE_RECALCULO,PE_RECALCULOTOT,ifnull(PE_RECCEDIS,'') as PE_RECCEDIS,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, PE_RECCANT FROM PEDIDO WHERE PE_RECALCULO <> ? or PE_RECALCULO <> ? or PE_RECALCULO IS NOT NULL",Array As String("","null"))
c=B4XPages.MainPage.skmt.ExecQuery2("SELECT PE_RECALCULO,PE_RECALCULOTOT,ifnull(PE_RECCEDIS,'') as PE_RECCEDIS,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,ifnull(PE_CANT,0) as PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, IFNULL(PE_RECCANT,0) AS PE_RECCANT FROM PEDIDO WHERE PE_RECALCULO <> ? or PE_RECALCULO <> ? or PE_RECALCULO IS NOT NULL",Array As String("","null"))
d=B4XPages.MainPage.skmt.ExecQuery($"SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO where PE_RUTA = '${Subs.traeRuta}'"$)
If c.RowCount>0 Then
For i=0 To c.RowCount -1
@@ -966,6 +1005,9 @@ Sub Subir_Click
Next
End If
x.Close
Else
MsgboxAsync("Para poder enviar informacion debes de estar en el almacen.","Atención")
End If
End Sub
Sub cargar_Click
@@ -989,6 +1031,9 @@ Sub cargar_Click
Log(Rut_Rep)
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE GPS SET HABILITADO = (?)",Array As Object(0))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("CARGA_DIA"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("ENVIOALMACEN"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("RULAT"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("RULONG"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("pasword"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("LATITUD"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("GEOCERCA"))
@@ -1088,6 +1133,11 @@ Sub cargar_Click
cmd.Parameters = Array As Object(usuario,e_ruta.text,sDate,imei,sTime,"","","","","CARGA",ALMACEN,Application.VersionName)
B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_drop")
cmd.Initialize
cmd.Name = "select_envio_almacen"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "envioalmacen")
cmd.Initialize
cmd.Name = "select_TipoVenta"
cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
@@ -1108,6 +1158,11 @@ Sub cargar_Click
cmd.Parameters = Array As Object(ALMACEN)
B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "promodesp")
' cmd.Initialize
' cmd.Name = "select_venta_tb_guna"
' cmd.Parameters = Array As Object( e_ruta.text,ALMACEN)
' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_ventastodos")
cmd.Initialize
cmd.Name = "select_cat_gunaprod2_GV2"
cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
@@ -1367,8 +1422,8 @@ Sub JobDone(Job As HttpJob)
If n = "OKActivo" Then
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_ruta_GV2_70_10"
cmd.Parameters = Array As Object(ALMACEN,e_ruta.text)
cmd.Name = "select_ruta_GV2_70_19"
cmd.Parameters = Array As Object(ALMACEN,e_ruta.text,usuario)
B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "ruta")
'Log("Usuario guardado en BD es 'Valido'")
Else
@@ -1395,6 +1450,21 @@ Sub JobDone(Job As HttpJob)
End If
End If
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
If RESULT.Tag = "envioalmacen" Then 'query tag
For Each records() As Object In RESULT.Rows
Dim CAT_RU_ENVIO_ALMACEN As String = records(RESULT.Columns.Get("CAT_RU_ENVIO_ALMACEN"))
Dim CAT_RU_LAT As String = records(RESULT.Columns.Get("CAT_RU_LAT"))
Dim CAT_RU_LONG As String = records(RESULT.Columns.Get("CAT_RU_LONG"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ENVIOALMACEN",CAT_RU_ENVIO_ALMACEN))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("RULAT",CAT_RU_LAT))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("RULONG",CAT_RU_LONG))
Next
' If Starter.marcaCel <> "Sony" Then ToastMessageShow(" Historico Marcas" , True)
End If
End If
If Job.JobName = "DBRequest" Then
Dim result1 As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
If result1.Tag = "CHECAENCUESTA" Then 'query tag
@@ -1414,6 +1484,31 @@ Sub JobDone(Job As HttpJob)
End If
End If
End If
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
If RESULT.Tag = "hist_ventastodos" Then 'query tag
For Each records() As Object In RESULT.Rows
' Log ("NO HACE NADA")
Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE"))
Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE"))
Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT"))
Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT"))
Dim HVD_FECHA As String = records(RESULT.Columns.Get("HVD_FECHA"))
Dim HVD_NUM_TICKET As String = records(RESULT.Columns.Get("HVD_NUM_TICKET"))
Dim HVD_CODPROMO As String = records(RESULT.Columns.Get("HVD_CODPROMO"))
' Log(HVD_CLIENTE&"--"&HVD_PRONOMBRE&"--"&HVD_CANT&"--"&HVD_COSTO_TOT)
Private tc As Cursor = Starter.skmt.ExecQuery($"select * from hist_ventastodos where HVD_CLIENTE = '${HVD_CLIENTE}' and HVD_PRONOMBRE = '${HVD_PRONOMBRE}' AND HVD_CANT = '${HVD_CANT}' AND HVD_CODPROMO = '${HVD_CODPROMO}' AND HVD_COSTO_TOT = '${HVD_COSTO_TOT}' "$)
If tc.RowCount = 0 Then
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO hist_ventastodos(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA, HVD_NUM_TICKET,HVD_CODPROMO) VALUES (?,?,?,?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_FECHA, HVD_NUM_TICKET,HVD_CODPROMO))
End If
Next
End If
End If
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
@@ -1446,10 +1541,11 @@ Sub JobDone(Job As HttpJob)
Dim CAT_CL_DIASCREDITO As String = records(RESULT.Columns.Get("CAT_CL_DIASCREDITO"))
Dim CAT_CL_CLASIFICADOR3 As String = records(RESULT.Columns.Get("CAT_CL_CLASIFICADOR3"))
Dim CAT_CL_CLASIFICADOR2 As String = records(RESULT.Columns.Get("CAT_CL_CLASIFICADOR2"))
Dim CAT_CL_CLASIFICADOR5 As String = records(RESULT.Columns.Get("CAT_CL_CLASIFICADOR5"))
'########################## INICIA CODIGO PARA CREDITOS ####################
Dim CAT_CL_BCREDITO As String = records(RESULT.Columns.Get("CAT_CL_BCREDITO"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion,CAT_CL_BCREDITO,CAT_CL_TIPOCLIENTE,FOTO,CAT_CL_LIMITECREDITO,CAT_CL_DIASCREDITO,CAT_CL_CLASIFICADOR3,CAT_CL_CLASIFICADOR2) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,?,?,?,?,?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BCREDITO,CAT_CL_TIPOCLIENTE,CAT_CL_FOTO,CAT_CL_LIMITECREDITO,CAT_CL_DIASCREDITO,CAT_CL_CLASIFICADOR3,CAT_CL_CLASIFICADOR2))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info3(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion,CAT_CL_BCREDITO,CAT_CL_TIPOCLIENTE,FOTO,CAT_CL_LIMITECREDITO,CAT_CL_DIASCREDITO,CAT_CL_CLASIFICADOR3,CAT_CL_CLASIFICADOR2,CAT_CL_CLASIFICADOR5) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,?,?,?,?,?,?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BCREDITO,CAT_CL_TIPOCLIENTE,CAT_CL_FOTO,CAT_CL_LIMITECREDITO,CAT_CL_DIASCREDITO,CAT_CL_CLASIFICADOR3,CAT_CL_CLASIFICADOR2,CAT_CL_CLASIFICADOR5))
'########################## TERMINA CODIGO PARA CREDITOS ####################
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (CAT_CL_CODIGO))
Next
@@ -2464,6 +2560,10 @@ Log("--------> BORRAMOS")
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM ENCUESTA_MODULO3")
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM ENCUESTA_MODULO4")
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM ENCUESTA_MODULO5")
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM hist_ventastodos")
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("ENVIOALMACEN"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("RULAT"))
B4XPages.MainPage.skmt.ExecNonQuery2("DELETE FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("RULONG"))
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM BITACORAGPS")
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM RUTA_SUPLENCIA")
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM TICKET_IMPRESO")
@@ -2848,6 +2948,7 @@ Sub resdia_Click
' s3.Close
Private s3 As Cursor = B4XPages.MainPage.skmt.ExecQuery("select distinct(pe_cliente) FROM PEDIDO")
If s3.RowCount > 0 Then
Private total1 As String = 0
For i = 0 To s3.RowCount - 1
@@ -2858,6 +2959,8 @@ Sub resdia_Click
' LogColor($"Total despues ${total1}"$, Colors.blue)
Next
L_REAL.Text = total1
Else
L_REAL.Text = 0
End If
'Prueba0
@@ -2919,6 +3022,8 @@ Sub resdia_Click
c.Close
End If
' L_REAL.Text = l_monto_ks.Text
Log(L_NES.Text)
Log(L_REAL.Text)
L_ALCANCE.Text = Round2((L_NES.Text / L_REAL.Text + 1),2)
L_VPLAN.Text = l_porvisitar.Text
L_VREAL.Text = L_CUANTOST.text
@@ -3008,7 +3113,26 @@ Sub tickets_dia_Click
End Sub
Sub GPS_LocationChanged (Location1 As Location)
Dim al_longitud As String = 0
Dim al_latitud As String = 0
Dim envlat As Cursor = Starter.skmt.ExecQuery("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'RULAT'")
' c = Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("LATITUD"))
If envlat.RowCount > 0 Then
envlat.Position = 0
Dim al_latitud As String = envlat.GetString("CAT_VA_VALOR")
End If
envlat.Close
Dim envlat As Cursor = Starter.skmt.ExecQuery("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'RULONG'")
' envlat = Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("LONGITUD"))
If envlat.RowCount > 0 Then
envlat.Position = 0
Dim al_longitud As String = envlat.GetString("CAT_VA_VALOR")
End If
envlat.Close
Dim ubi1, ubi2 As Location
ubi1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
ubi2.Initialize2(al_latitud, al_longitud)
distancealm = ubi1.DistanceTo(ubi2)
End Sub
Sub Btn_Ubicar_Click

View File

@@ -1797,7 +1797,7 @@ Sub LlenaProdsLL(p As ResultSet)
' Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} LEFT JOIN PEDIDO ON CAT_GP_ID = PE_PROID where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' union all select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} LEFT JOIN PEDIDO ON CAT_GP_ID = PE_PROID where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN = 0 And CAT_GP_CLASIF <> 'PROMOS' and cat_gp_id in (select pe_proid from pedido where pe_cliente in (select cuenta from cuentaa)) order by 2"$)
If Subs.traeTipoCliente = 4 Then
Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_ID, CAT_GP_NOMBRE,CAT_GP_PRECIO, CAT_LISTAPRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from ${Subs.traeTablaProds(tipo_venta)} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPO <> 'PROMOS' and CAT_GP_TIPO <> 'PROMOCION'
Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_LISTAPRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from ${Subs.traeTablaProds(tipo_venta)} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPO <> 'PROMOS' and CAT_GP_TIPO <> 'PROMOCION'
order by
Case CAT_GP_TIPOPROD when 'PRIORITARIO' THEN 0
WHEN 'ESTRATEGICO' THEN 1
@@ -1844,7 +1844,7 @@ Sub LlenaProdsLL(p As ResultSet)
' ¡Importante! Crear un NUEVO mapa en cada iteración.
Dim tempMap As Map = CreateMap( _
"prod": p.GetString("CAT_GP_NOMBRE"), _
"precio": p.GetString("CAT_LISTAPRECIO"), _
"precio": p.GetString("CAT_GP_PRECIO"), _
"prioridad": p.GetString("CAT_GP_TIPOPROD"), _
"almacen": p.GetString("CAT_GP_ALMACEN"), _
"id": p.GetString("CAT_GP_ID"), _

View File

@@ -116,32 +116,58 @@ Sub B4XPage_Appear
' --- 2. Query 2: (MODIFICADO) ---
' Este es el query de SQLite que hicimos, adaptado
' para usar la variable 'nombreProducto'
' Dim sql As String = $"
' WITH FechasObjetivo (Fecha) AS (
' SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-28 days'))
' UNION ALL
' SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-21 days'))
' UNION ALL
' SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-14 days'))
' UNION ALL
' SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-7 days'))
' )
' SELECT
' COALESCE(SUM(H.HVD_CANT), 0) AS HVD_CANT_TOTAL
' FROM
' FechasObjetivo AS F
' LEFT JOIN
' HIST_VENTAS AS H
' ON F.Fecha = H.HVD_FECHA
' AND H.HVD_CLIENTE IN (SELECT CUENTA FROM cuentaa)
' AND H.HVD_PRONOMBRE = '${nombreProducto}'
' GROUP BY
' F.Fecha
' ORDER BY
' SUBSTR(F.Fecha, 7, 4),
' SUBSTR(F.Fecha, 4, 2),
' SUBSTR(F.Fecha, 1, 2)
' "$
Dim sql As String = $"
WITH FechasObjetivo (Fecha) AS (
SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-28 days'))
UNION ALL
SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-21 days'))
UNION ALL
SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-14 days'))
UNION ALL
SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-7 days'))
)
SELECT
COALESCE(SUM(H.HVD_CANT), 0) AS HVD_CANT_TOTAL
FROM
FechasObjetivo AS F
LEFT JOIN
HIST_VENTAS AS H
ON F.Fecha = H.HVD_FECHA
AND H.HVD_CLIENTE IN (SELECT CUENTA FROM cuentaa)
AND H.HVD_PRONOMBRE = '${nombreProducto}'
GROUP BY
F.Fecha
ORDER BY
SUBSTR(F.Fecha, 7, 4),
SUBSTR(F.Fecha, 4, 2),
SUBSTR(F.Fecha, 1, 2)
"$
WITH FechasObjetivo (Fecha) AS (
SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-28 days'))
UNION ALL
SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-21 days'))
UNION ALL
SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-14 days'))
UNION ALL
SELECT strftime('%d/%m/%Y', date('now', 'localtime', '-7 days'))
)
SELECT
COALESCE(SUM(H.HVD_CANT), 0) AS HVD_CANT_TOTAL,
-- Si el mes de la fecha es igual al mes actual, devuelve 1, si no 0
CASE WHEN SUBSTR(F.Fecha, 4, 2) = strftime('%m', 'now', 'localtime') THEN 1 ELSE 0 END AS EsMesActual
FROM
FechasObjetivo AS F
LEFT JOIN
HIST_VENTAS AS H
ON F.Fecha = H.HVD_FECHA
AND H.HVD_CLIENTE IN (SELECT CUENTA FROM cuentaa)
AND H.HVD_PRONOMBRE = '${nombreProducto}'
GROUP BY F.Fecha
ORDER BY SUBSTR(F.Fecha, 7, 4), SUBSTR(F.Fecha, 4, 2), SUBSTR(F.Fecha, 1, 2)
"$
' Log($"Ejecutando para: ${nombreProducto}")
' Log(sql) ' Descomenta esto si necesitas depurar el query
@@ -151,30 +177,58 @@ Sub B4XPage_Appear
' --- 3. Leer los 4 resultados (YA NO NECESITAMOS BUCLE) ---
' Sabemos que el query SIEMPRE devuelve 4 filas
' en el orden correcto (hace 28, 21, 14, 7 días)
Log(prohit2.RowCount)
' Log(prohit2.RowCount)
' If prohit2.RowCount = 4 Then
' prohit2.Position = 0
' cant_sem4 = prohit2.GetString("HVD_CANT_TOTAL") ' Fila 1 (-28 días)
'
' prohit2.Position = 1
' cant_sem3 = prohit2.GetString("HVD_CANT_TOTAL") ' Fila 2 (-21 días)
'
' prohit2.Position = 2
' cant_sem2 = prohit2.GetString("HVD_CANT_TOTAL") ' Fila 3 (-14 días)
'
' prohit2.Position = 3
' cant_sem1 = prohit2.GetString("HVD_CANT_TOTAL") ' Fila 4 (-7 días)
' Else
' Log($"Error: El query no devolvió 4 filas para '${nombreProducto}'"$)
' End If
'
' prohit2.Close ' Cerramos el cursor interno
'
Dim promx As Double = (cant_sem4 + cant_sem3 + cant_sem2 + cant_sem1) / 4
'
'
' CustomListView1.Add(CreateListItem(nombreProducto, cant_sem4, cant_sem3, cant_sem2, cant_sem1, promx ), 1)
' Variables nuevas para el color (1 = Mes Actual, 0 = Otro)
Dim c1, c2, c3, c4 As Int
If prohit2.RowCount = 4 Then
prohit2.Position = 0
cant_sem4 = prohit2.GetString("HVD_CANT_TOTAL") ' Fila 1 (-28 días)
prohit2.Position = 1
cant_sem3 = prohit2.GetString("HVD_CANT_TOTAL") ' Fila 2 (-21 días)
prohit2.Position = 2
cant_sem2 = prohit2.GetString("HVD_CANT_TOTAL") ' Fila 3 (-14 días)
prohit2.Position = 3
cant_sem1 = prohit2.GetString("HVD_CANT_TOTAL") ' Fila 4 (-7 días)
Else
Log($"Error: El query no devolvió 4 filas para '${nombreProducto}'"$)
End If
prohit2.Close ' Cerramos el cursor interno
Dim promx As Double = (cant_sem4 + cant_sem3 + cant_sem2 + cant_sem1) / 4
CustomListView1.Add(CreateListItem(nombreProducto, cant_sem4, cant_sem3, cant_sem2, cant_sem1, promx ), 1)
cant_sem4 = prohit2.GetString("HVD_CANT_TOTAL")
c1 = prohit2.GetInt("EsMesActual")
prohit2.Position = 1
cant_sem3 = prohit2.GetString("HVD_CANT_TOTAL")
c2 = prohit2.GetInt("EsMesActual")
prohit2.Position = 2
cant_sem2 = prohit2.GetString("HVD_CANT_TOTAL")
c3 = prohit2.GetInt("EsMesActual")
prohit2.Position = 3
cant_sem1 = prohit2.GetString("HVD_CANT_TOTAL")
c4 = prohit2.GetInt("EsMesActual")
Else
Log("Error en filas")
End If
prohit2.Close
' Pasamos los indicadores de color al método (c1, c2, c3, c4)
CustomListView1.Add(CreateListItem(nombreProducto, cant_sem4, cant_sem3, cant_sem2, cant_sem1, promx, c1, c2, c3, c4), 1)
'
Next
prohit.Close ' Cerramos el cursor externo
@@ -187,16 +241,52 @@ Sub B4XPage_Appear
End Sub
Sub CreateListItem(prodhis As String, s1 As Int, s2 As Int, s3 As Int,s4 As Int, prom As Double) As Panel 'ignore
'Sub CreateListItem(prodhis As String, s1 As Int, s2 As Int, s3 As Int,s4 As Int, prom As Double) As Panel 'ignore
' Dim p As B4XView = xui.CreatePanel("")
' p.SetLayoutAnimated(0, 0, 0, 288dip, 170dip)
' p.LoadLayout("historicobat")
' l_productohist.Text = prodhis
' l_s1.Text = s1
' l_s2.Text = s2
' l_s3.Text = s3
' l_s4.Text = s4
' L_PROMEDIOHIST.text = "Promedio " & prom
'
' Return p
'End Sub
Sub CreateListItem(prodhis As String, s1 As Int, s2 As Int, s3 As Int, s4 As Int, prom As Double, m1 As Int, m2 As Int, m3 As Int, m4 As Int) As Panel
Dim p As B4XView = xui.CreatePanel("")
' p.SetLayoutAnimated(0, 0, 0, 100%x, 170dip) ' En B4A es mejor usar %x para el ancho
p.SetLayoutAnimated(0, 0, 0, 288dip, 170dip)
p.LoadLayout("historicobat")
l_productohist.Text = prodhis
l_s1.Text = s1
l_s2.Text = s2
l_s3.Text = s3
l_s4.Text = s4
L_PROMEDIOHIST.text = "Promedio " & prom
' Cambiar color de fondo de los labels según el mes
' Si mX es 1 (mes actual) -> Azul, si no -> Amarillo
l_s1.Color = IIf(m1 = 1, xui.Color_Blue, xui.Color_Yellow)
l_s2.Color = IIf(m2 = 1, xui.Color_Blue, xui.Color_Yellow)
l_s3.Color = IIf(m3 = 1, xui.Color_Blue, xui.Color_Yellow)
l_s4.Color = IIf(m4 = 1, xui.Color_Blue, xui.Color_Yellow)
' Opcional: Cambiar el color del texto para que contraste
l_s1.TextColor = IIf(m1 = 1, xui.Color_White, xui.Color_Black)
l_s2.TextColor = IIf(m2 = 1, xui.Color_White, xui.Color_Black)
l_s3.TextColor = IIf(m3 = 1, xui.Color_White, xui.Color_Black)
l_s4.TextColor = IIf(m4 = 1, xui.Color_White, xui.Color_Black)
L_PROMEDIOHIST.Text = "Promedio " & NumberFormat(prom, 1, 2)
Return p
End Sub
' Función auxiliar por si no tienes activado el IIf de B4A (disponible en versiones recientes)
'Sub IIf(Condition As Boolean, TrueValue As Object, FalseValue As Object) As Object
' If Condition Then Return TrueValue Else Return FalseValue
'End Sub

168
B4A/C_historicobatyodos.bas Normal file
View File

@@ -0,0 +1,168 @@
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 g As GPS
Dim clie_id As String
Dim sDate,sTime As String
Dim usuario As String
Dim c As Cursor
Dim ruta As String
Dim Regresar As Button
Dim ListView1 As ListView
Dim L_CANT As Label
Dim L_TOTAL As Label
Dim borra As Button
Dim Existe As String
Dim result As String
' Dim lat_gps, lon_gps As String
Private Titulo As Label
Private b_desc As Button
Private ListView2 As ListView
Dim tgl As Toggle
Private p_nota As Panel
Private Panel1 As Panel
Private l_productohist As Label
Private l_s1 As Label
Private l_s2 As Label
Private l_s3 As Label
Private l_s4 As Label
Private CustomListView1 As CustomListView
Private L_PROMEDIOHIST As Label
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
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
Root.LoadLayout("nota3")
borra.Visible = False
Titulo.Text = "Acumulado"
b_desc.Visible = False
End Sub
Sub B4XPage_Appear
Panel1.Visible = False
If Not(Starter.gps.GPSEnabled) Then
ToastMessageShow("Es necesario tener el GPS encendido", True)
StartActivity(Starter.gps.LocationSettingsIntent)
End If
L_CANT.Text = ""
L_TOTAL.Text = ""
c = B4XPages.MainPage.skmt.ExecQuery("select count(*) as EXISTE from hist_ventastodos WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) ORDER BY HVD_CODPROMO, HVD_COSTO_TOT ASC")
c.Position = 0
Existe = c.GetString("EXISTE")
c.Close
' =====================================================================
' NUEVA LÓGICA DE LISTVIEW1: DISEÑO "TICKET MODERNO"
' =====================================================================
ListView1.Clear
ListView1.Visible = True
' 1. Fondo de la lista: Un gris muy claro/hueso para simular el papel
ListView1.Color = xui.Color_RGB(245, 245, 245)
' 2. Diseño del Encabezado (El Ticket y la Fecha)
ListView1.SingleLineLayout.Label.TextSize = 16
' Azul oscuro elegante para separar visualmente los tickets
ListView1.SingleLineLayout.Label.TextColor = xui.Color_RGB(25, 118, 210)
ListView1.SingleLineLayout.Label.Typeface = Typeface.DEFAULT_BOLD
' Centrado en ambas direcciones para que parezca un divisor
ListView1.SingleLineLayout.Label.Gravity = Bit.Or(Gravity.CENTER_VERTICAL, Gravity.CENTER_HORIZONTAL)
ListView1.SingleLineLayout.ItemHeight = 50dip
' 3. Diseño del Detalle (Los Productos)
ListView1.TwoLinesLayout.Label.TextSize = 16
ListView1.TwoLinesLayout.Label.TextColor = xui.Color_RGB(33, 33, 33) ' Gris casi negro (mejor lectura)
ListView1.TwoLinesLayout.Label.Typeface = Typeface.DEFAULT_BOLD
ListView1.TwoLinesLayout.Label.Gravity = Gravity.CENTER_VERTICAL
ListView1.TwoLinesLayout.SecondLabel.TextSize = 15
' Verde oscuro para destacar el dinero y la cantidad
ListView1.TwoLinesLayout.SecondLabel.TextColor = xui.Color_RGB(56, 142, 60)
ListView1.TwoLinesLayout.SecondLabel.Typeface = Typeface.DEFAULT_BOLD
ListView1.TwoLinesLayout.ItemHeight = 70dip ' Espacio cómodo para que respire el texto
' Query: Ordena de más antiguo a más reciente
Dim queryVentas As String = $"
SELECT HVD_NUM_TICKET, HVD_PRONOMBRE, HVD_CANT, HVD_COSTO_TOT, HVD_FECHA
FROM hist_ventastodos
WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)
ORDER BY
SUBSTR(HVD_FECHA, 7, 4) ASC,
SUBSTR(HVD_FECHA, 4, 2) ASC,
SUBSTR(HVD_FECHA, 1, 2) ASC,
HVD_NUM_TICKET ASC,
HVD_CODPROMO,
HVD_COSTO_TOT ASC
"$
c = B4XPages.MainPage.skmt.ExecQuery(queryVentas)
If c.RowCount > 0 Then
Dim currentTicket As String = ""
For i = 0 To c.RowCount - 1
c.Position = i
Dim ticket As String = c.GetString("HVD_NUM_TICKET")
Dim fecha As String = c.GetString("HVD_FECHA")
Dim producto As String = c.GetString("HVD_PRONOMBRE")
Dim cant As String = c.GetString("HVD_CANT")
Dim costo As String = c.GetString("HVD_COSTO_TOT")
' Dim Costotodo As Double = 0
' Agregamos el separador de Ticket
If ticket <> currentTicket Then
' Costotodo = Costotodo + costo
' ListView1.AddSingleLine($"🎫 TICKET: ${ticket} | 📅 ${fecha} ${CRLF} 💵 Total: $${NumberFormat2(Costotodo,0,2,2,False)}"$)
ListView1.AddSingleLine($"🎫 TICKET: ${ticket} | 📅 ${fecha}"$)
currentTicket = ticket
End If
' Formateamos el texto del detalle usando Smart String Literal para que se vea más profesional
Dim detalle As String = $"📦 Cantidad: ${cant} | 💵 Total: $${costo}"$
ListView1.AddTwoLines(producto, detalle)
Next
End If
c.Close
' =====================================================================
' Lógica para totales
If Existe <> "0" Then
c = B4XPages.MainPage.skmt.ExecQuery("select SUM(HVD_CANT) AS PC_NOART, SUM(HVD_COSTO_TOT) AS PC_MONTO from hist_ventastodos where HVD_CLIENTE in (Select CUENTA from cuentaa)")
c.Position = 0
L_CANT.Text = c.GetString("PC_NOART")
L_TOTAL.Text = c.GetString("PC_MONTO")
c.Close
End If
' ...
' (AQUÍ SIGUE TU CÓDIGO DEL CustomListView1 PARA EL PROMEDIO DE 4 SEMANAS)
' CustomListView1.AsView.Height = Root.Height * 0.45
' ...
End Sub

Binary file not shown.

BIN
B4A/Files/encuesta_1.bal Normal file

Binary file not shown.

BIN
B4A/Files/encuesta_2.bal Normal file

Binary file not shown.

BIN
B4A/Files/fondo-rojo.rar Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
B4A/Files/nota3.bal Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -22,6 +22,7 @@ ModuleBookmarks27=
ModuleBookmarks28=
ModuleBookmarks29=
ModuleBookmarks3=
ModuleBookmarks30=
ModuleBookmarks4=
ModuleBookmarks5=
ModuleBookmarks6=
@@ -52,6 +53,7 @@ ModuleBreakpoints27=
ModuleBreakpoints28=
ModuleBreakpoints29=
ModuleBreakpoints3=
ModuleBreakpoints30=
ModuleBreakpoints4=
ModuleBreakpoints5=
ModuleBreakpoints6=
@@ -71,23 +73,24 @@ ModuleClosedNodes17=
ModuleClosedNodes18=
ModuleClosedNodes19=
ModuleClosedNodes2=
ModuleClosedNodes20=4
ModuleClosedNodes21=
ModuleClosedNodes20=
ModuleClosedNodes21=4
ModuleClosedNodes22=
ModuleClosedNodes23=
ModuleClosedNodes24=
ModuleClosedNodes25=
ModuleClosedNodes26=
ModuleClosedNodes27=3,4,6,8,9
ModuleClosedNodes28=
ModuleClosedNodes29=20
ModuleClosedNodes27=
ModuleClosedNodes28=3,4,8,9
ModuleClosedNodes29=
ModuleClosedNodes3=
ModuleClosedNodes30=20
ModuleClosedNodes4=
ModuleClosedNodes5=
ModuleClosedNodes6=
ModuleClosedNodes7=6,8,9,10,11
ModuleClosedNodes8=
ModuleClosedNodes9=
NavigationStack=B4XMainPage,Class_Globals,30,0,C_Cliente,recalculoXcant,1300,0,C_Cliente,B4XPage_Appear,542,0,C_Cliente,LA_GPS_Click,1353,0,Tracker,StartFLP2,403,0,Tracker,StartFLPSmall,421,0,Tracker,CreateLocationRequest2,462,1,Tracker,CreateLocationRequestSmallD,453,1,C_Cliente,MejorarPrecisionGPS,1283,4,Tracker,CreateLocationRequest,440,0
NavigationStack=C_Cliente,cb_p7_SelectedIndexChanged,7431,0,C_Cliente,cb_p9_SelectedIndexChanged,7449,0,C_Principal,Subir_Click,659,1,C_Cliente,b_guadarenc_Click,7454,6,C_Cliente,b_ventatb_Click,7411,0,C_Principal,Class_Globals,0,0,C_Principal,connecta_Click,2483,0,C_Principal,JobDone,1419,1,C_Cliente,gest_Click,1928,3,C_Cliente,B4XPage_CloseRequest,3164,0,C_Cliente,gestionar,2342,0
SelectedBuild=0
VisibleModules=27,2,16,28,5,13,17,29,19,4,12,22
VisibleModules=28,2,17,29,5,14,18,30,20,4

View File

@@ -120,6 +120,15 @@ Sub ENVIA_ULTIMA_GPS
reqManager.ExecuteCommand(cmd, "actualizaUltimaGPS")
skmt.ExecNonQuery2("Update cat_variables set CAT_VA_VALOR = ? WHERE CAT_VA_DESCRIPCION = ?" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso"))
'Reiniciamos el timer para cuando llamamos el Sub desde "seleccion"
If B4XPages.MainPage.rutapreventa <> 0 Then
cmd.Initialize
cmd.Name = "select_venta_tb_guna"
cmd.Parameters = Array As Object(B4XPages.MainPage.rutapreventa,B4XPages.MainPage.ALMACEN)
B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_ventastodos")
End If
Timer1.Enabled = False
Timer1.Interval = Interval * 1000
Timer1.Enabled = True
@@ -156,6 +165,29 @@ Sub JobDone(Job As HttpJob)
Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
Log($"Tag: ${RESULT.tag}, success=${Job.Success}"$)
End If
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
If RESULT.Tag = "hist_ventastodos" Then 'query tag
For Each records() As Object In RESULT.Rows
' Log ("NO HACE NADA")
Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE"))
Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE"))
Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT"))
Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT"))
Dim HVD_FECHA As String = records(RESULT.Columns.Get("HVD_FECHA"))
Dim HVD_NUM_TICKET As String = records(RESULT.Columns.Get("HVD_NUM_TICKET"))
Dim HVD_CODPROMO As String = records(RESULT.Columns.Get("HVD_CODPROMO"))
' Log(HVD_CLIENTE&"--"&HVD_PRONOMBRE&"--"&HVD_CANT&"--"&HVD_COSTO_TOT)
Private tc As Cursor = skmt.ExecQuery($"select * from hist_ventastodos where HVD_CLIENTE = '${HVD_CLIENTE}' and HVD_PRONOMBRE = '${HVD_PRONOMBRE}' AND HVD_CANT = '${HVD_CANT}' AND HVD_CODPROMO = '${HVD_CODPROMO}' AND HVD_COSTO_TOT = '${HVD_COSTO_TOT}' "$)
If tc.RowCount = 0 Then
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO hist_ventastodos(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA, HVD_NUM_TICKET,HVD_CODPROMO) VALUES (?,?,?,?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_FECHA, HVD_NUM_TICKET,HVD_CODPROMO))
End If
Next
End If
End If
' Log("JOBDONE SUCCESS")
End If
End Sub

View File

@@ -779,7 +779,7 @@ End Sub
Sub traeRuta2 (cliente As String) As String 'ignore
Private c As Cursor
Private r As String
c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info2 where CAT_CL_CODIGO = '${cliente}'"$)
c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info3 where CAT_CL_CODIGO = '${cliente}'"$)
r = "0"
If c.RowCount > 0 Then
c.Position=0