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 cmd As DBCommand Dim datos_iguales, almacen, carga, paso, conteo, porcentaje, perfil, cuantos, NUMERO_PEDIDO, usuario, cuantos_exib, cuantos_pedidosc, cuantos_noventa, cuantos_ped, cuantos_pedido As String Dim e1, c, d, d3, d9 As Cursor Dim tiempo As Int Dim l_ruta, L_ABORDO, l_porvisitar As Label Dim T3, T4 As Timer Dim enviando As Boolean = False Dim validando As Boolean = False End Sub 'You can add more parameters here. Public Sub Initialize As Object reqManager.Initialize(Me, "http://keymon.lat:1781") l_ruta.Initialize("") L_ABORDO.Initialize("") l_porvisitar.Initialize("") 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 envia carga = "SUBIR" enviando = True almacen = Subs.traeAlmacen l_ruta.TEXT = Subs.traeRuta Dim fecha As String = DateTime.Date(DateTime.Now) ' P1.Visible = True ' trabajar.Visible = False ' B_PROXIMA.Visible =False ' Btn_UbicarR.Visible=False ' NUEVO.Visible =False ' BUSCA.Visible=False ' connecta.Visible=False ' Subir.Visible=False ' SUBIR_P.Visible = False ' cargar.Visible=False ' L_P_1.Visible = False ' S_CC.Visible = False ' L_P_3.Visible = False ' S_CH.Visible = False ' PB1.Visible = False ' Resumen.Visible= False porcentaje = 0 ' L_P_2.Text = "Envio de Pedidos" ' L_P_3.Text = "Envio de Pedidos" ' S_CH.Text = "EN PROCESO" ' S_CP.Text = "EN PROCESO" ' PB1.Progress = 0 ' PB2.Progress = 0 ' PB2.Visible = True conteo = 0 paso = 1 'End If ' If paso = 1 Then e1=B4XPages.MainPage.skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("ABORDO")) e1.Position = 0 If e1.GetString("CUANTOS") > 0 Then c=B4XPages.MainPage.skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("ABORDO")) c.Position = 0 L_ABORDO.Text = c.GetString("MONTO_DIA") c.Close Else L_ABORDO.Text = 0 End If e1.Close c=B4XPages.MainPage.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) c.Position =0 perfil = c.GetString("CUANTOS") c.Close If perfil > 0 Then c=B4XPages.MainPage.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) c.Position =0 perfil = c.GetString("CAT_VA_VALOR") c.Close End If c=B4XPages.MainPage.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO")) c.Position =0 cuantos = c.GetString("CUANTOS") c.Close If cuantos > 0 Then c=B4XPages.MainPage.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO")) c.Position =0 NUMERO_PEDIDO = c.GetString("CAT_VA_VALOR") c.Close Else NUMERO_PEDIDO = 0 End If B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE not In (select PE_CLIENTE from pedido)") c=B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa") c.Position = 0 usuario = c.GetString("USUARIO") c.Close d3=B4XPages.MainPage.skmt.ExecQuery("SELECT SUM(PE_COSTO_TOT) as MONTO FROM PEDIDO") d3.Position = 0 ' Dim cmd As DBCommand ' cmd.Initialize ' cmd.Name ="UPDATE_INFO_E_DURK" ' cmd.Parameters = Array As Object(d3.GetDouble("MONTO")- L_ABORDO.text, L_ABORDO.Text, d3.GetDouble("MONTO"),l_ruta.TEXT, almacen) ' reqManager.ExecuteQuery(cmd , 0, "inst_noventa") ' Dim cmd As DBCommand ' cmd.Initialize ' cmd.Name ="insert_drop2_DUR" ' cmd.Parameters = Array As Object(usuario,l_ruta.Text,fecha, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"ENVIO", almacen, L_VENTA.Text, L_PREVENTA.Text, L_ABORDO.Text, l_cambios.TEXT) ' reqManager.ExecuteQuery(cmd , 0, "inst_noventa") ' d3.Close ' PEDIDO_CLIENTE c=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 FROM PEDIDO_CLIENTE ") d=B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDOSC FROM PEDIDO_CLIENTE ") If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_pedidos_DUR" 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,Subs.traeRutaPedidoCliente(C.GetString("PC_CLIENTE")),C.GetString("PC_COSTO_SIN") ) reqManager.ExecuteCommand(cmd, "ins_pedidos") ' LogColor(Subs.traeRutaPedidoCliente(C.GetString("PC_CLIENTE")) & "|" & C.GetString("PC_CLIENTE"), Colors.red ) Next c.Close End If d.Position=0 cuantos_pedidosc = D.GetString("CUANTOS_PEDIDOSC") d.Close ' c=B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_NUM_SERIEFISICO,CAT_CL_CODIGO ,CAT_CL_LONG,CAT_CL_LAT FROM kmt_info") ' If c.RowCount>0 Then ' For i=0 To c.RowCount -1 ' c.Position=i ' Dim cmd As DBCommand ' cmd.Initialize ' cmd.Name = "insert_QR_DUR" ' cmd.Parameters = Array As Object(C.GetString("CAT_CL_NUM_SERIEFISICO"),C.GetString("CAT_CL_CODIGO"),C.GetString("CAT_CL_LONG"),C.GetString("CAT_CL_LAT"),almacen,l_ruta.text ) ' reqManager.ExecuteQuery(cmd , 0,"ins_QR") ' Next ' c.Close ' End If Try c=B4XPages.MainPage.skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO, HE_ORDEN FROM HIST_ENCUESTA4") ' S_CP.Text = "Envio Encuesta" ' PB2.Progress = 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_ENCUESTA_K001DUR" cmd.Parameters = Array As Object(C.GetString("HE_CLIE"),C.GetString("HE_RES"),C.GetString("HE_FECHA"),C.GetString("HE_ORDEN"),almacen,l_ruta.text,"1", C.GetString("HE_TIPO")) reqManager.ExecuteCommand(cmd , "INS_K001") Next c.Close End If Catch Log(LastException) End Try 'ENCUESTAS Try c=B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_EP_IDGRUPO, CAT_EP_IDTIPOPREGUNTA, HIST_ENCUESTA.* FROM HIST_ENCUESTA join CAT_ENCUESTA_PREGUNTA on CAT_EP_ID = HE_TIPO") ' S_CP.Text = "Envio Encuesta" ' PB2.Progress = 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_encuesta2_DUR" cmd.Parameters = Array As Object(C.GetString("HE_CLIE"), C.GetString("HE_RES"), C.GetString("HE_FECHA"), c.GetString("HE_TIPO"), l_ruta.Text, c.GetString("CAT_EP_IDGRUPO"), Subs.traeAlmacen, c.GetString("CAT_EP_IDTIPOPREGUNTA")) Log($"${C.GetString("HE_RES")}, ${C.GetString("HE_FECHA")}, ${c.GetString("HE_TIPO")}, ${l_ruta.Text}, ${c.GetString("CAT_EP_IDGRUPO")}, ${Subs.traeAlmacen}, ${c.GetString("CAT_EP_IDTIPOPREGUNTA")}"$) reqManager.ExecuteCommand(cmd , "ins_encuesta") Next End If c.Close Catch Log(LastException) End Try ' ' PEDIDO B4XPages.MainPage.skmt.ExecNonQuery("update PEDIDO set PE_FOLIO = rowid ") If perfil = "V-ESPECIAL" Then c=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 ORDER BY PE_CLIENTE") d=B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") d.Position=0 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_esp_DUR" 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"), c.GetString("PE_TIPO"),NUMERO_PEDIDO ) reqManager.ExecuteCommand(cmd, "ins_pedido") Next c.Close End If Else c=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") d9=B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") d9.Position=0 ' tiempo = 0 If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position = i ' tiempo = tiempo + 1 ' If tiempo > 20 Then ' T3.Initialize("T3", 2000) ' 1000 = 1 second ' T3.Enabled = True ' Wait For t3_tick ' tiempo = 0 ' End If conteo = conteo + 1 cuantos_ped = d9.GetString("CUANTOS_PEDIDO") porcentaje = 2 'Round(100/ (D.GetString("CUANTOS_PEDIDO") + 1)) Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_pedido_DUR" 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"), c.GetString("PE_TIPO")) reqManager.ExecuteCommand(cmd, "ins_pedido") Next c.Close End If End If cuantos_pedido = d9.GetString("CUANTOS_PEDIDO") d9.Close ' 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 Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_noventa_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) reqManager.ExecuteCommand(cmd, "inst_noventa") Next c.Close End If d.Position=0 cuantos_noventa = D.GetString("CUANTOS_NOVENTA") d.Close ' NOVENTA HIST_EXIBIDORES(CAT_CL_CLIENTE,CAT_CL_EXHIBIDOR,CAT_CL_BEXHIBIDOR) c=B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_CLIENTE,CAT_CL_EXHIBIDOR,CAT_CL_BEXHIBIDOR from HIST_EXIBIDORES") D=B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM HIST_EXIBIDORES") If c.RowCount>0 Then For i=0 To c.RowCount -1 c.Position=i Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_HIST_EXIBIDORES_DUR" cmd.Parameters = Array As Object(C.GetString("CAT_CL_CLIENTE"),C.GetString("CAT_CL_EXHIBIDOR"),C.GetString("CAT_CL_BEXHIBIDOR"),l_ruta.TEXT) reqManager.ExecuteCommand(cmd, "inst_noventa") Next c.Close End If d.Position=0 cuantos_exib = D.GetString("CUANTOS_NOVENTA") d.Close 'CUESTIONARIOS c = B4XPages.MainPage.skmt.ExecQuery($"select * from cuestionario"$) Private rutaActual As String = Subs.traeRuta If c.RowCount > 0 Then For x = 0 To c.RowCount - 1 c.Position = x Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_CUESTIONARIO_DUR" cmd.Parameters = Array As Object(c.GetString("Q_IDCLIENTE"), rutaActual, almacen, c.GetString("Q_FECHA"), c.GetString("Q_IDPREGUNTA"), c.GetString("Q_PREGUNTA"), c.GetString("Q_IDRESPUESTA"), C.GetString("Q_RESPUESTA")) reqManager.ExecuteCommand(cmd , "ins_cuestionario") Next End If c.Close ' DROP ' t1.Initialize("T1", 20000) ' 1000 = 1 second ' t1.Enabled = True ' img2.Visible =True ' ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) ' If S_CP.Text = "SUBIENDO" Then ' S_CP.Text = "VALIDANDO" ' End If ' End If T4.Initialize("T4", 3000) T4.Enabled = True End Sub Sub JobDone(Job As HttpJob) If reqManager.reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos. LogColor($">>>>>>>>>> Llega ${Job.tag} <<<<<<<<<<"$, Colors.Blue) If reqManager.reqsList.IndexOf(Job.tag) <> -1 Then reqManager.reqsList.RemoveAt(reqManager.reqsList.IndexOf(Job.tag)) ' LogColor($">>>>>> Quitamos ${Job.tag}"$, Colors.Blue) End If LogColor(">>>>>> " & reqManager.reqsList.Size & " - " & reqManager.reqsList, Colors.Blue) End If If Job.Success = False Then LogColor("############################################", Colors.red) LogColor("#### Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red) LogColor("############################################", Colors.red) Else LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job) If reqManager.reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos. If reqManager.reqsList.IndexOf(RESULT.tag) <> -1 Then reqManager.reqsList.RemoveAt(reqManager.reqsList.IndexOf(RESULT.tag)) LogColor($"*** Quitamos ${RESULT.tag}"$, Colors.Magenta) T4.Initialize("T4", 2000) End If LogColor(">>>>>> " & reqManager.reqsList.Size & " - " & reqManager.reqsList, Colors.red) End If End If If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "ins_pedido" Then 'query tag ' For Each records() As Object In RESULT.Rows ' PB2.Progress = PB2.Progress + 5 ' Next ' PB2.Progress = 100 ' S_CP.Text = "LISTO" End If End If If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_pedido" Then 'query tag Subs.logJobDoneResultados(RESULT) For Each records() As Object In RESULT.Rows Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP")) Log(CUANTOSP) B4XPages.MainPage.l_vProds2.Text = $"${CUANTOSP}/${cuantos_pedido}"$ If cuantos_pedido <= CUANTOSP Then ' ToastMessageShow("rojo val ok 1 cuantosp." , True) datos_iguales = "ok" ' S_CP.Text = "INFO OK" ToastMessageShow("INFO OK", False) Else ' S_CP.Text = "ENVIAR DATOS (K-2)" ToastMessageShow($"No se cargo bien la info de pedido.${CRLF}Envíe nuevamente: "$ & CUANTOSP & "/" & cuantos_pedido, True) ToastMessageShow("ENVIAR DATOS (K-2)", True) Log("No se cargo bien la info de pedido. Envíe nuevamente: " & CUANTOSP & "/" & cuantos_pedido) End If Next End If End If If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_pedidoc" Then 'query tag 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}"$ If cuantos_pedidosc = CUANTOSC Then ' ToastMessageShow("rojo val ok 1 cuantosp." , True) datos_iguales = "ok" Else ToastMessageShow($"No se cargo bien la info de pedido_cliente.${CRLF}Envíe nuevamente: "$ & CUANTOSC & "/" & cuantos_pedidosc, True) Log("No se cargo bien la info de pedido_cliente. Envíe nuevamente: " & CUANTOSC & "/" & cuantos_pedidosc) End If Next End If End If If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_noventa" Then 'query tag 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}"$ If cuantos_noventa = CUANTOSN Then ' ToastMessageShow("rojo val ok 1 cuantosp." , True) datos_iguales = "ok" Else ToastMessageShow($"No se cargo bien la info de NoVenta.${CRLF}Envíe nuevamente: "$ & CUANTOSN & "/" & cuantos_noventa, True) Log("No se cargo bien la info de NoVenta. Envíe nuevamente:" & CUANTOSN & "/" & cuantos_noventa) End If Next End If End If If reqManager.reqsList.size = 0 Then T4.Enabled = True Else T4.Enabled = False Job.Release End If End Sub Sub valida validando = True almacen = Subs.traeAlmacen d = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") d.Position = 0 cuantos_pedido = d.GetString("CUANTOS_PEDIDO") d = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDOSC FROM PEDIDO_CLIENTE ") d.Position = 0 cuantos_pedidosc = d.GetString("CUANTOS_PEDIDOSC") d = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA") d.Position = 0 cuantos_noventa = d.GetString("CUANTOS_NOVENTA") d.Close cmd.Initialize cmd.Name = "select_cuantos_pedido_DUR" cmd.Parameters = Array As Object(almacen, Subs.traeRuta) Log($"${almacen}, ${Subs.traeRuta}"$) reqManager.ExecuteQuery(cmd , 0, "valida_pedido") cmd.Initialize cmd.Name = "select_cuantos_noventa_DUR" cmd.Parameters = Array As Object(almacen, Subs.traeRuta) reqManager.ExecuteQuery(cmd , 0, "valida_noventa") cmd.Initialize cmd.Name = "select_cuantos_pedidoc_DUR" cmd.Parameters = Array As Object(almacen, Subs.traeRuta) reqManager.ExecuteQuery(cmd , 0, "valida_pedidoc") Log("http://keymon.lat:1781") B4XPages.MainPage.l_vPedidos2.Text = "" B4XPages.MainPage.l_vProds2.Text = "" B4XPages.MainPage.l_vNoVenta2.Text = "" End Sub Sub T4_Tick If reqManager.reqsList.size = 0 Then ' Si ya no hay consultas pendientes ... B4XPages.MainPage.p_progressDialog.Visible = False If enviando Then ' Si terminamos de enviar pedido ... Sleep(200) B4XPages.MainPage.l_progressDialog.Text = "Validando " ' Mostramos el panel de progreso. B4XPages.MainPage.p_progressDialog.Visible = False valida ' Iniciamos la validación enviando = False End If If validando Then validando = False Sleep(300) 'Mostramos el panel de Validación. B4XPages.MainPage.p_validacion.Visible = True End If End If End Sub