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

381 lines
17 KiB
QBasic

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 successfulRequests As Int = 0
Dim totalRegistros As Int = 0
Dim totalRegistrosTotales As Int = 0
Dim todosRequest As Int = 0
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
Log("*** Entramos a envia info***")
Log("--- Entramos a envia info---")
Log("### Entramos a envia info###")
successfulRequests = 0
totalRegistros = 0
totalRegistrosTotales = 0
todosRequest = -1
' bEnvioInfo.Enabled = False
' NOVENTA
c = B4XPages.MainPage.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO FROM NOVENTA")
D=B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
If c.RowCount>0 Then
Log($"Procesando NOVENTA: ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
For i=0 To c.RowCount -1
c.Position=i
foto1 = c.GetBlob("NV_FOTO")
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_reparto_noventa_MAZAPA_REPG"
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
' HIST_VENTAS con rechazo o parcial
c=B4XPages.MainPage.skmt.ExecQuery("SELECT HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA, HVD_CODPROMO, HVD_PROID, HVD_NUM_TICKET, HVD_NUM_REGISTRO, HVD_RECHAZO, HVD_PARCIAL FROM hist_ventas WHERE HVD_RECHAZO = 1 OR HVD_PARCIAL = 1")
If c.RowCount>0 Then
Log($"Procesando HIST_VENTAS (rechazos/parciales): ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_rep_hist_ventas_MAZAPA_REPG"
cmd.Parameters = Array As Object(C.GetString("HVD_CLIENTE"),C.GetString("HVD_PRONOMBRE"),C.GetString("HVD_CANT"),C.GetString("HVD_COSTO_TOT"),C.GetString("HVD_CODPROMO"),C.GetString("HVD_PROID"),C.GetString("HVD_NUM_TICKET"),C.GetString("HVD_NUM_REGISTRO"),C.GetString("HVD_RECHAZO"),C.GetString("HVD_PARCIAL"), almacen)
reqManager.ExecuteCommand(cmd , "inst_noventa")
Next
c.Close
End If
' 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
Log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Pedido reparto <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
Log($"Procesando PEDIDO: ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
Log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Pedido reparto <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_pedido_REP_MAZAPA"
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_MAZAPA")
Next
c.Close
End If
' REPARTO
c = B4XPages.MainPage.skmt.ExecQuery("SELECT * from reparto")
If c.RowCount > 0 Then
Log($"Procesando REPARTO: ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
Private folio As String = Subs.hmsKMT
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insertReparto_MAZAPA"
cmd.Parameters = Array As Object(folio, C.GetString("REP_FECHA"), C.GetString("REP_CLIENTE"), C.GetString("REP_CLI_ORIG"), C.GetString("REP_PRODID"), C.GetString("REP_PRONOMBRE"), C.GetString("REP_PRODREGISTRO"), C.GetString("REP_CANT"), C.GetString("REP_PRECIO"), C.GetString("REP_COSTO_TOT"), C.GetString("REP_RECHAZO"),almacen,l_ruta.Text)
reqManager.ExecuteCommand(cmd , "ins_reparto")
Next
c.Close
End If
' RECHAZOS
c = B4XPages.MainPage.skmt.ExecQuery("SELECT * from rechazos")
If c.RowCount > 0 Then
Log($"Procesando RECHAZOS: ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
Private folio As String = Subs.hmsKMT
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insertRechazos_MAZAPA"
cmd.Parameters = Array As Object(folio, C.GetString("R_FECHA"), C.GetString("R_CLIENTE"), C.GetString("R_CLI_ORIG"), C.GetString("R_PRODID"), C.GetString("R_CANT"), C.GetString("R_RECHAZO"),almacen,l_ruta.Text)
reqManager.ExecuteCommand(cmd , "ins_rechazos")
Next
c.Close
End If
' VENTAS
c = B4XPages.MainPage.skmt.ExecQuery("SELECT * from ventas")
If c.RowCount > 0 Then
Log($"Procesando VENTAS: ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
Private folio As String = Subs.hmsKMT
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insertVentas_MAZAPA"
cmd.Parameters = Array As Object(folio, C.GetString("V_FECHA"), C.GetString("V_CLIENTE"), C.GetString("V_CLI_ORIG"), C.GetString("V_PRODID"), C.GetString("V_CANT"), C.GetString("V_RECHAZO"),almacen,l_ruta.Text)
reqManager.ExecuteCommand(cmd , "ins_ventas")
Next
c.Close
End If
' REPARTO_GEO
c=B4XPages.MainPage.skmt.ExecQuery("SELECT CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, MOTIVO, COMENTARIO,TIPO FROM REPARTO_GEO")
If c.RowCount>0 Then
Log($"Procesando REPARTO_GEO: ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_REPARTO_MAZAPA"
cmd.Parameters = Array As Object(c.GetString("CLIENTE"), c.GetString("USUARIO"), c.GetString("FECHA_PUNTEO"), c.GetString("LATITUD"), c.GetString("LONGITUD"), c.GetString("ALMACEN"), c.GetString("RUTA_REPARTO"), c.GetString("RUTA_PREV"), c.GetString("FECHA_PREVENTA"), c.GetString("MOTIVO"), c.GetString("COMENTARIO"),c.GetString("TIPO"))
reqManager.ExecuteCommand(cmd , $"ins_REPARTOPendientes_head_${c.GetString("CLIENTE")}"$)
Next
End If
c.Close
' TABULADOR_MONEDAS
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
Log($"Procesando TABULADOR_MONEDAS: ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
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 fechatabulador2() As String = Regex.Split("-", fechatabulador(0))
Dim fechatabulador3 As String = fechatabulador2(1)&"/"&fechatabulador2(2)&"/"&fechatabulador2(0)
cmd.Initialize
cmd.Name = "insert_tabulador_monedas_MAZAPA"
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
' HIST_VENTAS para actualización
c = B4XPages.MainPage.skmt.ExecQuery("SELECT IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT, HVD_RUTA, HVD_CLIENTE, HVD_PROID, HVD_FECHA, HVD_CODPROMO, HVD_NUM_TICKET, HVD_CANT, CONSECUTIVO, BCAJAS_OR AS BCAJAS, CANTC_OR AS CANTC FROM HIST_VENTAS")
If c.RowCount > 0 Then
Log($"Procesando HIST_VENTAS (actualización): ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
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 fecha2() As String = Regex.Split("-", fecha1(0))
Dim fecha3 As String = fecha2(2)&"/"&fecha2(1)&"/"&fecha2(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_MAZAPArep2"
cmd.Parameters = Array As String(c.GetString("HVD_RECHAZOCANT"),c.GetString("BCAJAS"), c.GetString("CANTC"),sDate& " "& sTime,1, c.GetString("HVD_CLIENTE"), c.GetString("HVD_PROID"),fecha3&" "&hora(0), c.GetString("HVD_RUTA"),almacen,l_ruta.Text,c.GetString("HVD_CODPROMO"),c.GetString("HVD_NUM_TICKET"), c.GetString("HVD_CANT"))
reqManager.ExecuteCommand(cmd, "update_hvd")
Else
cmd.Initialize
cmd.Name = "update_HVD_MAZAPArep2"
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("",c.GetString("BCAJAS"), c.GetString("CANTC"),"","", c.GetString("HVD_CLIENTE"), c.GetString("HVD_PROID"),fecha3&" "&hora(0), c.GetString("HVD_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
' TABULADOR_BILLETES
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
Log($"Procesando TABULADOR_BILLETES: ${c.RowCount} registros"$)
totalRegistros = totalRegistros + c.RowCount
totalRegistrosTotales = totalRegistrosTotales + c.RowCount
Log($"Total acumulado: ${totalRegistros}"$)
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 fechatabulador2() As String = Regex.Split("-", fechatabulador(0))
Dim fechatabulador3 As String = fechatabulador2(1)&"/"&fechatabulador2(2)&"/"&fechatabulador2(0)
cmd.Initialize
cmd.Name = "insert_tabulador_billetes_MAZAPA"
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
' ' Insertar drop
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name = "insert_drop_rep_MAZAPA2"
' cmd.Parameters = Array As Object(Subs.dameUsuarioDeDB, l_ruta.Text, almacen, l_ctast.text, Subs.traeEntregados, Subs.traeRechazados, "ENVIO", Application.VersionName)
' reqManager.ExecuteCommand(cmd , "inst_drop")
Log($"PROCESO COMPLETADO - TOTAL DE REGISTROS PROCESADOS: ${totalRegistros}"$)
ToastMessageShow("Se Actualizaron los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True)
' Wait For AllRequestsComplete ' Espera a que todos los requests terminen
' Log($"Total registros procesados: ${totalRegistros}"$)
' Log($"Requests exitosos: ${successfulRequests}"$)
' LogColor("Esto es totalRegistrosTotales: ---->" & totalRegistrosTotales, Colors.Red)
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