Files
DBCheck/B4A/C_Durakelo.bas
Jose Alberto Guerra Ugalde 2b62580240 VERSION 6.03.19
- Correcion en envio de datos de venta y reparto
2026-04-13 11:00:26 -06:00

435 lines
16 KiB
QBasic

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
enviando = True
carga = "SUBIR"
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)
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
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.net: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
' 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