Files
DBCheck/B4A/C_Profina.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

367 lines
14 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 c, d As Cursor
Dim usuario, almacen As String
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 l_ruta As Label
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.net:1781")
l_ruta.Initialize("l")
Return Me
End Sub
Sub envia
enviando = True
l_ruta.text = Subs.traeRuta
' carga = "SUBIR"
' P1.Visible = True
' p_mandaInfo.Visible = True
' P1.BringToFront
' p_mandaInfo.BringToFront
' 'trabajar.Visible = False
' NUEVO.Visible =False
' BUSCA.Visible=False
' connecta.Visible=False
' Subir.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
'
' 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
'c=skmt.ExecQuery("SELECT sum(IFNULL(PE_DESC,0)) as DESCUENTO FROM PEDIDO")
'c.Position =0
'If c.GetString("DESCUENTO") > 0 And PASO = 0 Then
'P1.Visible = True
'ELSE IF c.GetString("DESCUENTO") = 0 Then
paso = 1
'End If
If paso =1 Then
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
' c=B4XPages.MainPage.skmt.ExecQuery("select HGDATE, HGLAT, HGLON from HIST_GPS")
' If c.RowCount>0 Then
' For i=0 To c.RowCount -1
' c.Position=i
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name = "UPDATE_PRO_ACTUAL2_GPS"
' cmd.Parameters = Array As Object(L_MONTOD.Text, L_CUANTOST.Text, l_cuantosc.Text,l_porvisitar.TEXT,c.GetString("hglat"),c.GetString("hglon"),batterystatus(0),LPT, STEYIN, STEYOUT,almacen,l_ruta.Text )
' reqManager.ExecuteCommand(cmd , "update_gps")
' Next
' End If
' c.Close
' PEDIO_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, PC_FACTURA, PC_SOLICITA 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_pro2"
LogColor(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")&","& c.GetString("PC_SOLICITA"),Colors.Magenta)
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_SOLICITA"))
reqManager.ExecuteCommand(cmd , "ins_pedidos")
Next
End If
c.Close
d.Position=0
cuantos_pedidosc = D.GetString("CUANTOS_PEDIDOSC")
d.Close
' ENVIO DE LOS CODIGOS QR
'c=skmt.ExecQuery2("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 = ?", Array As String("OK"))
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_PRO"
cmd.Parameters = Array As Object(C.GetString("CODIGOKMTS"),C.GetString("CODIGOB"),C.GetString("LON"),C.GetString("LAT"),almacen,l_ruta.text )
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_MARDS"
' 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, foto1 )
' reqManager.ExecuteCommand(cmd , "ins_QR")
' Next
' End If
' c.Close
' 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_MARDS"
' 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
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_pedido_PRO"
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"),"PREVENTA")
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, NV_NOMBRE, NV_DIRECCION 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_PRO"
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
End If
c.Close
d.Position=0
cuantos_noventa = D.GetString("CUANTOS_NOVENTA")
d.Close
' CLIENTES NUEVOS
Dim fotocn() As Byte
Dim Dirp As String = File.DirInternal
Dim Dir As String
Dim Dir2 As String
Dir = "/promotoriakmts"
c=B4XPages.MainPage.skmt.ExecQuery("SELECT CN_ID, CN_FECHA , CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, CN_FOTO, CN_ALMACEN, CN_RUTA, CN_GIRO FROM CLIENTES_NUEVOS")
If c.RowCount>0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Log(File.Exists(Dirp&Dir&Dir2,c.GetString("CN_FOTO")))
If File.Exists(Dirp&Dir&Dir2,c.GetString("CN_FOTO")) Then fotocn = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir,c.GetString("CN_FOTO")))
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_clientesnuevos_PRO"
cmd.Parameters = Array As Object(c.GetString("CN_ID"), c.GetString("CN_FECHA"), c.GetString("CN_USER"), c.GetString("CN_LAT"), c.GetString("CN_LON"), c.GetString("CN_NOMBRE"), c.GetString("CN_DIRECCION"),c.GetString("CN_ALMACEN"), c.GetString("CN_RUTA"), fotocn, "EN ESPERA",c.GetString("CN_GIRO"))
reqManager.ExecuteCommand(cmd , "inst_clientesn")
Next
End If
c.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_PRO"
' 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_MARDS"
' 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
'fotos
' Dim fotox() As Byte
' Dim cmd As DBCommand
' c = B4XPages.MainPage.skmt.ExecQuery("Select CODIGO, ALMACEN, RUTA, NOM_FOTO from HIST_FOTO_CLIENTE")
'
' c.Position = 0
'
' Dim Dirp As String = File.DirInternal
' Dim Dir As String
' Dim Dir2 As String
' Dir = "/promotoriakmts"
' If c.RowCount>0 Then
' For i = 0 To c.RowCount - 1
' c.Position = i
' Log(File.Exists(Dirp&Dir&Dir2,c.GetString("NOM_FOTO")))
' fotox = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir,c.GetString("NOM_FOTO")))
' cmd.Initialize
' cmd.Name = "insert_fotos_cliente_nuevo_MARIANA"
' cmd.Parameters = Array As Object(c.GetString("CODIGO"),c.GetString("ALMACEN"),c.GetString("RUTA"),fotox)
' reqManager.ExecuteCommand(cmd, $"insert_clientes_${c.GetString("CODIGO")}"$)
' 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_PRO_2"
' cmd.Parameters = Array As Object(usuario,l_ruta.Text,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 "& l_ruta.text , True)
End If
End Sub
Sub valida
cmd.Initialize
cmd.Name = "select_cuantos_pedido_PRO"
cmd.Parameters = Array As Object(almacen, l_ruta.text)
reqManager.ExecuteQuery(cmd , 0, "valida_pedido")
cmd.Initialize
cmd.Name = "select_cuantos_noventa_PROF"
cmd.Parameters = Array As Object(almacen, l_ruta.text)
reqManager.ExecuteQuery(cmd , 0, "valida_noventa")
cmd.Initialize
cmd.Name = "select_cuantos_pedidoc_PRO"
cmd.Parameters = Array As Object(almacen, l_ruta.text)
reqManager.ExecuteQuery(cmd , 0, "valida_pedidoc")
' If PB2.Progress = 0 Then
' S_CP.Text = "ENVIAR DATOS (K-1)"
' End If
' img2.Visible=False
' t1.Enabled = False
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