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 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 ' reqManager.Initialize(Me, "http://keymon.net:1781") l_ruta.Initialize("l") End Sub Sub envia enviando = True almacen = Subs.traeAlmacen Dim foto1() As Byte ' NOVENTA c = B4XPages.MainPage.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO, NV_REPROGRAMAR 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_REPG_INTMEX" 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, C.GetString("NV_REPROGRAMAR")) reqManager.ExecuteCommand(cmd , "inst_noventa_") Next c.Close End If d.Position=0 cuantos_noventa = D.GetString("CUANTOS_NOVENTA") d.Close 'Buscamos ordenes a reprogramar. Dim r As Cursor =B4XPages.MainPage.skmt.ExecQuery("select * from noventa where nv_reprogramar = 1") If r.RowCount > 0 Then For rx = 0 To r.RowCount - 1 r.Position = rx Dim o As Cursor = B4XPages.MainPage.skmt.ExecQuery2("select HVD_FECHA, CAT_CL_RUTA FROM HIST_VENTAS INNER JOIN kmt_info on HVD_CLIENTE = cat_cl_codigo WHERE HVD_CLIENTE = ?",Array As String(r.GetString("NV_CLIENTE"))) If o.RowCount > 0 Then o.Position = 0 Log("Enviamos reprogramados: " & r.RowCount) Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_reparto_reprogramar3_INTMEX" cmd.Parameters = Array As Object(r.GetString("NV_CLIENTE"),r.GetString("NV_REPROGRAMAR"),o.GetString("HVD_FECHA"),o.GetString("CAT_CL_RUTA"),almacen) reqManager.ExecuteCommand(cmd , "ins_reprogramar") End If Next End If r.Close 'PAGARES. Dim pa As Cursor =B4XPages.MainPage.skmt.ExecQuery("select * from PAGARES") If pa.RowCount > 0 Then For pag = 0 To pa.RowCount - 1 pa.Position = pag Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_reparto_PAGARES_INTMEX2" Dim fechaenvio() As String fechaenvio = Regex.Split(" ",pa.GetString("PA_FECHA_PREV")) ' Log(fechaenvio(0)) Dim fechaenvio1() As String fechaenvio1 = Regex.Split("/",fechaenvio(0)) Dim fechaano As String = fechaenvio1(2).SubString(2) Dim fechareal As String = fechaenvio1(0)&"/"&fechaenvio1(1)&"/"&fechaano ' Log(fechareal) Dim fechacap() As String fechacap = Regex.Split("/",pa.GetString("PA_CAPTURA")) Dim fechacapano As String = fechacap(2).SubString(2) Dim fechacapreal As String = fechacap(0)&"/"&fechacap(1)&"/"&fechacapano cmd.Parameters = Array As Object(pa.GetString("PA_CLIENTE"),pa.GetString("PA_MONTO"),fechacapreal,pa.GetString("PA_ALMACEN"),pa.GetString("PA_RUTAPREV"),pa.GetString("PA_RUTA_REP"),fechareal,pa.GetString("PA_USUARIO")) reqManager.ExecuteCommand(cmd , "ins_pagares") Next End If pa.Close 'ABONOS Dim ab As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$) Log(ab.RowCount) If ab.RowCount > 0 Then For i=0 To ab.RowCount -1 ab.Position = i Dim c58 As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from HIST_VENTAS"$) If c58.RowCount > 0 Then c58.Position = 0 Private fechapre As String = c58.GetString("HVD_FECHA") End If Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_abono_INTMEXREP2" cmd.Parameters = Array As Object( ab.GetString("a_usuario"), ab.GetString("a_ruta"), ab.GetString("a_cliente"), ab.GetString("a_abono"), ab.GetString("a_fecha"),almacen,"REPARTO", ab.GetString("TIPO_PAGO"), ab.GetString("CONSECUTIVO"), ab.GetString("NUM_TICKET"), ab.GetString("RUTA_REP"), fechapre) reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) Next End If ab.Close c=B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM hist_ventas WHERE HVD_RECHAZO = 1 ") If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_rep_hist_ventas_REPG2_INTMEX" Dim restarechazos As Int = c.GetString("HVD_CANT")-c.GetString("HVD_RECHAZOCANT") Dim costorechazos As Double= C.GetString("HVD_COSTO_TOT") / c.GetString("HVD_CANT") If restarechazos = 0 Then cmd.Parameters = Array As Object(C.GetString("HVD_CLIENTE"),C.GetString("HVD_PRONOMBRE"),C.GetString("HVD_RECHAZOCANT"),(costorechazos*c.GetString("HVD_RECHAZOCANT")),C.GetString("HVD_CODPROMO"),C.GetString("HVD_PROID"),C.GetString("HVD_NUM_TICKET"),C.GetString("HVD_NUM_REGISTRO"),1,"", almacen, costorechazos) Else cmd.Parameters = Array As Object(C.GetString("HVD_CLIENTE"),C.GetString("HVD_PRONOMBRE"),C.GetString("HVD_RECHAZOCANT"),(costorechazos*c.GetString("HVD_RECHAZOCANT")),C.GetString("HVD_CODPROMO"),C.GetString("HVD_PROID"),C.GetString("HVD_NUM_TICKET"),C.GetString("HVD_NUM_REGISTRO"),"",1, almacen,costorechazos) End If reqManager.ExecuteCommand(cmd , "inst_noventa") Next c.Close End If ' pedido c=B4XPages.MainPage.skmt.ExecQuery("SELECT PE_TIPO, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_CLIENTEOR, PE_CAJAS, PE_BCAJAS, CONSECUTIVO, FECHA_PREV, RUTA_REP, PE_REGALO FROM PEDIDO") If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_pedido_REP_INTMEX" cmd.Parameters = Array As Object(c.GetString("PE_TIPO"), c.GetString("PE_RUTA"), c.GetString("PE_CEDIS"), 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_CLIENTEOR"), c.GetString("PE_CAJAS"), c.GetString("PE_BCAJAS"), c.GetString("CONSECUTIVO"), c.GetString("FECHA_PREV"), c.GetString("RUTA_REP"), c.GetString("PE_REGALO")) reqManager.ExecuteCommand(cmd , "ins_pedido_Inmtex") Next c.Close End If ' c=B4XPages.MainPage.skmt.ExecQuery("SELECT CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, MOTIVO, COMENTARIO,TIPO FROM REPARTO_GEO") ' Log($"REPARTO_Cliente 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_REPARTO_INTMEX" ' cmd.Parameters = Array As Object(c.GetString("CLIENTE"), c.GetString("USUARIO"), c.GetString("FECHA_PUNTEO"), c.GetString("LATITUD"), c.GetString("LONGITUD"), c.GetString("ALMACEN"), c.GetString("RUTA_REPARTO"), c.GetString("RUTA_PREV"), c.GetString("FECHA_PREVENTA"), c.GetString("MOTIVO"), c.GetString("COMENTARIO"),c.GetString("TIPO")) ' reqManager.ExecuteCommand(cmd , $"ins_REPARTOPendientes_head_${c.GetString("CLIENTE")}"$) ' ' Next ' End If ' c.Close 'TABULADOR c = B4XPages.MainPage.skmt.ExecQuery("SELECT VEINTE, DIEZ, CINCO, DOS, PESO, CENTAVO, TOTAL FROM TABULADOR_MONEDAS") d = B4XPages.MainPage.skmt.ExecQuery("SELECT RUTAA FROM RUTAA") b = B4XPages.MainPage.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN") f = B4XPages.MainPage.skmt.ExecQuery("SELECT HVD_FECHA FROM HIST_VENTAS") d.Position = 0 b.Position = 0 f.Position = 0 If c.RowCount > 0 Then For i = 0 To c.RowCount - 1 c.Position=i Dim cmd As DBCommand Dim fechatabulador() As String = Regex.Split(" ", f.GetString("HVD_FECHA")) Dim fechatabulador3 As String = fechatabulador(0) cmd.Initialize cmd.Name = "insert_tabulador_monedas_INTMEX" cmd.Parameters = Array As Object(d.GetString("RUTAA"), b.GetString("ID_ALMACEN"),c.GetString("VEINTE"),c.GetString("DIEZ"),c.GetString("CINCO"),c.GetString("DOS"),c.GetString("PESO"),c.GetString("CENTAVO"),fechatabulador3) reqManager.ExecuteCommand(cmd , "ins_tabulador_mon") Next c.Close d.Close b.Close f.Close End If c = B4XPages.MainPage.skmt.ExecQuery("SELECT MIL, QUINIENTOS, DOCIENTOS, CIEN, CINCUENTA, VEINTE FROM TABULADOR_BILLETES") d = B4XPages.MainPage.skmt.ExecQuery("SELECT RUTAA FROM RUTAA") b = B4XPages.MainPage.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN") f = B4XPages.MainPage.skmt.ExecQuery("SELECT HVD_FECHA FROM HIST_VENTAS") d.Position = 0 b.Position = 0 f.Position = 0 If c.RowCount > 0 Then For i = 0 To c.RowCount - 1 c.Position=i Dim cmd As DBCommand Dim fechatabulador() As String = Regex.Split(" ", f.GetString("HVD_FECHA")) Dim fechatabulador3 As String = fechatabulador(0) cmd.Initialize cmd.Name = "insert_tabulador_billetes_INTMEX" cmd.Parameters = Array As Object(b.GetString("ID_ALMACEN"), d.GetString("RUTAA"),c.GetString("MIL"),c.GetString("QUINIENTOS"),c.GetString("DOCIENTOS"),c.GetString("CIEN"),c.GetString("CINCUENTA"),c.GetString("VEINTE"),fechatabulador3) reqManager.ExecuteCommand(cmd , "ins_tabulador_bill") Next c.Close d.Close b.Close f.Close End If 'FIN TABULADOR ' Dim cmd As DBCommand ' cmd.Initialize ' cmd.Name = "insert_drop_rep_INTMEX2" ' cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, almacen, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "ENVIO",Application.VersionName) ' reqManager.ExecuteCommand(cmd , "inst_drop") ' 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