mirror of
https://github.com/KeymonSoft/Intmex_Multiventa.git
synced 2026-04-17 12:56:08 +00:00
- Agregar clase C_Validador!!
This commit is contained in:
266
B4A/C_Validador.bas
Normal file
266
B4A/C_Validador.bas
Normal file
@@ -0,0 +1,266 @@
|
||||
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 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
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize As Object
|
||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
timerValidador.Initialize("timerValidador", intervalo * 1000)
|
||||
timerValidador.Enabled = True
|
||||
If File.Exists(File.DirInternal, "kmt.db") = False Then
|
||||
File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db")
|
||||
LogColor($"Copiamos ${"kmt.db"} de ${File.DirAssets} a ${File.DirInternal}"$,Colors.Green)
|
||||
End If
|
||||
skmt.Initialize(File.DirInternal, "kmt.db", True)
|
||||
Subs.agregaColumna("PEDIDO", "PE_GUARDADO", "TEXT DEFAULT '0'")
|
||||
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.
|
||||
|
||||
Sub iniciaValidacion
|
||||
Log("INICIAMOS VALIDACIONES DE PEDIDOS")
|
||||
mandaGuardados
|
||||
Sleep(5000)
|
||||
revisaGuardados
|
||||
Sleep(5000)
|
||||
revisaCantsYMontosTotales
|
||||
Log("TIMER RESET")
|
||||
timerValidador.Enabled = False
|
||||
timerValidador.Initialize("timerValidador", intervalo * 1000)
|
||||
timerValidador.Enabled = True
|
||||
End Sub
|
||||
|
||||
Sub timerValidador_Tick
|
||||
Log("TIMER TICK")
|
||||
Log("----->> PANTALLA ACTUAL: " & B4XPages.GetManager.GetTopPage.Id)
|
||||
iniciaValidacion
|
||||
End Sub
|
||||
|
||||
'Manda a web los pedidos GUARDADOS con ENVIO_OK = 0 y los pone en 1.
|
||||
Sub mandaGuardados
|
||||
Log(">>>>>>> MANDA GUARDADOS")
|
||||
' PEDIDO_CLIENTE (Pendientes)
|
||||
Dim PCNoArts As String
|
||||
Dim PCMonto As String
|
||||
Private almacen As String = Subs.traeAlmacen
|
||||
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
|
||||
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 = "insert_pedidos_INTMEX"
|
||||
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"), almacen, B4XPages.MainPage.principal.l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA"))
|
||||
PCNoArts = c.GetString("PC_NOART")
|
||||
PCMonto = c.GetString("PC_MONTO")
|
||||
reqManager.ExecuteCommand(cmd , $"ins_mandaGuardados_head_${c.GetString("PC_CLIENTE")}"$)
|
||||
Next
|
||||
End If
|
||||
|
||||
'PEDIDO (Pendientes)
|
||||
c = skmt.ExecQuery($"SELECT * FROM PEDIDO where PE_ENVIO_OK < 2 and PE_GUARDADO = 1"$)
|
||||
Log($"Pedido PENDIENTE: ${c.RowCount}"$)
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "insert_pedido4_INTMEX"
|
||||
cmd.Parameters = Array As Object(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,c.GetString("PE_TICKET"))
|
||||
reqManager.ExecuteCommand(cmd, $"ins_mandaGuardados_prods_${c.GetString("PE_CLIENTE")}_${c.GetString("PE_PROID")}_${c.GetString("PE_CEDIS")}"$)
|
||||
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
|
||||
c.Close
|
||||
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
|
||||
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"), c.GetString("PC_MONTO"), c.GetString("PC_NOART"), 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}"$)
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position=i
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "validaProd_Intmex"
|
||||
cmd.Parameters = Array As Object(C.GetString("PE_CLIENTE"),C.GetString("PE_USUARIO"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CEDIS"),almacen,laRuta)
|
||||
reqManager.ExecuteCommand(cmd , $"ins_revisaGuardados_prods_${c.GetString("PE_CLIENTE")}_${c.GetString("PE_PROID")}_${c.GetString("PE_CEDIS")}"$)
|
||||
' 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
|
||||
c.Close
|
||||
End Sub
|
||||
|
||||
'Revisa que coincidan las cantidades y montos totales de los pedidos en web y locales, y si coinciden, pone PC_ENVIO_OK en 3 (en JobDone).
|
||||
'Si No coinciden, pone en CERO PC_ENVIO_OK y PE_ENVIO_OK y reinicia el proceso de validacion.
|
||||
Sub revisaCantsYMontosTotales
|
||||
Log(">>>>>>> VALIDA CANTIDADES Y MONTOS")
|
||||
Private almacen As String = Subs.traeAlmacen
|
||||
Private laRuta As String = Subs.traeRuta
|
||||
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 2")
|
||||
Log($"Pedidos a VALIDAR (Cants y Montos): ${c.RowCount}"$)
|
||||
If c.RowCount>0 Then
|
||||
For i=0 To c.RowCount -1
|
||||
c.Position=i
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "validaCantsCostosTotales_Intmex"
|
||||
cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"),C.GetString("PC_USER"),almacen,laRuta)
|
||||
Log($"${C.GetString("PC_CLIENTE")},${C.GetString("PC_USER")},${almacen},${laRuta}"$)
|
||||
reqManager.ExecuteQuery(cmd , 0, $"validaCantsCostosTotales_${c.GetString("PC_CLIENTE")}_${c.GetString("PC_NOART")}_${c.GetString("PC_MONTO")}"$)
|
||||
Next
|
||||
End If
|
||||
c.Close
|
||||
End Sub
|
||||
|
||||
Sub JobDone(Job As HttpJob)
|
||||
' Log(Job.Success)
|
||||
If Job.Success = False Then
|
||||
ToastMessageShow("Validador JobDone Error: " & Job.ErrorMessage, True)
|
||||
Else
|
||||
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green)
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||
|
||||
If resultado.Tag = "ruta" Then 'query tag
|
||||
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_")
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_")+24)
|
||||
For Each records() As Object In resultado.Rows
|
||||
If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then
|
||||
Private pars() As String = Regex.Split("_", resultado.tag)
|
||||
skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 1 where PC_CLIENTE = '${pars(3)}'"$)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
' PEDIDOS GUARDADOS PRODS
|
||||
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||
If resultado.Tag.As(String).IndexOf("ins_mandaGuardados_prods_") > -1 Then
|
||||
Log("ins_mandaGuardados_prods_")
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_")+25)
|
||||
Log($"Cliente2:${cliente}"$)
|
||||
For Each records() As Object In resultado.Rows
|
||||
Log("AffectedRows: " & records(resultado.Columns.Get("AffectedRows")))
|
||||
If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then
|
||||
Private pars() As String = Regex.Split("_", resultado.tag)
|
||||
skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${pars(3)}' and PE_PROID = '${pars(4)}' and PE_CEDIS = '${pars(5)}' and PE_ENVIO_OK = 0"$)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
' REVISA GUARDADOS PRODS
|
||||
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||
If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_prods_") > -1 Then
|
||||
Log("ins_revisaGuardados_prods_")
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_")+25)
|
||||
Log($"Cliente2:${cliente}"$)
|
||||
For Each records() As Object In resultado.Rows
|
||||
Log("AffectedRows: " & records(resultado.Columns.Get("AffectedRows")))
|
||||
If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then
|
||||
Private pars() As String = Regex.Split("_", resultado.tag)
|
||||
skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(3)}' and PE_PROID = '${pars(4)}' and PE_CEDIS = '${pars(5)}' and PE_ENVIO_OK = 1"$)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
' REVISA GUARDADOS HEAD
|
||||
If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_head_") > -1 Then
|
||||
Log("ins_revisaGuardados_head_")
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_") + 24)
|
||||
For Each records() As Object In resultado.Rows
|
||||
If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then
|
||||
Private pars() As String = Regex.Split("_", resultado.tag)
|
||||
skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 2 where PC_CLIENTE = '${pars(3)}'"$)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
' REVISA CANTIDADES Y MONTOS TOTALES
|
||||
If resultado.Tag.As(String).IndexOf("validaCantsCostosTotales_") > -1 Then
|
||||
Log("validaCantsCostosTotales_")
|
||||
Subs.logJobDoneResultados(resultado)
|
||||
Private cliente As String= resultado.Tag
|
||||
cliente = cliente.SubString(cliente.IndexOf("_")+1)
|
||||
Log("CLIENTE: " & cliente)
|
||||
For Each records() As Object In resultado.Rows
|
||||
' Si el numero de articulos y monto total coinciden en web y local, ponemos PC_ENVIO_OK en 3.
|
||||
Private pars() As String = Regex.Split("_", resultado.tag)
|
||||
Dim COSTOT As String = records(resultado.Columns.Get("COSTOT"))
|
||||
Dim CANTT As String = records(resultado.Columns.Get("CANTT"))
|
||||
' Si montos y cantidades coinciden en local y web, ponemos PC_ENVIO_OK en 3, si no, REINICIAMOS TODO!!
|
||||
If pars(2) = CANTT And pars(3) = COSTOT Then
|
||||
skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 3 where PC_CLIENTE = '${pars(1)}' and PC_NOART = ${CANTT} and PC_MONTO = ${COSTOT}"$)
|
||||
Else
|
||||
LogColor("################################################################", Colors.red)
|
||||
LogColor("##### LAS CANTIDADES Y MONTOS NO COINCIDEN EN WEB #####", Colors.red)
|
||||
LogColor("################################################################", Colors.red)
|
||||
skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 0 where PC_CLIENTE = '${pars(1)}'"$)
|
||||
skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 0 where PE_CLIENTE = '${pars(1)}'"$)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
' If resultado.Tag.As(String).IndexOf("validaProds_") > -1 Then
|
||||
' Log("validaProds_")
|
||||
' Subs.logJobDoneResultados(resultado)
|
||||
' End If
|
||||
End If
|
||||
Job.Release
|
||||
End If
|
||||
End Sub
|
||||
@@ -73,7 +73,7 @@ ModuleClosedNodes17=
|
||||
ModuleClosedNodes18=
|
||||
ModuleClosedNodes19=
|
||||
ModuleClosedNodes2=
|
||||
ModuleClosedNodes20=6
|
||||
ModuleClosedNodes20=
|
||||
ModuleClosedNodes21=
|
||||
ModuleClosedNodes22=
|
||||
ModuleClosedNodes23=
|
||||
@@ -91,6 +91,6 @@ ModuleClosedNodes6=
|
||||
ModuleClosedNodes7=
|
||||
ModuleClosedNodes8=
|
||||
ModuleClosedNodes9=
|
||||
NavigationStack=C_TicketsDia,b_noventa_Click,156,0,C_TicketsDia,B4XPage_Created,28,0,C_TicketsDia,B4XPage_Appear,92,6,C_Principal,JobDone,1558,0,C_Principal,Subir_Click,695,0,C_Validador,revisaCantsYMontosTotales,149,0,C_Validador,timerValidador_Tick,52,0,C_Validador,revisaGuardados,93,0,C_Validador,iniciaValidacion,37,0,C_Validador,mandaGuardados,92,0,C_Validador,JobDone,159,0
|
||||
NavigationStack=C_TicketsDia,B4XPage_Appear,92,6,C_Principal,JobDone,1558,0,C_Principal,Subir_Click,695,0,C_Validador,timerValidador_Tick,52,0,C_Validador,Class_Globals,11,0,C_Validador,iniciaValidacion,37,0,C_Validador,revisaGuardados,113,0,C_Validador,mandaGuardados,87,0,C_Validador,JobDone,196,0,C_Validador,revisaCantsYMontosTotales,142,0
|
||||
SelectedBuild=0
|
||||
VisibleModules=2,28,13,14,4,20,29,15,16,18
|
||||
|
||||
Reference in New Issue
Block a user