Files
DBCheck/B4A/C_Intmex.bas

384 lines
15 KiB
QBasic

B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=12.8
@EndOfDesignText@
Sub Class_Globals
' Dim skmt As SQL
Dim reqManager As DBRequestManager
Dim cmd As DBCommand
Dim c, d As Cursor
Dim usuario, almacen, PORCENTAJE, datos_iguales As String
Dim cuantos_pedido As String = 0
Dim cuantos_noventa As String = 0
Dim cuantos_pedidosc As String = 0
Dim foto1() As Byte
Dim t1 As Timer
' Dim COUNT_CLIE As Int
Dim enviando As Boolean = False
Dim validando As Boolean = False
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
' reqManager.Initialize(Me, "http://keymon.lat:1781")
End Sub
Sub envia
enviando = True
almacen = Subs.traeAlmacen
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)")
c=B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa")
c.Position = 0
usuario = c.GetString("USUARIO")
c.Close
' ENVIO DE LOS CODIGOS QR
c=B4XPages.MainPage.skmt.ExecQuery("SELECT CODIGOKMTS, CODIGOB, LAT, LON FROM HIST_CODIGO_BARRAS" )
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_2_INTMEX"
cmd.Parameters = Array As Object(C.GetString("CODIGOKMTS"),C.GetString("CODIGOB"),C.GetString("LON"),C.GetString("LAT"),almacen,Subs.traeruta )
reqManager.ExecuteCommand(cmd , "ins_QR")
Next
End If
c.Close
' c=B4XPages.MainPage.skmt.ExecQuery("SELECT CAT_CL_NUM_SERIEFISICO, CAT_CL_CODIGO, CAT_CL_LONG, CAT_CL_LAT, CAT_CL_FOTO FROM kmt_info where CAT_CL_NUM_SERIEFISICO IS NOT NULL")
' If c.RowCount>0 Then
' For i=0 To c.RowCount -1
' c.Position=i
' 's=skmt.ExecQuery2("SELECT HIST_VI_IMAGEN FROM HIST_VISITAS WHERE HIST_VI_CREDITO =?", Array As String (c.GetString("HIST_VI_CREDITO")))
' 's.Position =0
' foto1 = c.GetBlob("CAT_CL_FOTO")
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name = "insert_QR_INTMEX"
' 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,Subs.traeruta, foto1 )
' reqManager.ExecuteCommand(cmd , "ins_QR")
' Next
' End If
' c.Close
'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
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_encuesta_INTMEX"
cmd.Parameters = Array As Object(C.GetString("HE_CLIE"),C.GetString("HE_RES"),C.GetString("HE_FECHA"), c.GetString("HE_TIPO"))
reqManager.ExecuteCommand(cmd , "inst_noventa")
Next
End If
c.Close
' PEDIDO_CLIENTE
Dim PCNoArts As String
Dim PCMonto As String
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, PC_FACTURA 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_INTMEX"
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.traeruta, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA"))
PCNoArts = c.GetString("PC_NOART")
PCMonto = c.GetString("PC_MONTO")
reqManager.ExecuteCommand(cmd , "ins_pedidos")
Log(">>>>>> INSERT PEDIDO_CLIENTE")
Next
End If
c.Close
d.Position = 0
cuantos_pedidosc = d.GetString("CUANTOS_PEDIDOSC")
d.Close
' PEDIDO
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 FROM PEDIDO")
d = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO 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_pedido2_INTMEX" 'CON TOTALES INCLUIDOS
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"), PCNoArts, PCMonto)
reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}_${c.GetString("PE_PROID")}"$)
' Log($">>>> INS_PEDIDO= ${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")}, ${PCNoArts}, ${PCMonto}"$)
' cmd.Name = "insert_pedido_INTMEX" ' SIN TOTALES INCLUIDOS
' 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"))
' reqManager.ExecuteCommand(cmd , "ins_pedido")
Next
End If
c.Close
d.Position=0
cuantos_pedido = D.GetString("CUANTOS_PEDIDO")
d.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_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, Subs.traeruta)
reqManager.ExecuteCommand(cmd , "inst_noventa")
Next
End If
c.Close
d.Position=0
cuantos_noventa = D.GetString("CUANTOS_NOVENTA")
d.Close
' GEO CERCA
c=B4XPages.MainPage.skmt.ExecQuery("Select HGCLIENTE, HGDATE, HGLAT, HGLON from HIST_GEOCERCA")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_geocerca_INTMEX"
cmd.Parameters = Array As Object(C.GetString("HGCLIENTE"),C.GetString("HGDATE"),C.GetString("HGLAT"),C.GetString("HGLON"))
reqManager.ExecuteCommand(cmd , "inst_noventa")
Next
End If
c.Close
' LO DEL LIKE
c=B4XPages.MainPage.skmt.ExecQuery("Select HFCLIENTE, HFALIAS, HFRUTA, HFALMACEN from HIST_FACE")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_face_like_INTMEX"
cmd.Parameters = Array As Object(C.GetString("HFCLIENTE"),C.GetString("HFALIAS"),C.GetString("HFRUTA"),C.GetString("HFALMACEN"))
reqManager.ExecuteCommand(cmd , "inst_noventa")
Next
End If
c.Close
' DROP
' t1.Initialize("T1", 30000) ' 1000 = 1 second
' t1.Enabled = True
' Dim sDate,sTime As String
' DateTime.DateFormat = "MM/dd/yyyy"
' sDate=DateTime.Date(DateTime.Now)
' sTime=DateTime.Time(DateTime.Now)
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name ="insert_drop_INTMEX_2"
' cmd.Parameters = Array As Object(usuario,Subs.traeruta,sDate & sTime, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"ENVIO",almacen)
' reqManager.ExecuteCommand(cmd , "inst_noventa")
'' img2.Visible =True
' PORCENTAJE = Round(100/ (cuantos_noventa + cuantos_pedido + cuantos_pedidosc + 1))
' If Starter.marcaCel <> "Sony" Then ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& Subs.traeruta , True)
'CUESTIONARIOS
c = B4XPages.MainPage.skmt.ExecQuery($"select * from cuestionario where ifnull(Q_ENVIO_OK, 0) = 0"$)
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_INTMEX"
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
End Sub
Sub JobDone(Job As HttpJob)
Log("JOBDONE INTMEX")
Log(reqManager.link)
If reqManager.reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos.
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
Log("ERROR")
LogColor("Error: " & reqManager.HandleJob(Job).tag & " : " & Job.ErrorMessage, Colors.red)
' Job.Release
Else 'If Job Success then ...
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.RGB(0,160,0)) 'Mod por CHV - 211027
'Verificamos que el usuario guardado en BD sea VALIDO.
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "update_gps" Then
For Each records() As Object In RESULT.Rows
Log("==========================REGISTROS="&RESULT.Rows)
For Each k As String In RESULT.Columns.Keys
Log(RESULT.Tag & ": " & k & ": " & records(RESULT.Columns.Get(k)))
Next
Next
End If
If RESULT.Tag = "ins_pedidos" Then
For Each records() As Object In RESULT.Rows
Log("==========================REGISTROS="&RESULT.Rows)
For Each k As String In RESULT.Columns.Keys
Log(RESULT.Tag & ": " & k & ": " & records(RESULT.Columns.Get(k)))
Next
Next
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 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
' S_CP.Text = "SUBIENDO"
Next
' PB2.Progress = 100
Log("PROGRESO 100")
' S_CP.Text = "REVISANDO ..."
ToastMessageShow("REVISANDO", False)
Log("REVISANDO")
End If
End If
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "ins_cuestionario" Then 'query tag
Subs.logJobDoneResultados(RESULT)
End If
End If
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 = True
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
Job.Release
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_INTMEX"
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_INTMEX"
cmd.Parameters = Array As Object(almacen, Subs.traeRuta)
reqManager.ExecuteQuery(cmd , 0, "valida_noventa")
cmd.Initialize
cmd.Name = "select_cuantos_pedidoc_INTMEX"
cmd.Parameters = Array As Object(almacen, Subs.traeRuta)
reqManager.ExecuteQuery(cmd , 0, "valida_pedidoc")
Log("http://keymon.net:1781")
B4XPages.MainPage.l_vPedidos2.Text = ""
B4XPages.MainPage.l_vProds2.Text = ""
B4XPages.MainPage.l_vNoVenta2.Text = ""
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