mirror of
https://github.com/KeymonSoft/DBCheck.git
synced 2026-04-17 19:37:09 +00:00
400 lines
19 KiB
QBasic
400 lines
19 KiB
QBasic
B4A=true
|
|
Group=Default Group
|
|
ModulesStructureVersion=1
|
|
Type=Class
|
|
Version=12.8
|
|
@EndOfDesignText@
|
|
Sub Class_Globals
|
|
' Declarada como Dim para ser accesible desde B4XMainPage (según patrón B4A)
|
|
Dim reqManager As DBRequestManager
|
|
Dim c, d, b As Cursor
|
|
Dim usuario, almacen As String
|
|
Dim cuantos_pedido, cuantos_noventa, cuantos_pedidosc As String
|
|
Dim foto1(), foto2(), foto3(), foto4() As Byte
|
|
Dim PORCENTAJE, PASO, PERFIL, NUMERO_PEDIDO, l_ruta As String
|
|
Dim contador_env, contador_strem, reqTotales As Int
|
|
End Sub
|
|
|
|
' Initializes the object.
|
|
Public Sub Initialize
|
|
l_ruta = ""
|
|
PASO = "1"
|
|
End Sub
|
|
|
|
' Método de entrada de DBCheck: Configura el Manager y llama a la subrutina de envío.
|
|
Public Sub ConfigurarYEnviar(ServidorURL As String)
|
|
' Inicializa el Manager con el Target correcto (Me = C_Kelloggs)
|
|
reqManager.Initialize(Me, ServidorURL)
|
|
|
|
' Obtener valores necesarios de forma centralizada
|
|
almacen = Subs.traeAlmacen
|
|
usuario = Subs.traeUsuarioDeBD
|
|
|
|
' Iniciar el flujo de envío estandarizado
|
|
envia
|
|
|
|
' Iniciar el temporizador para la validación si la lista de peticiones no está vacía
|
|
reqTotales = reqManager.reqsList.Size
|
|
If reqTotales > 0 Then
|
|
Dim t1 As Timer
|
|
t1.Initialize("T1", 20000)
|
|
t1.Enabled = True
|
|
End If
|
|
End Sub
|
|
|
|
' **FUNCIÓN ESTANDARIZADA:** Ejecuta la subida de datos (equivalente a Subir_Click -> SUBIR_INFO_PEDIDO)
|
|
Public Sub envia
|
|
' 1. Limpieza y preparación inicial (lógica de Subir_Click)
|
|
SUBIR_INFO_PREPARACION
|
|
|
|
' 2. Lógica principal de ejecución de comandos (Extraída del SUBIR_INFO_PEDIDO original)
|
|
SUBIR_INFO_EJECUTAR_COMANDOS
|
|
End Sub
|
|
|
|
Private Sub SUBIR_INFO_PREPARACION
|
|
' Limpieza y obtención de datos antes de enviar.
|
|
|
|
' 1. Borrar pedidos no impresos (lógica de B4XPage_Appear/Subir_Click)
|
|
Dim t As Cursor = B4XPages.MainPage.skmt.ExecQuery("Select cat_cl_codigo from kmt_info where impresion = 0 and cat_cl_codigo not in (select ci_cuenta from cliente_impreso) and cat_cl_codigo in (select distinct pe_cliente from pedido)")
|
|
If t.RowCount > 0 Then
|
|
For i = 0 To t.RowCount - 1
|
|
t.Position = i
|
|
Log($"Cliente con pedido no impreso (BORRADO TEÓRICO): ${t.GetString("CAT_CL_CODIGO")}"$)
|
|
Next
|
|
t.Close
|
|
End If
|
|
|
|
' 2. Obtener valores para el envío
|
|
l_ruta = Subs.traeRuta
|
|
|
|
' 3. Limpieza de tablas (similar a la lógica en Subir_Click)
|
|
B4XPages.MainPage.skmt.ExecNonQuery2("delete from PEDIDO WHERE PE_PRONOMBRE = ? ", Array As Object("N/A"))
|
|
B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE not In (select PE_CLIENTE from pedido)")
|
|
|
|
' 4. Actualizar la ruta en la tabla PEDIDO (Lógica de Subir_Click)
|
|
c = B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_RUTA from kmt_info")
|
|
If c.RowCount > 0 Then
|
|
For i = 0 To c.RowCount - 1
|
|
c.Position=i
|
|
B4XPages.MainPage.skmt.ExecNonQuery2("update PEDIDO set PE_RUTA = ? where PE_CLIENTE = ?", Array As Object(c.GetString("CAT_CL_RUTA"),c.GetString("CAT_CL_CODIGO")))
|
|
Next
|
|
End If
|
|
c.Close
|
|
|
|
' 5. Obtener PERFIL y NUMERO_PEDIDO
|
|
c = B4XPages.MainPage.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
|
|
PERFIL = "0"
|
|
If c.RowCount > 0 Then c.Position = 0: PERFIL = c.GetString("CAT_VA_VALOR")
|
|
c.Close
|
|
|
|
c = B4XPages.MainPage.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO"))
|
|
NUMERO_PEDIDO = "0"
|
|
If c.RowCount > 0 Then c.Position = 0: NUMERO_PEDIDO = c.GetString("CAT_VA_VALOR")
|
|
c.Close
|
|
|
|
' 6. Cargar fotos para el Checklist (si existen)
|
|
If File.Exists(File.DirInternal,"FOTO1.jpg") Then foto1 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO1.jpg"))
|
|
If File.Exists(File.DirInternal,"FOTO2.jpg") Then foto2 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO2.jpg"))
|
|
If File.Exists(File.DirInternal,"FOTO3.jpg") Then foto3 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO3.jpg"))
|
|
If File.Exists(File.DirInternal,"FOTO4.jpg") Then foto4 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO4.jpg"))
|
|
End Sub
|
|
|
|
Private Sub SUBIR_INFO_EJECUTAR_COMANDOS
|
|
' Lógica extraída de SUBIR_INFO_PEDIDO (el core de la subida original)
|
|
|
|
Dim PEDIDO_TOT As String = "0"
|
|
Dim L_ABORDO_VAL As String = "0"
|
|
Dim monto1 As String = "0"
|
|
Dim fecha As String = Subs.traeFecha
|
|
|
|
' --- OBTENCIÓN DE TOTALES ---
|
|
b = B4XPages.MainPage.skmt.ExecQuery("Select count(*) as CUANTOS from pedido where pe_cliente <> 0")
|
|
If b.GetString("CUANTOS") > 0 Then
|
|
c = B4XPages.MainPage.skmt.ExecQuery("Select sum(PE_COSTO_TOT) AS TOTAL from pedido where pe_cliente <> 0")
|
|
PEDIDO_TOT = c.GetString("TOTAL")
|
|
c.Close
|
|
End If
|
|
b.Close
|
|
|
|
b = B4XPages.MainPage.skmt.ExecQuery("Select count(*) as CUANTOS from pedido where pe_cliente = 0")
|
|
If b.GetString("CUANTOS") > 0 Then
|
|
c = B4XPages.MainPage.skmt.ExecQuery("Select sum(PE_COSTO_TOT) AS TOTAL from pedido where pe_cliente = 0")
|
|
L_ABORDO_VAL = c.GetString("TOTAL")
|
|
c.Close
|
|
End If
|
|
b.Close
|
|
|
|
d = B4XPages.MainPage.skmt.ExecQuery("SELECT SUM(PE_COSTO_TOT) as MONTO FROM PEDIDO")
|
|
If d.GetString("MONTO") <> Null And d.GetString("MONTO") <> "" Then monto1 = d.GetString("MONTO")
|
|
monto1 = monto1 - L_ABORDO_VAL
|
|
|
|
' --- 1. ENVIO DEL DROP (cabecera) ---
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name ="insert_drop2_KELL"
|
|
cmd.Parameters = Array As Object(usuario, l_ruta, Subs.traeFecha, 0, 0, 0, 0, 0, monto1, "ENVIO", almacen, L_ABORDO_VAL)
|
|
reqManager.ExecuteCommand(cmd , "inst_noventa_ins_drop_kell")
|
|
contador_env = contador_env + 1
|
|
|
|
' --- 2. UPDATE DE INFO_E ---
|
|
cmd.Initialize
|
|
cmd.Name ="UPDATE_INFO_E_KELL"
|
|
cmd.Parameters = Array As Object(PEDIDO_TOT, L_ABORDO_VAL, d.GetDouble("MONTO"), l_ruta, almacen)
|
|
reqManager.ExecuteCommand(cmd , "inst_noventa_Upd_Info_e_Kell")
|
|
contador_env = contador_env + 1
|
|
d.Close
|
|
|
|
' --- 3. BITACORA GPS ---
|
|
Private h As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select * from bitacoraGPS"$)
|
|
Do While h.nextrow
|
|
cmd.Initialize
|
|
cmd.Name = "mandaBitacora3"
|
|
cmd.Parameters = Array As Object(h.GetString("almacenb"), h.GetString("usuariob"), h.GetString("rutab"), h.GetString("eventob"), h.GetString("clienteb"), h.GetString("clienteb"), h.GetString("iniciob"), h.GetString("finb"), h.GetString("latitudb"), h.GetString("longitudb"), h.GetString("precision"), h.GetString("motivonoventa"), h.GetString("motivonovisita"), h.GetString("fechab"))
|
|
reqManager.ExecuteCommand(cmd , "mandaBitacora")
|
|
Loop
|
|
h.Close
|
|
|
|
' --- 4. ENCUESTA ---
|
|
c = B4XPages.MainPage.skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO FROM HIST_ENCUESTA")
|
|
If c.RowCount > 0 Then
|
|
For i = 0 To c.RowCount - 1
|
|
c.Position=i
|
|
cmd.Initialize
|
|
cmd.Name = "insert_encuesta_KELL"
|
|
cmd.Parameters = Array As Object(c.GetString("HE_CLIE"),c.GetString("HE_RES"),c.GetString("HE_FECHA"), c.GetString("HE_TIPO"),l_ruta )
|
|
reqManager.ExecuteCommand(cmd , "inst_noventa_ins_enc_kell_"&i)
|
|
contador_env = contador_env + 1
|
|
Next
|
|
End If
|
|
c.Close
|
|
|
|
' --- 5. CLIENTES NUEVOS ---
|
|
c = B4XPages.MainPage.skmt.ExecQuery2("SELECT CAT_CL_CODIGO, CAT_CL_NOMBRE FROM kmt_info where CAT_CL_ATIENDE1 = ?", Array As String("new"))
|
|
If c.RowCount > 0 Then
|
|
For i = 0 To c.RowCount - 1
|
|
c.Position = i
|
|
cmd.Initialize
|
|
cmd.Name = "insert_clie_new_KELL"
|
|
cmd.Parameters = Array As Object(c.GetString("CAT_CL_CODIGO"),c.GetString("CAT_CL_NOMBRE"),l_ruta,almacen )
|
|
reqManager.ExecuteCommand(cmd , "inst_noventa_ins_clie_new_kell")
|
|
contador_env = contador_env + 1
|
|
Next
|
|
End If
|
|
c.Close
|
|
|
|
' --- 6. PEDIDO_CLIENTE (Cabeceras) ---
|
|
enviaPedidoCliente("Todos")
|
|
|
|
d = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDOSC FROM PEDIDO_CLIENTE ")
|
|
cuantos_pedidosc = D.GetString("CUANTOS_PEDIDOSC")
|
|
d.Close
|
|
|
|
' --- 7. PEDIDO (Detalle de Productos) ---
|
|
enviaPedido("Todos")
|
|
|
|
d = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO")
|
|
cuantos_pedido = D.GetString("CUANTOS_PEDIDO")
|
|
d.Close
|
|
|
|
' --- 8. NOVENTA ---
|
|
c = B4XPages.MainPage.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON FROM NOVENTA")
|
|
D = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
|
|
If c.RowCount > 0 Then
|
|
For i = 0 To c.RowCount - 1
|
|
c.Position = i
|
|
cmd.Initialize
|
|
cmd.Name = "insert_noventa_KELL"
|
|
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"), almacen, l_ruta)
|
|
reqManager.ExecuteCommand(cmd , "inst_noventa_ins_noventa_kell")
|
|
contador_env = contador_env + 1
|
|
Next
|
|
c.Close
|
|
End If
|
|
D.Position=0
|
|
cuantos_noventa = D.GetString("CUANTOS_NOVENTA")
|
|
D.Close
|
|
|
|
' --- 9. ENTREGA DOE ---
|
|
c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_CLIENTE, PC_ENTREGA FROM PEDIDOS_DOE_ENTREGA")
|
|
If c.RowCount>0 Then
|
|
For i=0 To c.RowCount -1
|
|
c.Position=i
|
|
cmd.Initialize
|
|
cmd.Name = "UPDATE_PEDIDOS_DOE_ENTREGA"
|
|
cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"),C.GetString("PC_ENTREGA"), almacen, l_ruta)
|
|
reqManager.ExecuteCommand(cmd , "UPDATE_PEDIDOS_DOE_ENTREGA")
|
|
Next
|
|
c.Close
|
|
End If
|
|
|
|
' --- 10. CHECK LIST VEHÍCULO ---
|
|
c = B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM TMP_INSPECCION_AUTO_DIARIA")
|
|
If c.RowCount > 0 Then
|
|
For i = 0 To c.RowCount - 1
|
|
c.Position = i
|
|
cmd.Initialize
|
|
cmd.Name = "INSERT_TMP_INSPECCION_AUTO_DIARIA"
|
|
cmd.Parameters = Array As Object(C.GetString("TMP_AUTO_RUTA"), C.GetString("TMP_AUTO_PLACA"), C.GetString("TMP_AUTO_CEDIS"), C.GetString("TMP_AUTO_IDALMACEN"), C.GetString("TMP_AUTO_FECHA"), C.GetString("TMP_AUTO_KILOMETRAJE"), C.GetString("TMP_AUTO_COMBUSTIBLE"), C.GetString("TMP_AUTO_TABLERO"), C.GetString("TMP_AUTO_CLAXON"), C.GetString("TMP_AUTO_PARABRISAS"), C.GetString("TMP_AUTO_CINTURON"), C.GetString("TMP_AUTO_ESPEJOS"), C.GetString("TMP_AUTO_LICENCIA"), C.GetString("TMP_AUTO_LIB_OBJETOSINE"), C.GetString("TMP_AUTO_LIB_OBJETOTMPERVI"), C.GetString("TMP_AUTO_ORDEN_HERRA"), C.GetString("TMP_AUTO_UNILIMPIA"), C.GetString("TMP_AUTO_LIMPIO"), C.GetString("TMP_AUTO_BASURA"), C.GetString("TMP_AUTO_RESPONSABILIDAD"), C.GetString("TMP_AUTO_AUDITORIA"), C.GetString("TMP_AUTO_HABITUAL"), C.GetString("TMP_AUTO_HERRAMIENTAS"), C.GetString("TMP_AUTO_CONOS"), C.GetString("TMP_AUTO_EDO_CARROCERIA"), C.GetString("TMP_AUTO_FUN_LUCES"), C.GetString("TMP_AUTO_PLACAS_CIRCU"), C.GetString("TMP_AUTO_COND_LLANTAS"), C.GetString("TMP_AUTO_ACEITEMOTOR"), C.GetString("TMP_AUTO_ACEITEDIREC"), C.GetString("TMP_AUTO_NVL_REFRIGERANTE"), C.GetString("TMP_AUTO_NVL_LIQUIDBRISAS"), C.GetString("TMP_AUTO_COND_BANMOTOR"), C.GetString("TMP_AUTO_FUGASGRAL"), C.GetString("TMP_AUTO_FRENOS"), C.GetString("TMP_AUTO_COMENTARIOS"), foto1, foto2, foto3, foto4)
|
|
reqManager.ExecuteCommand(cmd , "inst_noventa_ins_tmp_insp_auto")
|
|
contador_env = contador_env + 1
|
|
Next
|
|
c.Close
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub enviaPedidoCliente(filtro As String)
|
|
' PEDIO_CLIENTE
|
|
Private condicion As String = ""
|
|
If filtro <> "Todos" Then condicion = "where PC_ENVIADO = 0"
|
|
|
|
Private cx As Cursor = 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_ENVIADO FROM PEDIDO_CLIENTE ${condicion}"$)
|
|
|
|
If cx.RowCount > 0 Then
|
|
For i = 0 To cx.RowCount - 1
|
|
cx.Position = i
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "insert_pedidos_KELL"
|
|
cmd.Parameters = Array As Object(cx.GetString("PC_CLIENTE"),cx.GetString("PC_FECHA"),cx.GetString("PC_USER"),cx.GetString("PC_NOART"),cx.GetString("PC_MONTO"),cx.GetString("PC_LON"),cx.GetString("PC_LAT"),almacen,l_ruta,cx.GetString("PC_COSTO_SIN") )
|
|
reqManager.ExecuteCommand(cmd , $"ins_pedidos_${cx.GetString("PC_CLIENTE")}"$)
|
|
contador_env = contador_env + 1
|
|
Next
|
|
cx.Close
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub enviaPedido(filtro As String)
|
|
' PEDIDO
|
|
Private condicion As String = ""
|
|
If filtro <> "Todos" Then condicion = "where PE_ENVIADO = 0"
|
|
|
|
' PE_CEDIS = RECARGA para cliente 0 (ABORDO)
|
|
B4XPages.MainPage.skmt.ExecNonQuery2("update PEDIDO set PE_CEDIS = ? where PE_CLIENTE =? AND PE_FOLIO IS NULL ", Array As Object("RECARGA", "0"))
|
|
' Asegura que PE_FOLIO no esté en 0 o 1 (se usa el rowid)
|
|
B4XPages.MainPage.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = rowid where PE_FOLIO = 0 or PE_FOLIO = 1")
|
|
|
|
Private cPed As Cursor = B4XPages.MainPage.skmt.ExecQuery($"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, PE_TIPO FROM PEDIDO ${condicion}"$)
|
|
|
|
If cPed.RowCount > 0 Then
|
|
For i = 0 To cPed.RowCount - 1
|
|
cPed.Position = i
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
|
|
If PERFIL = "V-ESPECIAL" Then ' Lógica específica para V-ESPECIAL
|
|
cmd.Name = "insert_pedido_esp_KELL"
|
|
cmd.Parameters = Array As Object(cPed.GetString("PE_CEDIS"),almacen,cPed.GetString("PE_COSTO_TOT"),cPed.GetString("PE_COSTOU"),cPed.GetString("PE_CANT"),cPed.GetString("PE_PRONOMBRE"),cPed.GetString("PE_PROID"),cPed.GetString("PE_CLIENTE"),cPed.GetString("PE_FECHA"),cPed.GetString("PE_USUARIO"),cPed.GetString("PE_RUTA"), cPed.GetString("PE_COSTO_SIN"),cPed.GetString("PE_DESC"),cPed.GetString("PE_FOLIO"), cPed.GetString("PE_TIPO"),NUMERO_PEDIDO )
|
|
Else
|
|
cmd.Name = "insert_pedido_KELL"
|
|
cmd.Parameters = Array As Object(cPed.GetString("PE_CEDIS"),almacen,cPed.GetString("PE_COSTO_TOT"),cPed.GetString("PE_COSTOU"),cPed.GetString("PE_CANT"),cPed.GetString("PE_PRONOMBRE"),cPed.GetString("PE_PROID"),cPed.GetString("PE_CLIENTE"),cPed.GetString("PE_FECHA"),cPed.GetString("PE_USUARIO"),cPed.GetString("PE_RUTA"), cPed.GetString("PE_COSTO_SIN"),cPed.GetString("PE_DESC"),cPed.GetString("PE_FOLIO"), cPed.GetString("PE_TIPO"))
|
|
End If
|
|
|
|
reqManager.ExecuteCommand(cmd , $"ins_pedido_${cPed.GetString("PE_CLIENTE")}"$)
|
|
contador_env = contador_env + 1
|
|
Next
|
|
cPed.Close
|
|
End If
|
|
End Sub
|
|
|
|
' El callback se maneja aquí, ya que 'Me' fue C_Kelloggs en la inicialización del reqManager
|
|
Sub JobDone(Job As HttpJob)
|
|
Log("JOBDONE KELLOGGS")
|
|
' Lógica para manejar errores y remover de reqsList
|
|
' reqManager.trackNext(Job)
|
|
|
|
If Not(Job.Success) Then
|
|
LogColor("Error: " & Job.tag & " : " & Subs.parseHTTPError(Job.ErrorMessage), Colors.red)
|
|
Else ' Si Job.Success es True
|
|
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
|
|
|
LogColor("JobDone: '" & RESULT.tag & "' - Registros: " & RESULT.Rows.Size, Colors.Green)
|
|
|
|
If Job.JobName = "DBRequest" Then
|
|
|
|
' Manejo de comandos de INSERCIÓN (Actualización de estados en DB local)
|
|
If RESULT.Tag.As(String).StartsWith("ins_pedido_") Then ' Procesa insert_pedido_KELL
|
|
Private temp() As String = Regex.Split("_", RESULT.Tag)
|
|
If temp.Length > 1 Then
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set pe_enviado = 1 where pe_cliente = '${temp(2)}'"$)
|
|
End If
|
|
|
|
Else If RESULT.Tag.As(String).StartsWith("ins_pedidos_") Then ' Procesa insert_pedidos_KELL (Cabeceras)
|
|
Private temp() As String = Regex.Split("_", RESULT.Tag)
|
|
If temp.Length > 1 Then
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"update pedido_cliente set pc_enviado = 1 where pc_cliente = '${temp(2)}'"$)
|
|
End If
|
|
|
|
Else If RESULT.Tag = "valida_pedido" Then ' Procesa select_cuantos_pedido_KELL
|
|
' Lógica de validación de pedidos (productos)
|
|
For Each records() As Object In RESULT.Rows
|
|
Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP"))
|
|
If cuantos_pedido <= CUANTOSP Then
|
|
Log($"Validación Pedidos OK: ${CUANTOSP}/${cuantos_pedido}"$)
|
|
Else
|
|
LogColor($"Validación Pedidos FALLÓ: ${CUANTOSP}/${cuantos_pedido}. Se requiere reenvío."$, Colors.Red)
|
|
End If
|
|
Next
|
|
|
|
Else If RESULT.Tag = "valida_pedidoc" Then ' Procesa select_cuantos_pedidoc_KELL
|
|
' Lógica de validación de pedidos cliente (cabeceras)
|
|
For Each records() As Object In RESULT.Rows
|
|
Dim CUANTOSC As Int = records(RESULT.Columns.Get("CUANTOSC"))
|
|
If cuantos_pedidosc = CUANTOSC Then
|
|
Log($"Validación Pedidos Cliente OK: ${CUANTOSC}/${cuantos_pedidosc}"$)
|
|
Else
|
|
LogColor($"Validación Pedidos Cliente FALLÓ: ${CUANTOSC}/${cuantos_pedidosc}. Se requiere reenvío."$, Colors.Red)
|
|
End If
|
|
Next
|
|
|
|
Else If RESULT.Tag = "valida_noventa" Then ' Procesa select_cuantos_noventa_KELL
|
|
' Lógica de validación de no venta
|
|
For Each records() As Object In RESULT.Rows
|
|
Dim CUANTOSN As Int = records(RESULT.Columns.Get("CUANTOSN"))
|
|
If cuantos_noventa = CUANTOSN Then
|
|
Log($"Validación NoVenta OK: ${CUANTOSN}/${cuantos_noventa}"$)
|
|
Else
|
|
LogColor($"Validación NoVenta FALLÓ: ${CUANTOSN}/${cuantos_noventa}. Se requiere reenvío."$, Colors.Red)
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Job.Release
|
|
|
|
' Lógica de finalización: Inicia la validación al terminar todos los envíos
|
|
If reqManager.reqsList.Size = 0 Then
|
|
If PASO = "1" Then ' Si terminamos la fase de envío
|
|
PASO = "2"
|
|
Dim t1 As Timer
|
|
t1.Initialize("T1", 2000)
|
|
t1.Enabled = True
|
|
Log("Envío finalizado. Se inicia TIMER T1 para validación.")
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
' Lógica de validación forzada (simula T1_Tick)
|
|
Private Sub T1_Tick
|
|
valida
|
|
' t1.Enabled = False
|
|
End Sub
|
|
|
|
Sub valida
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "select_cuantos_pedido_KELL"
|
|
cmd.Parameters = Array As Object(almacen,l_ruta)
|
|
reqManager.ExecuteQuery(cmd , 0, "valida_pedido")
|
|
|
|
cmd.Initialize
|
|
cmd.Name = "select_cuantos_noventa_KELL"
|
|
cmd.Parameters = Array As Object(almacen,l_ruta)
|
|
reqManager.ExecuteQuery(cmd , 0, "valida_noventa")
|
|
|
|
cmd.Initialize
|
|
cmd.Name = "select_cuantos_pedidoc_KELL"
|
|
cmd.Parameters = Array As Object(almacen,l_ruta)
|
|
reqManager.ExecuteQuery(cmd , 0, "valida_pedidoc")
|
|
End Sub |