B4A=true Group=Default Group ModulesStructureVersion=1 Type=Class Version=12.8 @EndOfDesignText@ Sub Class_Globals Dim reqManager As DBRequestManager Dim cmd As DBCommand Dim b, c, d, f As Cursor Dim almacen, perfil, cuantos, NUMERO_PEDIDO, usuario, cuantos_exib, cuantos_pedidosc, cuantos_noventa, cuantos_ped, cuantos_pedido As String Dim l_ruta As Label Dim foto1() As Byte Dim enviando As Boolean = False Dim validando As Boolean = False Dim datos_iguales As String End Sub 'Initializes the object. You can add parameters to this method if needed. Public Sub Initialize End Sub Sub envia enviando = True c=B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa") c.Position = 0 usuario = c.GetString("USUARIO") c.Close 'reparto rechazo REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT c=B4XPages.MainPage.skmt.ExecQuery("SELECT REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT, REP_FECHA FROM REPARTO") If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_reparto_rechazo_dur" ' cmd.Parameters = Array As Object(C.GetString("REP_CLIENTE"),C.GetString("REP_PRONOMBRE"),C.GetString("REP_CANT"),C.GetString("REP_COSTO_TOT"),C.GetString("REP_FECHA"), ALMACEN) cmd.Parameters = Array As Object(C.GetString("REP_CLIENTE"),C.GetString("REP_PRONOMBRE"),C.GetString("REP_CANT"),C.GetString("REP_COSTO_TOT"), almacen) reqManager.ExecuteQuery(cmd , 0, "inst_noventa") Next c.Close End If ' NOVENTA c=B4XPages.MainPage.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO 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 foto1 = c.GetBlob("NV_FOTO") Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_reparto_dur" 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.Text, foto1) reqManager.ExecuteQuery(cmd , 0, "inst_noventa") Next c.Close End If d.Position=0 cuantos_noventa = D.GetString("CUANTOS_NOVENTA") d.Close ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) End Sub ' Nuevo método para inicializar el manager con el Target correcto Public Sub ConfigurarYEnviar(ServidorURL As String) ' 'Me' aquí es C_Intmex, asegurando que C_Intmex.JobDone sea llamado. reqManager.Initialize(Me, ServidorURL) envia ' Llama a la función de envío original de C_Intmex End Sub Sub JobDone(Job As HttpJob) Log("JOBDONE - " & almacen) ' 1. Tachamos el request de la lista If reqManager.reqsList.IsInitialized Then Dim index As Int = reqManager.reqsList.IndexOf(Job.tag) If index <> -1 Then reqManager.reqsList.RemoveAt(index) End If If Not(Job.Success) Then LogColor("Error en red: " & Job.tag & " : " & Subs.parseHTTPError(Job.ErrorMessage), Colors.Red) Else ' 2. Procesamos validaciones Dim RESULT As DBResult = reqManager.HandleJob(Job) If Job.JobName = "DBRequest" Then If RESULT.Tag = "valida_pedido" Then Subs.logJobDoneResultados(RESULT) For Each records() As Object In RESULT.Rows Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP")) B4XPages.MainPage.l_vProds2.Text = $"${CUANTOSP}/${cuantos_pedido}"$ ' Mantenemos tu lógica permisiva If cuantos_pedido <= CUANTOSP Then datos_iguales = "ok" Else LogColor("Faltan pedidos. Envíe nuevamente: " & CUANTOSP & "/" & cuantos_pedido, Colors.Red) End If Next Else If RESULT.Tag = "valida_pedidoc" Then Subs.logJobDoneResultados(RESULT) For Each records() As Object In RESULT.Rows Dim CUANTOSC As Int = records(RESULT.Columns.Get("CUANTOSC")) B4XPages.MainPage.l_vPedidos2.Text = $"${CUANTOSC}/${cuantos_pedidosc}"$ Next Else If RESULT.Tag = "valida_noventa" Then Subs.logJobDoneResultados(RESULT) For Each records() As Object In RESULT.Rows Dim CUANTOSN As Int = records(RESULT.Columns.Get("CUANTOSN")) B4XPages.MainPage.l_vNoVenta2.Text = $"${CUANTOSN}/${cuantos_noventa}"$ Next End If End If End If Job.Release ' 3. Control de flujo seguro If reqManager.reqsList.size = 0 Then B4XPages.MainPage.p_progressDialog.Visible = False If enviando Then enviando = False B4XPages.MainPage.l_progressDialog.Text = "Validando " B4XPages.MainPage.p_progressDialog.Visible = True Sleep(200) valida Else If validando Then validando = False Sleep(300) B4XPages.MainPage.p_validacion.Visible = True End If End If End Sub Sub valida B4XPages.MainPage.p_progressDialog.Visible = False ToastMessageShow("Envío de Reparto Finalizado", True) End Sub