- VERSION 5.05.11

- Se agrego en "Principal" que cuando haya pedidos pendientes, aparezca un mensaje y el estatus del envio de los pedidos.
- Se agregó en "Principal" un icono de "conexion" en la esquina superior derecha, que dependiendo de la conexion se pone verde o rojo.
- Se agrego la version y el estatus de la conexion a tmp_drop.
- Se agrego la version y el estatus de la conexion a la ubicacion em tiempo real (CAT_RUTAS)
This commit is contained in:
2025-05-12 18:38:05 -06:00
parent 87645b4c9f
commit ec9e4b8f8d
8 changed files with 333 additions and 78 deletions

View File

@@ -7,16 +7,21 @@ Version=12.8
Sub Class_Globals
Private Root As B4XView 'ignore
Private xui As XUI 'ignore
Private EventName As String 'ignore
Private CallBack As Object 'ignore
Dim reqManager As DBRequestManager
Dim timerValidador As Timer
Dim intervalo As Int = 300
Dim skmt As SQL
Dim c As Cursor
Dim sDate, sTime As String
dim totalAValidar as int = 0
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
Public Sub Initialize (vCallback As Object, vEventName As String) As Object
EventName = vEventName
CallBack = vCallback
reqManager.Initialize(Me, Starter.DBReqServer)
timerValidador.Initialize("timerValidador", intervalo * 1000)
timerValidador.Enabled = True
@@ -57,6 +62,17 @@ Sub timerValidador_Tick
iniciaValidacion
End Sub
' Regresa cuantos pedidos sin gardar o enviar hay.
Sub buscaSinEnviar As Int
Private x As Int = 0
Private f As Cursor = skmt.ExecQuery("SELECT count(*) as cuantos FROM PEDIDO_CLIENTE where PC_ENVIO_OK < 2 and PC_GUARDADO = 1")
If f.RowCount > 0 Then
f.Position = 0
x = f.GetInt("cuantos")
End If
Return x
End Sub
'Manda a web los pedidos GUARDADOS con ENVIO_OK = 0 y los pone en 1.
Sub mandaGuardados
Log(">>>>>>> MANDA GUARDADOS")
@@ -67,6 +83,7 @@ Sub mandaGuardados
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK < 2 and PC_GUARDADO = 1")
Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$)
If c.RowCount > 0 Then
pedidoGuardando($"Guardando ..."$)
For i = 0 To c.RowCount - 1
c.Position = i
Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$)
@@ -100,30 +117,16 @@ End Sub
'Revisa que los pedidos con envio_ok < 2 esten completos en web y los pone en 2.
Sub revisaGuardados
Log(">>>>>>> VALIDA GUARDADOS")
'' Dim PCNoArts As String
'' Dim PCMonto As String
'' Dim PCNoArts As String
'' Dim PCMonto As String
Private almacen As String = Subs.traeAlmacen
Private laRuta As String = Subs.traeRuta
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 1")
Log($"Pedido_Cliente VALIDAR: ${c.RowCount}"$)
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "validaPC_Intmex"
cmd.Parameters = Array As Object(c.GetString("PC_CLIENTE"), c.GetString("PC_USER"), c.GetString("PC_FECHA"), almacen, laRuta)
' PCNoArts = c.GetString("PC_NOART")
' PCMonto = c.GetString("PC_MONTO")
reqManager.ExecuteCommand(cmd , $"ins_revisaGuardados_head_${c.GetString("PC_CLIENTE")}"$)
Next
End If
'PEDIDO (Pendientes)
c = skmt.ExecQuery($"SELECT * FROM PEDIDO where PE_ENVIO_OK = 1"$)
Log($"Pedido VALIDAR: ${c.RowCount}"$)
Log($"Pedidos a VALIDAR: ${c.RowCount}"$)
If c.RowCount > 0 Then
pedidoEnviando($"Enviando ..."$)
For i = 0 To c.RowCount - 1
c.Position=i
Dim cmd As DBCommand
@@ -134,6 +137,40 @@ Sub revisaGuardados
' Log($">>>> INS_PEDIDO= ${C.GetString("PE_CEDIS")},${almacen},${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")}, ${PCNoArts}, ${PCMonto}, ${PCMonto}, ${c.GetString("PE_TICKET")}"$)
Next
End If
Sleep(5000)
' Subir los productos del pedido, y en el jobdone revisar si ya se enviaron todos los de ese pedido (verificar con AffectedRows = 1), si ya se enviaron,
' entonces Y SOLO ENTONCES, subir el header del pedido y validarlo con AffectedRows = 1.
'PEDIDO CLIENTE
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 1")
Log($"Pedidos_Cliente a VALIDAR: ${c.RowCount}"$)
If c.RowCount > 0 Then
pedidoEnviando($"Enviando ..."$)
For i = 0 To c.RowCount - 1
Private cuantosProdsPedido As Int = 0
c.Position = i
' Traemos la cantidad de productos "validados" de PEDIDO.
Private x As Cursor = Starter.skmt.ExecQuery($"select sum(pe_cant) as cuantos from pedido where pe_cliente = '${c.GetString("PC_CLIENTE")}' and pe_envio_ok = 2"$)
If x.RowCount > 0 Then
x.Position = 0
cuantosProdsPedido = x.GetInt("cuantos")
End If
Log($"Articulos en cliente ${c.GetString("PC_CLIENTE")}: P:${cuantosProdsPedido}, PC:${c.GetInt("PC_NOART")}"$)
' Si los productos validados en PEDIDO coinciden con los productos de PEDIDO_CLIENTE, entonces validamos el header.
If cuantosProdsPedido = c.GetInt("PC_NOART") Then
Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "validaPC_Intmex"
cmd.Parameters = Array As Object(c.GetString("PC_CLIENTE"), c.GetString("PC_USER"), c.GetString("PC_FECHA"), almacen, laRuta)
' PCNoArts = c.GetString("PC_NOART")
' PCMonto = c.GetString("PC_MONTO")
reqManager.ExecuteCommand(cmd , $"ins_revisaGuardados_head_${c.GetString("PC_CLIENTE")}"$)
End If
Next
End If
c.Close
End Sub
@@ -145,7 +182,8 @@ Sub revisaCantsYMontosTotales
Private laRuta As String = Subs.traeRuta
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 2 or 1") ' El uno del final es para que SIEMPRE revise las cantidades y montos, por si se borra la orden desde web, para que se envíe NUEVAMENTE.
Log($"Pedidos a VALIDAR (Cants y Montos): ${c.RowCount}"$)
If c.RowCount>0 Then
If c.RowCount > 0 Then
totalAValidar = c.RowCount
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
@@ -172,7 +210,6 @@ Sub JobDone(Job As HttpJob)
Log("JOBDONE VALIDADOR RUTA")
Subs.logJobDoneResultados(resultado)
End If
' PEDIDOS GUARDADOS HEAD
If resultado.Tag.As(String).IndexOf("ins_mandaGuardados_head_") > -1 Then
Log("ins_mandaGuardados_head_")
@@ -185,6 +222,7 @@ Sub JobDone(Job As HttpJob)
skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 1 where PC_CLIENTE = '${pars(3)}'"$)
End If
Next
' pedidoGuardando("Listo")
End If
' PEDIDOS GUARDADOS PRODS
Dim resultado As DBResult = reqManager.HandleJob(Job)
@@ -224,7 +262,7 @@ Sub JobDone(Job As HttpJob)
' REVISA GUARDADOS HEAD
If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_head_") > -1 Then
Log("ins_revisaGuardados_head_")
Subs.logJobDoneResultados(resultado)
Subs.logJobDoneResultados(resultado)
Private cliente As String= resultado.Tag
cliente = cliente.SubString(cliente.IndexOf("_") + 22)
Log(cliente)
@@ -238,7 +276,10 @@ Sub JobDone(Job As HttpJob)
End If
' REVISA CANTIDADES Y MONTOS TOTALES
If resultado.Tag.As(String).IndexOf("validaCantsCostosTotales_") > -1 Then
pedidoValidando($"Validando ..."$)
totalAValidar = totalAValidar - 1
Log("validaCantsCostosTotales_")
Log("totalAValidar: " & totalAValidar)
Subs.logJobDoneResultados(resultado)
Private cliente As String= resultado.Tag
cliente = cliente.SubString(cliente.IndexOf("_")+1)
@@ -270,6 +311,10 @@ Sub JobDone(Job As HttpJob)
skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 0 where PE_CLIENTE = '${pars(1)}'"$)
End If
Next
If totalAValidar <= 0 Then
totalAValidar = 0
validacionTerminada("Listo!!")
End If
End If
' VALIDA CANTIDADES Y COSTOS TOTALES
If resultado.Tag.As(String).IndexOf("validaCCT2_") > -1 Then
@@ -284,4 +329,36 @@ Sub JobDone(Job As HttpJob)
End If
Job.Release
End If
End Sub
Sub pedidoGuardando(msg As String)
Log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - Guardando")
If SubExists(CallBack, EventName & "_Guardando") Then
Log("GGG")
CallSub2(CallBack, EventName & "_Guardando", msg)
End If
End Sub
Sub pedidoEnviando(msg As String)
' Log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - Enviando")
If SubExists(CallBack, EventName & "_Enviando") Then
' Log("EEE")
CallSub2(CallBack, EventName & "_Enviando", msg)
End If
End Sub
Sub pedidoValidando(msg As String)
' Log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - Validadndo")
If SubExists(CallBack, EventName & "_Validando") Then
' Log("VVVV")
CallSub2(CallBack, EventName & "_Validando", msg)
End If
End Sub
Sub validacionTerminada(msg As String)
Log("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - Terminado")
If SubExists(CallBack, EventName & "_Terminado") Then
' Log("VVVV")
CallSub2(CallBack, EventName & "_Terminado", msg)
End If
End Sub