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 ' NOVENTA c = B4XPages.MainPage.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO,NV_FOTO2, 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 Dim fotoenvio() As Byte = C.GetBlob("NV_FOTO2") Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_reparto_REPG_PROFINA_VN2" 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"),fotoenvio) reqManager.ExecuteCommand(cmd , "inst_noventa_") Next c.Close End If d.Position=0 cuantos_noventa = D.GetString("CUANTOS_NOVENTA") d.Close ' 'PAGARES. ' Dim pa As Cursor =B4XPages.MainPage.skmt.ExecQuery("select PA_ALMACEN,PA_RUTA_REP,PA_RUTAPREV,PA_FECHA_PREV,PA_CAPTURA,PA_MONTO,PA_USUARIO,PA_CLIENTE,IFNULL(PA_CANCELADO,0) AS PA_CANCELADO 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_PROFINA_VN" ' 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 ' If pa.GetString("PA_CANCELADO") = "2" Then ' 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"),2) ' Else ' 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"),"") ' End If ' reqManager.ExecuteCommand(cmd , "ins_pagares") ' Next ' End If ' pa.Close ' ' 'ABONOS ' d = B4XPages.MainPage.skmt.ExecQuery("SELECT RUTAA FROM RUTAA") ' d.Position = 0 ' Dim ab As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from ABONOS where a_enviado is null and a_tipoabono IS NULL"$) ' Log(ab.RowCount) ' If ab.RowCount > 0 Then ' For i=0 To ab.RowCount -1 ' ab.Position = i '' Dim ab1 As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT SUM(a_abono) AS a_abono from ABONOS where a_cliente = '${ab.GetString("a_cliente")}' and a_tipoabono IS NULL"$) ' Dim ab1 As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT a_abono from ABONOS where a_cliente = '${ab.GetString("a_cliente")}' and a_tipoabono IS NULL"$) ' ab1.Position = 0 ' ' Dim cmd As DBCommand ' cmd.Initialize ' cmd.Name = "insert_abono_REP_PROFINA_VN2" ' 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",d.GetString("RUTAA"), "", ab.GetString("TIPO_PAGO"),ab.GetString("a_ticket"),ab.GetString("a_numpago")) ' reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) ' ab1.Close ' Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) ' Next ' End If ' ab.Close ' d.Close ' ' ' 'ABONOS NUEVOS ' d = B4XPages.MainPage.skmt.ExecQuery("SELECT RUTAA FROM RUTAA") ' d.Position = 0 ' Dim ab As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from ABONOS where a_enviado is null and a_tipoabono IS NOT NULL"$) ' Log(ab.RowCount) ' If ab.RowCount > 0 Then ' For i=0 To ab.RowCount -1 ' ab.Position = i '' Dim ab1 As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT SUM(a_abono) AS a_abono from ABONOS where a_cliente = '${ab.GetString("a_cliente")}' and a_tipoabono IS NOT NULL"$) ' Dim ab1 As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT a_abono from ABONOS where a_cliente = '${ab.GetString("a_cliente")}' and a_tipoabono IS NOT NULL"$) ' ab1.Position = 0 ' ' Dim cmd As DBCommand ' cmd.Initialize ' cmd.Name = "insert_abono_REP_PROFINA_VN2" ' 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",d.GetString("RUTAA"), "1", ab.GetString("TIPO_PAGO"),ab.GetString("a_ticket"),ab.GetString("a_numpago") ) ' reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) ' ab1.Close ' Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) ' Next ' End If ' ab.Close ' d.Close ' 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_PROFINA_VN" 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 '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_PROFINA_VN" 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_PROFINA_VN" 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 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_PROFINA" Dim restarechazos As Int = c.GetString("HVD_CANT")-c.GetString("HVD_RECHAZOCANT") Dim costorechazos As Double= NumberFormat2((C.GetString("HVD_COSTO_TOT") / c.GetString("HVD_CANT")), 0,2,2,False) 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,l_ruta.Text,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,l_ruta.Text,costorechazos) End If reqManager.ExecuteCommand(cmd , "inst_noventa") Next c.Close End If ' c = B4XPages.MainPage.skmt.ExecQuery("SELECT IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_CLIENTE, HVD_PROID, HVD_FECHA, HVD_CODPROMO, HVD_NUM_TICKET, HVD_CANT, CONSECUTIVO, BCAJAS, CANTC FROM HIST_VENTAS where HVD_PRONOMBRE <> 'Cobranza Pendiente'") ' If c.RowCount > 0 Then ' For i=0 To c.RowCount -1 ' c.Position = i ' Log(c.GetString("HVD_CLIENTE")) ' Private d4 As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT CAT_CL_RUTA FROM kmt_info WHERE CAT_CL_CODIGO = '${c.GetString("HVD_CLIENTE")}'"$) ' d4.Position = 0 ' Log(d4.GetString("CAT_CL_RUTA")) ' Private d5 As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT IFNULL(Sum(PE_CANT),0) AS PE_CANT FROM PEDIDO WHERE PE_CLIENTEOR = '${c.GetString("HVD_CLIENTE")}' AND PE_PROID = '${c.GetString("HVD_PROID")}' AND CONSECUTIVO = '${c.GetString("CONSECUTIVO")}'"$) ' d5.Position = 0 ' Private restacant As String = d5.GetString("PE_CANT") ' d5.Close ' ' Dim fecha1() As String = Regex.Split(" ", c.GetString("HVD_FECHA")) ' ' Dim fecha3 As String = fecha1(0) ' Log(fecha3) ' Dim hora() As String = Regex.Split("\.", fecha1(1)) ' Log(hora(0)) ' ' Dim sDate, sTime As String ' DateTime.DateFormat = "dd/MM/yyyy" ' DateTime.TimeFormat = "HH:mm:ss" ' sDate = DateTime.Date(DateTime.Now) ' sTime = DateTime.Time(DateTime.Now) ' If c.GetString("HVD_RECHAZOCANT") <> "0" Then ' Log((c.GetString("HVD_RECHAZOCANT")-restacant)) ' cmd.Initialize ' ' cmd.Name = "update_HVD_PROFINA_VN2" ' cmd.Parameters = Array As String(c.GetString("HVD_RECHAZOCANT"),sDate& " "& sTime,1,Subs.traeUsuario, c.GetString("HVD_CLIENTE"), c.GetString("HVD_PROID"),fecha3&" "&hora(0), d4.GetString("CAT_CL_RUTA"),ALMACEN,l_ruta.Text,c.GetString("HVD_CODPROMO"),c.GetString("HVD_NUM_TICKET"), c.GetString("HVD_CANT")) ' reqManager.ExecuteCommand(cmd, "update_hvd") ' Log("ENVIE RECHAZO") ' Else ' cmd.Initialize ' cmd.Name = "update_HVD_PROFINA_VN2" ' Log( c.GetString("CANTC")& c.GetString("HVD_CLIENTE")& c.GetString("HVD_PROID")&fecha3&" "&hora(0)& d4.GetString("CAT_CL_RUTA")&ALMACEN&l_ruta.Text&c.GetString("HVD_CODPROMO")&c.GetString("HVD_NUM_TICKET")& c.GetString("HVD_CANT")) ' cmd.Parameters = Array As String("","","",Subs.traeUsuario, c.GetString("HVD_CLIENTE"), c.GetString("HVD_PROID"),fecha3&" "&hora(0), d4.GetString("CAT_CL_RUTA"),ALMACEN,l_ruta.Text,c.GetString("HVD_CODPROMO"),c.GetString("HVD_NUM_TICKET"), c.GetString("HVD_CANT")) ' reqManager.ExecuteCommand(cmd, "update_hvd") ' End If ' d4.Close ' Next ' End If ' c.Close ' Dim cmd As DBCommand ' cmd.Initialize ' cmd.Name = "insert_drop_rep_PROFINA_VN" ' cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, almacen, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "ENVIO") ' 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