mirror of
https://github.com/KeymonSoft/Intmex_Multiventa.git
synced 2026-04-18 05:09:15 +00:00
- Se completo el codigo para productos variables 3 en promos. - Se cambio codigo de validador para contemplar la posibilidad de que se pongan "_" en el nombre de las promos. - Se agregó columna VARREG3 a la tabla de cat_gunaprod2.
289 lines
13 KiB
QBasic
289 lines
13 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 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"), 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("_")+22)
|
|
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("\|", cliente)
|
|
Log($"${pars(0)},${pars(1)},${pars(2)}"$)
|
|
LogColor($"update PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 0"$, Colors.red)
|
|
skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' 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("_")+23)
|
|
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("\|", cliente)
|
|
skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 1"$)
|
|
LogColor($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 1"$, Colors.red)
|
|
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("_") + 22)
|
|
Log(cliente)
|
|
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)
|
|
' Log($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 2 where PC_CLIENTE = '${pars(3)}'"$)
|
|
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}"$)
|
|
' Si el numero de articulos y monto total coinciden en web y local, ponemos PC_VALIDADO en 2.
|
|
Private pc As Cursor =skmt.ExecQuery($"select * from pedido_cliente where pc_cliente = '${pars(1)}'"$)
|
|
If pc.RowCount > 0 Then
|
|
pc.Position = 0
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "validaCCT2_Intmex"
|
|
cmd.Parameters = Array As Object(pc.GetString("PC_CLIENTE"), pc.GetString("PC_USER"), pc.GetString("PC_FECHA"), pc.GetString("PC_MONTO"), pc.GetString("PC_NOART"), Subs.traeAlmacen, Subs.traeRuta)
|
|
reqManager.ExecuteCommand(cmd , $"validaCCT2_${pc.GetString("PC_CLIENTE")}"$)
|
|
End If
|
|
|
|
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
|
|
' VALIDA CANTIDADES Y COSTOS TOTALES
|
|
If resultado.Tag.As(String).IndexOf("validaCCT2_") > -1 Then
|
|
Log("validaCCT2_")
|
|
Subs.logJobDoneResultados(resultado)
|
|
|
|
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 |