21 Commits

Author SHA1 Message Date
028d200cc2 VERSION 6.03.16
- Cambios en validador para enviar el pedido enun solo paquete y no produto producto.
2026-03-19 16:26:40 -06:00
fbb76fed9b VERSION 6.03.03
- Se amplio el tamaño del listview en el historico y se agrego el numbre del vendedor.
2026-03-02 12:18:18 -06:00
5426e434ca VERSION 6.02.21
- Se agrego que cuando hagan clic en el nombre del cliente se actualicen automaticamente las coordenadas en web.
2026-02-26 16:13:15 -06:00
57ac2ff737 VERSION 6.02.20 GPS
- Se modifico el script para generar automaticamente los tags.
2026-02-25 22:39:30 -06:00
004199111e VERSION 6.02.20 GPS 2026-02-25 22:30:15 -06:00
a2d5315d02 VERSION 5.12.15_GPS 2026-02-25 22:25:50 -06:00
86d54dff58 VERSION 5.12.15 GPS 2026-02-25 22:25:05 -06:00
b4457da9cc - Se agrega en B4XMainPage el comando para un PULL Forzado.
- Se agrega el script _sync_project.ps1 para el pull forzado.
2026-02-25 22:03:18 -06:00
Javier
622efa501c VERSION 5.12.15 GPS, se agrega que en el btn_ubicar tambien elimine las marcas que no llega 2026-01-30 14:07:14 -06:00
5dd5814658 VERSION 5.12.11 GPS
- Se agrego GPS a la version
- Se agtego etiqueta con la verison en Cliente
2026-01-02 18:41:00 -06:00
5f23ece03f VERSION 5.12.11
- Se agrego coddigo para habilitar la geocerca, se descarga la bandera desde cat_rutas y se guarda en cat_variables (GEOCERCA)
2025-12-30 13:50:47 -06:00
Javier
be8647261e v5.12.10
Se cambia querie para clientes espejo
Que no se borren las promos
2025-12-30 10:32:58 -06:00
e40988de1c - VERSION 5.12.3
-Se agregaron las marcas por usuario.
2025-12-04 16:38:44 -06:00
0a4483d93c - VERSION 5.11.26
- Se corrigió que cuando se descargue el dato de clientes nuevos no se dulplique el registro.
2025-11-28 17:36:54 -06:00
ddf5cfe2aa - VERSION 5.11.25
- Se agregó código para clientes de doble frecuencia y rutas espejo.
- Se agergó código para limite de clientes nuevos.
2025-11-28 13:57:06 -06:00
Javier
9b5c409c9f SE MEDIO AGREGA LO DE CLIENTES NUEVOS 2025-11-28 11:29:35 -06:00
Javier
4b886aebb6 ... 2025-11-04 10:27:49 -06:00
Javier
501c281380 v.5.09.07 s/C Se quitan los clientes nuevos, se agrega un boton de productos, se envian los clienes nuevos con el mandapendientes 2025-09-26 13:34:43 -06:00
0213f3025d - VERSION 5.09.03
- Cambios en el validador, para que no mande cantidades y montos totales en nulo.
- Se agregó que mande a la tabla pedido la version de la aplicacion.
- Se agregó que mande a la tabla de pedido un "folio" con cada envio de pedido, asi, cuando se manda varias veces el pedido,se puede "agrupar" por el folio para saber que productos pertenecen a cada envio.
2025-09-05 21:22:17 -06:00
Javier
8d784e4448 se modifica para que cuando carguen día no aparezcan los clientes como no gestionados 2025-09-03 16:22:32 -06:00
Javier
3d4a0e3e12 5.08.31
Se agrega el apartado de total productos y se corrige el checkbox de facturacion
2025-09-02 18:23:55 -06:00
22 changed files with 2093 additions and 397 deletions

View File

@@ -12,16 +12,20 @@ Version=9.85
'###################### PULL ############################################################# '###################### PULL #############################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull
'########################################################################################################### '###########################################################################################################
'###################### PULL FORZADO #############################################################
'Ctrl + click Respaldar y Pull: ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=start&Args=powershell.exe&Args=-ExecutionPolicy&Args=Bypass&Args=-File&Args=..\..\_sync_project.ps1
'###########################################################################################################
'###################### PUSH ############################################################# '###################### PUSH #############################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\
'########################################################################################################### '###########################################################################################################
'###################### PUSH TORTOISE GIT ######################################################### '###################### PUSH TORTOISE GIT #########################################################
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2
'########################################################################################################### '###########################################################################################################
'###################### PUSH TORTOISE GIT CON TAG ##################################################
'Ctrl + clic para Git: ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=-ExecutionPolicy&Args=Bypass&Args=-File&Args=..\_git_tag.ps1&Args=%22%PROJECT%%22&Args=%22%PROJECT_NAME%%22
'###########################################################################################################
#End Region #End Region
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\
Sub Class_Globals Sub Class_Globals
Private Root As B4XView Private Root As B4XView
Private xui As XUI Private xui As XUI
@@ -156,11 +160,17 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' Log(ruta) ' Log(ruta)
skmt.Initialize(ruta,"kmt.db", True) skmt.Initialize(ruta,"kmt.db", True)
Subs.guardaAppInfo(skmt) Subs.guardaAppInfo(skmt)
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GIRO(GIRO TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CN(ACTIVO TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTES_NUEVOS(CN_ID TEXT, CN_FECHA TEXT, CN_USER TEXT, CN_LAT TEXT, CN_LON TEXT, CN_NOMBRE TEXT, CN_DIRECCION TEXT, CN_FOTO TEXT, CN_ALMACEN TEXT, CN_RUTA TEXT,CN_GIRO TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CUOTAS (HC_META6 TEXT, HC_META5 TEXT, HC_META4 TEXT, HC_META3 TEXT, HC_META2 TEXT, HC_META1 TEXT, HC_RUTA TEXT, HC_CUOTA1 TEXT, HC_CUOTA2 TEXT, HC_CUOTA3 TEXT, HC_CUOTA4 TEXT, HC_CUOTA5 TEXT, HC_CUOTA6 TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CUOTAS (HC_META6 TEXT, HC_META5 TEXT, HC_META4 TEXT, HC_META3 TEXT, HC_META2 TEXT, HC_META1 TEXT, HC_RUTA TEXT, HC_CUOTA1 TEXT, HC_CUOTA2 TEXT, HC_CUOTA3 TEXT, HC_CUOTA4 TEXT, HC_CUOTA5 TEXT, HC_CUOTA6 TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_GPS (HGDATE TEXT, HGLAT TEXT, HGLON TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_GPS (HGDATE TEXT, HGLAT TEXT, HGLON TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GUNAPROD2 (CAT_GP_INICIATIVA TEXT, CAT_GP_TIPOPROD TEXT, CAT_GP_DEV TEXT, CAT_GP_ALMACEN NUMERIC, CAT_GP_ID TEXT, CAT_GP_NOMBRE TEXT, CAT_GP_IMP1 TEXT, CAT_GP_IMP2 TEXT, CAT_GP_PRECIO TEXT, CAT_GP_CLASIF TEXT, CAT_GP_STS TEXT, CAT_GP_TIPO TEXT, CAT_GP_SUBTIPO TEXT, CAT_GP_IMG BLOB)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GUNAPROD2 (CAT_GP_INICIATIVA TEXT, CAT_GP_TIPOPROD TEXT, CAT_GP_DEV TEXT, CAT_GP_ALMACEN NUMERIC, CAT_GP_ID TEXT, CAT_GP_NOMBRE TEXT, CAT_GP_IMP1 TEXT, CAT_GP_IMP2 TEXT, CAT_GP_PRECIO TEXT, CAT_GP_CLASIF TEXT, CAT_GP_STS TEXT, CAT_GP_TIPO TEXT, CAT_GP_SUBTIPO TEXT, CAT_GP_IMG BLOB)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_STORE (HSS_CODIGO TEXT, HSS_IN TEXT, HSS_OUT TEXT, HSS_TOT TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_STORE (HSS_CODIGO TEXT, HSS_IN TEXT, HSS_OUT TEXT, HSS_TOT TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_OUT (HSO_INI TEXT, HSO_FIN TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_OUT (HSO_INI TEXT, HSO_FIN TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TELEFONO(TEL TEXT, CLIENTE TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS INVENT_X_ENVIAR (ALMACEN TEXT, PROID TEXT, CANTIDAD TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS INVENT_X_ENVIAR (ALMACEN TEXT, PROID TEXT, CANTIDAD TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_RESUM_APK (HIST_RA_OBJMES TEXT, HIST_RA_VENTA TEXT, HIST_RA_TENDENCIA TEXT, HIST_RA_ALCANCE TEXT, HISR_RA_DRAOBJ TEXT, HIST_RA_DRAVTA TEXT, HIST_RA_DSOBJ TEXT, HIST_RA_DSVTA TEXT, HIST_RA_VPOOBJ TEXT, HIST_RA_VPOVTA TEXT, HIST_RA_COBCCC TEXT, HIST_RA_CTES TEXT, HIST_RA_ECO TEXT, HIST_RA_VISITPLAN TEXT, HIST_RA_VISIREAL TEXT, HIST_RA_COBVISIT TEXT, HIST_RA_FRECCOMPOBJ TEXT, HIST_RA_FRECCOMREAL TEXT, HIST_RA_VENTAMES1 TEXT, HIST_RA_VENTAMES2 TEXT, HIST_RA_VENTAMES3 TEXT, HIST_RA_VENTAMES4 TEXT, HIST_RA_RECHAZO TEXT, HIST_RA_RECHAZOPORCEN TEXT, HIST_RA_SEMANA1 TEXT, HIST_RA_SEMANA1_DIAS TEXT, HIST_RA_SEMANA1_DRA TEXT, HIST_RA_SEMANA2 TEXT, HIST_RA_SEMANA2_DIAS TEXT, HIST_RA_SEMANA2_DRA TEXT, HIST_RA_SEMANA3 TEXT, HIST_RA_SEMANA3_DIAS TEXT, HIST_RA_SEMANA4 TEXT, HIST_RA_SEMANA3_DRA TEXT, HIST_RA_SEMANA4_DIAS TEXT, HIST_RA_SEMANA4_DRA TEXT, HIST_RA_SEMANA5 TEXT, HIST_RA_SEMANA5_DIAS TEXT, HIST_RA_SEMANA5_DRA TEXT, HIST_RA_SEMANA1_LPT TEXT, HIST_RA_SEMANA2_LPT TEXT, HIST_RA_SEMANA3_LPT TEXT, HIST_RA_SEMANA4_LPT TEXT, HIST_RA_SEMANA5_LPT TEXT, HIST_RA_RUTA TEXT, HIST_RA_IDALMACEN TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_RESUM_APK (HIST_RA_OBJMES TEXT, HIST_RA_VENTA TEXT, HIST_RA_TENDENCIA TEXT, HIST_RA_ALCANCE TEXT, HISR_RA_DRAOBJ TEXT, HIST_RA_DRAVTA TEXT, HIST_RA_DSOBJ TEXT, HIST_RA_DSVTA TEXT, HIST_RA_VPOOBJ TEXT, HIST_RA_VPOVTA TEXT, HIST_RA_COBCCC TEXT, HIST_RA_CTES TEXT, HIST_RA_ECO TEXT, HIST_RA_VISITPLAN TEXT, HIST_RA_VISIREAL TEXT, HIST_RA_COBVISIT TEXT, HIST_RA_FRECCOMPOBJ TEXT, HIST_RA_FRECCOMREAL TEXT, HIST_RA_VENTAMES1 TEXT, HIST_RA_VENTAMES2 TEXT, HIST_RA_VENTAMES3 TEXT, HIST_RA_VENTAMES4 TEXT, HIST_RA_RECHAZO TEXT, HIST_RA_RECHAZOPORCEN TEXT, HIST_RA_SEMANA1 TEXT, HIST_RA_SEMANA1_DIAS TEXT, HIST_RA_SEMANA1_DRA TEXT, HIST_RA_SEMANA2 TEXT, HIST_RA_SEMANA2_DIAS TEXT, HIST_RA_SEMANA2_DRA TEXT, HIST_RA_SEMANA3 TEXT, HIST_RA_SEMANA3_DIAS TEXT, HIST_RA_SEMANA4 TEXT, HIST_RA_SEMANA3_DRA TEXT, HIST_RA_SEMANA4_DIAS TEXT, HIST_RA_SEMANA4_DRA TEXT, HIST_RA_SEMANA5 TEXT, HIST_RA_SEMANA5_DIAS TEXT, HIST_RA_SEMANA5_DRA TEXT, HIST_RA_SEMANA1_LPT TEXT, HIST_RA_SEMANA2_LPT TEXT, HIST_RA_SEMANA3_LPT TEXT, HIST_RA_SEMANA4_LPT TEXT, HIST_RA_SEMANA5_LPT TEXT, HIST_RA_RUTA TEXT, HIST_RA_IDALMACEN TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_COMISIONES_MOVIL (HCM_IDALMACEN TEXT, HCM_RUTA TEXT, HCM_TOTAL_V TEXT, HCM_TOTAL_VIVE TEXT, HCM_TOTAL_GUNA TEXT, HCM_TOTAL_BEB TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_COMISIONES_MOVIL (HCM_IDALMACEN TEXT, HCM_RUTA TEXT, HCM_TOTAL_V TEXT, HCM_TOTAL_VIVE TEXT, HCM_TOTAL_GUNA TEXT, HCM_TOTAL_BEB TEXT)")
@@ -178,7 +188,11 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Subs.agregaColumna("PEDIDO", "PE_ENVIO_OK", "INT") Subs.agregaColumna("PEDIDO", "PE_ENVIO_OK", "INT")
Subs.agregaColumna("NOVENTA", "NV_ENVIO_OK", "INT") Subs.agregaColumna("NOVENTA", "NV_ENVIO_OK", "INT")
Subs.agregaColumna("PEDIDO", "PE_TICKET", "INT") Subs.agregaColumna("PEDIDO", "PE_TICKET", "INT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_COLONIA", "TEXT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_TELEFONO", "TEXT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_CP", "TEXT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_SOLICITA", "TEXT")
Subs.agregaColumna("CLIENTES_NUEVOS", "CN_ENVIO", "TEXT")
Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO8", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO8", "TEXT DEFAULT '0'")
Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO9", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO9", "TEXT DEFAULT '0'")
Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'")
@@ -187,6 +201,11 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Subs.agregaColumna("CAT_GUNAPROD", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'")
Subs.agregaColumna("PEDIDO_CLIENTE", "PC_GUARDADO", "TEXT DEFAULT '0'") Subs.agregaColumna("PEDIDO_CLIENTE", "PC_GUARDADO", "TEXT DEFAULT '0'")
Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_VARREQ3", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_VARREQ3", "TEXT DEFAULT '0'")
Subs.agregaColumna("HIST_VENTAS", "HVD_USUARIO", "TEXT")
Subs.agregaColumna("CAT_GUNAPROD2", "MARCA", "TEXT")
Subs.agregaColumna("CAT_GUNAPROD", "MARCA", "TEXT")
Subs.agregaColumna("PEDIDO", "PE_ARCH", "TEXT")
Subs.agregaColumna("PEDIDO_CLIENTE", "PC_ARCH", "TEXT")
c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ") c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ")
C.Position = 0 C.Position = 0
@@ -771,7 +790,6 @@ Private Sub b_importarBD_Click
ToastMessageShow("¡BD importada!", False) ToastMessageShow("¡BD importada!", False)
End Sub End Sub
Private Sub b_guardar_Click Private Sub b_guardar_Click
Starter.reinicializaReqManager(et_server.Text.Trim) Starter.reinicializaReqManager(et_server.Text.Trim)
p_appUpdate.Visible = False p_appUpdate.Visible = False

View File

@@ -15,7 +15,6 @@ Sub Class_Globals
Dim reqManager As DBRequestManager Dim reqManager As DBRequestManager
Dim cmd As DBCommand Dim cmd As DBCommand
Dim ime As IME Dim ime As IME
Dim g As GPS Dim g As GPS
Dim ruta As String Dim ruta As String
Dim skmt As SQL Dim skmt As SQL
@@ -34,8 +33,6 @@ Sub Class_Globals
Dim BLANCO As String Dim BLANCO As String
Dim cuenta As String Dim cuenta As String
Dim tipo_venta As String = "PREVENTA" Dim tipo_venta As String = "PREVENTA"
Dim c As Cursor Dim c As Cursor
Dim s As Cursor Dim s As Cursor
Dim DD As Cursor Dim DD As Cursor
@@ -54,13 +51,10 @@ Sub Class_Globals
Dim gest As Button Dim gest As Button
Dim la_saldotot As Label Dim la_saldotot As Label
Dim la_saldooper As Label Dim la_saldooper As Label
Dim Tels As Button Dim Tels As Button
Dim Label10 As Label Dim Label10 As Label
Dim Label11 As Label Dim Label11 As Label
Dim Tar As Button Dim Tar As Button
Dim la_comm As Label Dim la_comm As Label
Dim la_actdte As Label Dim la_actdte As Label
Dim la_usuario As Label Dim la_usuario As Label
@@ -72,8 +66,7 @@ Sub Class_Globals
Dim DATOS As Button Dim DATOS As Button
Dim Guardar As Button Dim Guardar As Button
Dim NUEVO As Button Dim NUEVO As Button
' Dim lat_gps, lon_gps As String ' Dim lat_gps, lon_gps As String
Dim l_total As Label Dim l_total As Label
Dim c2 As Cursor Dim c2 As Cursor
Dim S2 As Cursor Dim S2 As Cursor
@@ -88,7 +81,6 @@ Sub Class_Globals
Private BT_QR As Button Private BT_QR As Button
'Private qr As QRCode 'Private qr As QRCode
Dim CODIGO As String Dim CODIGO As String
Private b_mapa As Button Private b_mapa As Button
Dim CUANTOS As String Dim CUANTOS As String
Private B_IMP As Button Private B_IMP As Button
@@ -110,22 +102,18 @@ Sub Class_Globals
Private HR_RES3 As String Private HR_RES3 As String
Private EXISTE As String Private EXISTE As String
Private TELEFONO As String Private TELEFONO As String
Private RB1 As RadioButton Private RB1 As RadioButton
Private RB2 As RadioButton Private RB2 As RadioButton
Private RB3 As RadioButton Private RB3 As RadioButton
Private RB4 As RadioButton Private RB4 As RadioButton
Private RB5 As RadioButton Private RB5 As RadioButton
Private stay_hh As String Private stay_hh As String
Private stay_mi As String Private stay_mi As String
Private stay_ss As String Private stay_ss As String
Private LA_GEO As Label Private LA_GEO As Label
Dim result As Int Dim result As Int
Private cercavalor As String Private cercavalor As String
Private LA_RUTA As String Private LA_RUTA As String
Private b_like As Button Private b_like As Button
Private B_GPS As Button Private B_GPS As Button
' Dim sc As JhsIceZxing1 ' Dim sc As JhsIceZxing1
@@ -152,7 +140,6 @@ Sub Class_Globals
Dim cuest As C_Cuestionario Dim cuest As C_Cuestionario
Private b_ventaabordo As Button Private b_ventaabordo As Button
Private l_factura As Label Private l_factura As Label
Dim Printer1 As EscPosPrinter Dim Printer1 As EscPosPrinter
Dim impresoraConectada As Boolean = False Dim impresoraConectada As Boolean = False
Dim MAC_IMPRESORA As String Dim MAC_IMPRESORA As String
@@ -163,6 +150,12 @@ Sub Class_Globals
Private lv_pedidoExistente As ListView Private lv_pedidoExistente As ListView
Private b_cerrar As Button Private b_cerrar As Button
Private l_pedidoExistente As Label Private l_pedidoExistente As Label
Private l_telefono As Label
Private p_telefono As Panel
Private et_telefono As EditText
Private b_canceltelefono As Button
Private b_aceptelefono As Button
Private l_version As Label
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -192,7 +185,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Else Else
b_cxc.Visible = True b_cxc.Visible = True
End If End If
p_telefono.Top = 0 : p_telefono.Left = 0
s.Position=0 s.Position=0
If c.RowCount>0 Then If c.RowCount>0 Then
c.Position=0 c.Position=0
@@ -242,11 +235,14 @@ Private Sub B4XPage_Created (Root1 As B4XView)
b_cerrar.Left = (p_pedidoExistente.Width / 2) - (b_cerrar.Width / 2) b_cerrar.Left = (p_pedidoExistente.Width / 2) - (b_cerrar.Width / 2)
Subs.centraPanel(p_pedidoExistente, Root.Width) Subs.centraPanel(p_pedidoExistente, Root.Width)
Subs.centraEtiqueta(l_pedidoExistente, Root.Width) Subs.centraEtiqueta(l_pedidoExistente, Root.Width)
l_version.Text = Application.VersionName
l_version.Left = Root.Width - l_version.Width - 5dip
End Sub End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear Sub B4XPage_Appear
CallSubDelayed(Tracker, "StartFLPSmall")
p_pedidoExistente.Visible = False p_pedidoExistente.Visible = False
reqManager.Initialize(Me, Starter.DBReqServer) reqManager.Initialize(Me, Starter.DBReqServer)
b_pedidoExistente.Visible = False b_pedidoExistente.Visible = False
@@ -262,7 +258,7 @@ Sub B4XPage_Appear
p_abono.Visible = False p_abono.Visible = False
Subs.centraPanel(p_abono, Root.Width) Subs.centraPanel(p_abono, Root.Width)
skmt.Initialize(ruta,"kmt.db", True) skmt.Initialize(ruta,"kmt.db", True)
c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa) UNION ALL select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO from kmt_info2 where CAT_CL_CODIGO In (Select cuenta from cuentaa)") c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa) UNION ALL select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO from kmt_info2 where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
s=B4XPages.MainPage.skmt.ExecQuery("Select ifnull(SUM(PE_COSTO_TOT), 0) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, PC_FACTURA FROM PEDIDO_CLIENTE INNER JOIN PEDIDO ON PEDIDO_CLIENTE.PC_CLIENTE = PEDIDO.PE_CLIENTE WHERE (PE_CLIENTE IN (Select cuenta from cuentaa))") s=B4XPages.MainPage.skmt.ExecQuery("Select ifnull(SUM(PE_COSTO_TOT), 0) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, PC_FACTURA FROM PEDIDO_CLIENTE INNER JOIN PEDIDO ON PEDIDO_CLIENTE.PC_CLIENTE = PEDIDO.PE_CLIENTE WHERE (PE_CLIENTE IN (Select cuenta from cuentaa))")
b = B4XPages.MainPage.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa)") b = B4XPages.MainPage.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa)")
b.Position = 0 b.Position = 0
@@ -285,6 +281,7 @@ Sub B4XPage_Appear
l_atiende.Text = c.GetString("CAT_CL_ATIENDE1") l_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2") l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2")
TELEFONO = c.GetString("CAT_CL_TELEFONO") TELEFONO = c.GetString("CAT_CL_TELEFONO")
l_telefono.Text = c.GetString("CAT_CL_TELEFONO")
l_total.Text = "$" & NumberFormat2(s.GetString("TOTAL_CLIE"), 1, 2, 2, True) l_total.Text = "$" & NumberFormat2(s.GetString("TOTAL_CLIE"), 1, 2, 2, True)
total_cliente = s.GetString("TOTAL_CLIE") total_cliente = s.GetString("TOTAL_CLIE")
Private factura As String = 0 Private factura As String = 0
@@ -298,16 +295,16 @@ Sub B4XPage_Appear
If m_lon.Length < 5 Then m_lon = "0" If m_lon.Length < 5 Then m_lon = "0"
LA_RUTA = c.GetString("CAT_CL_RUTA") LA_RUTA = c.GetString("CAT_CL_RUTA")
' ESTO ES PARA FORZAR A PEDIR LA FOTO Y EL GPS ' ESTO ES PARA FORZAR A PEDIR LA FOTO Y EL GPS
If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then ' If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then
L_QR.TEXT = "SIN CODIGO" ' L_QR.TEXT = "SIN CODIGO"
L_QR.TextColor = Colors.Red ' L_QR.TextColor = Colors.Red
gest.VISIBLE = False ' gest.VISIBLE = False
BT_QR.Visible = True ' BT_QR.Visible = True
Else ' Else
L_QR.TEXT = c.GetString("CAT_CL_NUM_SERIEFISICO") ' L_QR.TEXT = c.GetString("CAT_CL_NUM_SERIEFISICO")
L_QR.TextColor = Colors.Blue ' L_QR.TextColor = Colors.Blue
BT_QR.Visible = False ' BT_QR.Visible = False
End If ' End If
End If End If
c.Close c.Close
s.Close s.Close
@@ -340,9 +337,7 @@ Sub B4XPage_Appear
End If End If
c.Close c.Close
If ALMACEN = "1" Then If ALMACEN = "1" Then
Tels.Visible = False ocultamosBotonesPorGeocerca
gest.Visible = False
' B_GPS.Visible = False
End If End If
If ALMACEN = "4" Then If ALMACEN = "4" Then
' b_like.Visible = True ' b_like.Visible = True
@@ -364,21 +359,23 @@ Sub B4XPage_Appear
Else Else
' b_like.Visible = False ' b_like.Visible = False
End If End If
If ALMACEN = "16" Or ALMACEN = "13" Then If Not(Subs.geocercaActiva) And ALMACEN = "16" Or ALMACEN = "13" Then
Log("Mostramos botones venta")
Tels.Visible = True Tels.Visible = True
gest.Visible = True gest.Visible = True
b_ventaabordo.Visible = True
End If End If
CallSubDelayed(Tracker, "Track")
CallSubDelayed(Tracker, "StartFLPSmall") If Not(Subs.geocercaActiva) Then
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. Log("Mostramos botones venta")
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude Tels.Visible = True
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude gest.Visible = True
' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) b_ventaabordo.Visible = True
GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) Else
Log("Ocultamos botones venta")
ocultamosBotonesPorGeocerca
End If End If
Tels.Visible = True
gest.Visible = True
' h = B4XPages.MainPage.skmt.ExecQuery("SELECT CUENTA from CUENTAA") ' h = B4XPages.MainPage.skmt.ExecQuery("SELECT CUENTA from CUENTAA")
' h.Position = 0 ' h.Position = 0
' Log(h.GetString("CUENTA")) ' Log(h.GetString("CUENTA"))
@@ -393,33 +390,20 @@ Sub B4XPage_Appear
' h.Close ' h.Close
' j.Close ' j.Close
If la_cuenta.Text = "0" Then
p_cbFactura.Visible = False
l_factura.Visible = False
b_ventaabordo.Visible = False
Else
p_cbFactura.Visible = True
l_factura.Visible = True
b_ventaabordo.Visible = True
End If
c = skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP")) c = skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
If c.RowCount > 0 Then If c.RowCount > 0 Then
c.Position = 0 c.Position = 0
Starter.MAC_IMPRESORA = c.GetString("CAT_VA_VALOR") Starter.MAC_IMPRESORA = c.GetString("CAT_VA_VALOR")
End If End If
If Starter.MAC_IMPRESORA = "" Then Starter.MAC_IMPRESORA = "0" If Starter.MAC_IMPRESORA = "" Then Starter.MAC_IMPRESORA = "0"
' Log("|" & Starter.MAC_IMPRESORA & "|")
Printer1.Initialize(Me, "Printer1") Printer1.Initialize(Me, "Printer1")
If Printer1.IsConnected = False Then If Printer1.IsConnected = False Then
' Printer1.Connect ' Printer1.Connect
' Log("1")
Else Else
Printer1.DisConnect Printer1.DisConnect
Printer1.Connect Printer1.Connect
Log("2")
End If End If
If Subs.hayPedido And Starter.utimaPagina <> "Productos" And Starter.utimaPagina <> "Cliente" Then If Subs.hayPedido And Starter.utimaPagina <> "Productos" And Starter.utimaPagina <> "Cliente" Then
' Log()
Private p As ResultSet = Starter.skmt.ExecQuery($"select * from pedido where pe_cliente = '${Subs.traeCliente}'"$) Private p As ResultSet = Starter.skmt.ExecQuery($"select * from pedido where pe_cliente = '${Subs.traeCliente}'"$)
lv_pedidoExistente.Clear lv_pedidoExistente.Clear
Private label1 As Label = lv_pedidoExistente.TwoLinesLayout.Label Private label1 As Label = lv_pedidoExistente.TwoLinesLayout.Label
@@ -427,7 +411,7 @@ Sub B4XPage_Appear
label1.TextSize = 13 label1.TextSize = 13
Private label2 As Label = lv_pedidoExistente.TwoLinesLayout.SecondLabel Private label2 As Label = lv_pedidoExistente.TwoLinesLayout.SecondLabel
label2.TextSize = 13 label2.TextSize = 13
Private cs As CSBuilder Private cs As CSBuilder
Do While p.NextRow Do While p.NextRow
cs.Initialize cs.Initialize
@@ -437,11 +421,31 @@ Sub B4XPage_Appear
End If End If
lv_pedidoExistente.AddTwoLines(cs.Color(textColor).append(p.GetString("PE_PRONOMBRE")).pop, $"Cant: ${p.GetString("PE_CANT")} - $${NumberFormat2(p.GetString("PE_COSTO_TOT"),1,2,2,True)}, ${p.GetString("PE_FOLIO")}"$) lv_pedidoExistente.AddTwoLines(cs.Color(textColor).append(p.GetString("PE_PRONOMBRE")).pop, $"Cant: ${p.GetString("PE_CANT")} - $${NumberFormat2(p.GetString("PE_COSTO_TOT"),1,2,2,True)}, ${p.GetString("PE_FOLIO")}"$)
Loop Loop
p_pedidoExistente.Visible = True p_pedidoExistente.Visible = True
p_pedidoExistente.BringToFront p_pedidoExistente.BringToFront
b_pedidoExistente.Visible = True b_pedidoExistente.Visible = True
End If End If
If la_cuenta.Text = "0" Then
p_cbFactura.Visible = False
l_factura.Visible = False
b_ventaabordo.Visible = False
Else
p_cbFactura.Visible = True
l_factura.Visible = True
b_ventaabordo.Visible = True
End If
'Revisamos si la geocerca debe de activarse y de ser necesario, ocultamos los botones de venta y no venta.
If Subs.traeGeocerca Then ocultamosBotonesPorGeocerca
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation)
End If
End Sub End Sub
Sub B4XPage_disappear Sub B4XPage_disappear
@@ -450,32 +454,37 @@ Sub B4XPage_disappear
End Sub End Sub
Sub GPS_LocationChanged (Location1 As Location) Sub GPS_LocationChanged (Location1 As Location)
' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red) LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red)
If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps) ' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps)
End If End If
Dim l1, l2 As Location Dim l1, l2 As Location
l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps) l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$) ' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$)
l2.Initialize2(m_lat, m_lon) l2.Initialize2(m_lat, m_lon)
BT_QR.Enabled = True BT_QR.Enabled = True
LA_GPS.TextColor = Colors.Blue LA_GPS.TextColor = Colors.Blue
LA_GPS.Text = "CON UBICACION GPS" LA_GPS.Text = "CON UBICACION GPS"
Log("CON UBICACION GPS")
' B_GPS.Enabled = True ' B_GPS.Enabled = True
'now we need the distance between our location and the target location 'now we need the distance between our location and the target location
distance = l1.DistanceTo(l2) 'the result is in meter distance = l1.DistanceTo(l2) 'the result is in meter
gest.Visible = True Log(distance)
' If distance < 100 Then Log((Subs.geocercaActiva And distance < 100))
Log(Not(Subs.geocercaActiva))
If (Subs.geocercaActiva And distance < 100) Or (Not(Subs.geocercaActiva)) Then
Log("Mostramos botones venta")
LA_GEO.TextColor = Colors.Blue LA_GEO.TextColor = Colors.Blue
Tels.Visible = True Tels.Visible = True
gest.Visible = True gest.Visible = True
' Else b_ventaabordo.Visible = True
Else
' LA_GEO.TextColor = Colors.Red ' LA_GEO.TextColor = Colors.Red
' End If End If
LA_GEO.Text= $"$1.2{distance/1000} kms"$ LA_GEO.Text= $"$1.2{distance/1000} kms"$
B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS") B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
@@ -495,16 +504,15 @@ Sub gest_Click
End If End If
'Buscamos en el historial de cuestionarios si el cliente ya tiene cuestionario contestado. 'Buscamos en el historial de cuestionarios si el cliente ya tiene cuestionario contestado.
Private hc As Cursor = Starter.skmt.ExecQuery($"select count(HC_CLIENTE) as cuantos from HIST_CUESTIONARIO where HC_CLIENTE = '${Subs.traeCliente}'"$) ' Private hc As Cursor = Starter.skmt.ExecQuery($"select count(HC_CLIENTE) as cuantos from HIST_CUESTIONARIO where HC_CLIENTE = '${Subs.traeCliente}'"$)
hc.Position = 0 ' hc.Position = 0
Log($"${cuest.encuestaIniciada} - ${hc.GetString("cuantos")} - ${cuest.clienteConCuestionario(Subs.traeCliente)}"$) ' Log($"${cuest.encuestaIniciada} - ${hc.GetString("cuantos")} - ${cuest.clienteConCuestionario(Subs.traeCliente)}"$)
'
If la_cuenta.Text <> "0" And Not(cuest.encuestaIniciada) And hc.GetString("cuantos") = 0 And Not(cuest.clienteConCuestionario(Subs.traeCliente)) Then ' If la_cuenta.Text <> "0" And Not(cuest.encuestaIniciada) And hc.GetString("cuantos") = 0 And Not(cuest.clienteConCuestionario(Subs.traeCliente)) Then
cuest.agregaPregunta("1", "¿Se puede acceder al negocio o está enrejado?", Array As String("No, está enrejado o no se tiene acceso", "Si se pude acceder")) ' cuest.agregaPregunta("1", "¿Se puede acceder al negocio o está enrejado?", Array As String("No, está enrejado o no se tiene acceso", "Si se pude acceder"))
Return False ' Return False
End If ' End If
Private x As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select tienda_id from COORDENADAS_GPS where tienda_id = '${la_cuenta.text}'"$) Private x As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select tienda_id from COORDENADAS_GPS where tienda_id = '${la_cuenta.text}'"$)
' Log("+++++++++++++ " & x.RowCount)
If la_cuenta.Text<> "0" And distance > 50 And x.RowCount = 0 Then If la_cuenta.Text<> "0" And distance > 50 And x.RowCount = 0 Then
Private res As String = Msgbox2("¿Estas en la tienda, para guardar la nueva ubicación?", "AVISO", "Si","" ,"No", Null) 'ignore Private res As String = Msgbox2("¿Estas en la tienda, para guardar la nueva ubicación?", "AVISO", "Si","" ,"No", Null) 'ignore
If res = DialogResponse.POSITIVE Then If res = DialogResponse.POSITIVE Then
@@ -521,8 +529,6 @@ Sub gest_Click
reqManager.ExecuteCommand(cmd , "ins_coords_nuevas") reqManager.ExecuteCommand(cmd , "ins_coords_nuevas")
End If End If
End If End If
'Si hay mapa de productos es que hay venta en proceso, entonces borramos la actual para meter la nueva.
' If B4XPages.MainPage.productos.prodsMap.IsInitialized And B4XPages.MainPage.productos.prodsMap.Size > 0 Then Subs.borraPedidoClienteActual
B4XPages.ShowPage("productos") B4XPages.ShowPage("productos")
End Sub End Sub
@@ -533,7 +539,6 @@ End Sub
Private Sub B4XPage_CloseRequest As ResumableSub Private Sub B4XPage_CloseRequest As ResumableSub
' BACK key pressed ' BACK key pressed
' Return True To close, False To cancel ' Return True To close, False To cancel
' Log($"venimosDeTicketsDia=${venimosDeTicketsDia}"$)
If la_cuenta.Text <> "0" Then If la_cuenta.Text <> "0" Then
cuest.encuestaIniciada = False cuest.encuestaIniciada = False
cuest.ocultPanelPregunta cuest.ocultPanelPregunta
@@ -564,10 +569,6 @@ Sub Tar_Click
B4XPages.ShowPage("Nota") B4XPages.ShowPage("Nota")
End Sub End Sub
'Sub Tar_LongClick
' p_abono.Visible = True
'End Sub
Sub DATOS_Click Sub DATOS_Click
B4XPages.ShowPage("telefonos") B4XPages.ShowPage("telefonos")
End Sub End Sub
@@ -586,7 +587,6 @@ Sub Guardar_Click
c.Close c.Close
c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
c.Position=0 c.Position=0
' Log("xxxxxxxxxxxxxxx " & c.GetString("CUANTOS"))
If c.GetString("CUANTOS") > 0 Then ' Si hay pedido, entonces ... If c.GetString("CUANTOS") > 0 Then ' Si hay pedido, entonces ...
Log("HAY PEDIDO") Log("HAY PEDIDO")
Private cbFactura As Int = 0 Private cbFactura As Int = 0
@@ -598,7 +598,7 @@ Sub Guardar_Click
Log(">>>>> PONEMOS SIG TICKET") Log(">>>>> PONEMOS SIG TICKET")
B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set PE_TICKET = ${Subs.traeTicketConsecutivo(Subs.traeCliente)}, PE_GUARDADO = 1 where PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_TICKET is Null"$) B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set PE_TICKET = ${Subs.traeTicketConsecutivo(Subs.traeCliente)}, PE_GUARDADO = 1 where PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_TICKET is Null"$)
End If End If
B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set PE_GUARDADO = 1, PE_ENVIO_OK = 1 where PE_CLIENTE IN (Select CUENTA from cuentaa)"$) B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set PE_GUARDADO = 1, PE_ENVIO_OK = 0 where PE_CLIENTE IN (Select CUENTA from cuentaa)"$)
B4XPages.MainPage.skmt.ExecNonQuery($"update pedido_cliente set PC_GUARDADO = 1 where PC_CLIENTE IN (Select CUENTA from cuentaa)"$) B4XPages.MainPage.skmt.ExecNonQuery($"update pedido_cliente set PC_GUARDADO = 1 where PC_CLIENTE IN (Select CUENTA from cuentaa)"$)
c.Close c.Close
DateTime.TimeFormat = "HHmmss" DateTime.TimeFormat = "HHmmss"
@@ -626,7 +626,13 @@ Sub Guardar_Click
' LogColor($"actualizamos "${la_cuenta.text}, hora_final=${DateTime.now}"$,Colors.Red) ' LogColor($"actualizamos "${la_cuenta.text}, hora_final=${DateTime.now}"$,Colors.Red)
Subs.actualizaTET(la_cuenta.text) Subs.actualizaTET(la_cuenta.text)
DateTime.TimeFormat = "HH:mm:ss" DateTime.TimeFormat = "HH:mm:ss"
' mandaPendientes 'LO COMENTAMOS PARA PRUEBAS, ACTIVAR AL FINAL!!!
' B4XPages.MainPage.principal.enviaPedidoBatch(Subs.traeCliente)
' Sleep(2000)
mandaPendientes 'LO COMENTAMOS PARA PRUEBAS, ACTIVAR AL FINAL!!! - Solo envia clientes nuevos, no comentar lo que yo descomente --- javier (por que Guerra lo comento) ... ¿Que descomentaste?? --- Guerra
mandapiezas mandapiezas
B4XPages.MainPage.productos.reiniciarlistaProds = True B4XPages.MainPage.productos.reiniciarlistaProds = True
B4XPages.MainPage.productos.prodsMap.Initialize B4XPages.MainPage.productos.prodsMap.Initialize
@@ -1055,6 +1061,7 @@ Sub B_GUARDA_C_Click
Tar.Visible = True Tar.Visible = True
Tels.Visible = True Tels.Visible = True
gest.Visible = True gest.Visible = True
b_ventaabordo.Visible = True
' b_like.Visible = False ' b_like.Visible = False
Guardar.Visible = True Guardar.Visible = True
End Sub End Sub
@@ -1155,113 +1162,156 @@ Private Sub cb_factura_CheckedChange(Checked As Boolean)
End Sub End Sub
Sub mandaPendientes Sub mandaPendientes
' PEDIDO_CLIENTE (Pendientes) '' PEDIDO_CLIENTE (Pendientes)
Log(">>>>>>> MANDA PENDIENTES") ' Log(">>>>>>> MANDA PENDIENTES")
Dim PCNoArts As String ' Dim PCNoArts As String
Dim PCMonto As String ' Dim PCMonto As String
If usuario <> "KMTS1" Then ' If usuario <> "KMTS1" Then
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 0") ' c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 0")
Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$) ' Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$)
If c.RowCount > 0 Then ' If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1 ' For i = 0 To c.RowCount - 1
c.Position = i ' c.Position = i
Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$) ' Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$)
Dim cmd As DBCommand ' Dim cmd As DBCommand
cmd.Initialize ' cmd.Initialize
cmd.Name = "insert_pedidos_INTMEX" ' 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"), Subs.traeAlmacen, B4XPages.MainPage.principal.l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA")) ' 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"), Subs.traeAlmacen, B4XPages.MainPage.principal.l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA"))
PCNoArts = c.GetString("PC_NOART") ' PCNoArts = c.GetString("PC_NOART")
PCMonto = c.GetString("PC_MONTO") ' PCMonto = c.GetString("PC_MONTO")
' sql.insert_pedidos_INTMEX=INSERT INTO INTMEX.PEDIDO_CLIENTE(PC_FECHA_SINC,PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_IDALMACEN, PC_RUTA, PC_COSTO_SIN, PC_FACTURA) VALUES (SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?)) '' sql.insert_pedidos_INTMEX=INSERT INTO INTMEX.PEDIDO_CLIENTE(PC_FECHA_SINC,PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_IDALMACEN, PC_RUTA, PC_COSTO_SIN, PC_FACTURA) VALUES (SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?))
reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_head_${c.GetString("PC_CLIENTE")}"$) ' reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_head_${c.GetString("PC_CLIENTE")}"$)
Next ' Next
End If ' End If
'PEDIDO (Pendientes) ' 'PEDIDO (Pendientes)
c = skmt.ExecQuery($"SELECT PE_ENVIO_OK, 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_TICKET FROM PEDIDO where PE_ENVIO_OK <> 1"$) ' c = skmt.ExecQuery($"SELECT PE_ENVIO_OK, 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_TICKET FROM PEDIDO where PE_ENVIO_OK <> 1"$)
Log($"Pedido PENDIENTE: ${c.RowCount}"$) ' Log($"Pedido PENDIENTE: ${c.RowCount}"$)
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_pedido4_INTMEX"
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,c.GetString("PE_TICKET"))
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}, ${PCMonto}, ${c.GetString("PE_TICKET")}"$)
' sql.insert_pedido_INTMEX=INSERT INTO INTMEX.PEDIDO (PE_CODPROMO,PE_FECHA_SINC,PE_IDALMACEN,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN, PE_DESCUENTO, PE_TIPO) VALUES ((?),SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),nvl((?),0),(?))
' sql.insert_pedido2_INTMEX=INSERT INTO INTMEX.PEDIDO (PE_CODPROMO,PE_FECHA_SINC,PE_IDALMACEN,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN, PE_DESCUENTO, PE_TIPO, PE_CANT_TOTAL, PE_VENTA_TOTAL) VALUES ((?),SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),nvl((?),0),(?),(?),(?))
Next
End If
'ABONOS
Dim ab As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$)
Log(ab.RowCount)
If ab.RowCount > 0 Then
For i=0 To ab.RowCount -1
ab.Position = i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_abono_INTMEX"
cmd.Parameters = Array As Object( ab.GetString("a_usuario"), ab.GetString("a_ruta"), ab.GetString("a_cliente"), ab.GetString("a_abono"), ab.GetString("a_fecha"),ALMACEN )
reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
Next
End If
ab.Close
'CLIENTES NUEVOS
Dim bb As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from CLIENTE_NUEVO where CN_enviado is null"$)
Dim cb As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT ID_ALMACEN from CAT_ALMACEN")
cb.Position = 0
If bb.RowCount > 0 Then
For i=0 To bb.RowCount -1
bb.Position = i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_cliente_INTMEX"
cmd.Parameters = Array As Object( bb.GetString("CN_ID_CLIENTE"), bb.GetString("CN_NOMBRE"),B4XPages.MainPage.principal.l_ruta.Text,cb.GetString("ID_ALMACEN"))
reqManager.ExecuteCommand(cmd , $"insert_cliente_${bb.GetString("CN_ID_CLIENTE")}"$)
Log($"insert_cliente_${bb.GetString("CN_ID_CLIENTE")}"$)
Next
Log("si lo hice")
End If
bb.Close
cb.Close
' BANDERA FACTURA (Pendientes)
' c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_FACTURA, PC_CLIENTE FROM pedido_cliente where PC_CLIENTE IN (Select CUENTA from cuentaa)")
' Log($"BANDERA FACTURA PENDIENTE: ${c.RowCount}"$)
' If c.RowCount>0 Then ' If c.RowCount>0 Then
' For i=0 To c.RowCount -1 ' For i=0 To c.RowCount -1
' c.Position=i ' c.Position=i
' Dim cmd As DBCommand ' Dim cmd As DBCommand
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "update_factura_INTMEX" ' cmd.Name = "insert_pedido4_INTMEX"
' cmd.Parameters = Array As Object(C.GetString("PC_FACTURA"), C.GetString("PC_CLIENTE"), ALMACEN) ' 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,c.GetString("PE_TICKET"))
' reqManager.ExecuteCommand(cmd , "upd_facturasPendientes") ' 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}, ${PCMonto}, ${c.GetString("PE_TICKET")}"$)
'' sql.insert_pedido_INTMEX=INSERT INTO INTMEX.PEDIDO (PE_CODPROMO,PE_FECHA_SINC,PE_IDALMACEN,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN, PE_DESCUENTO, PE_TIPO) VALUES ((?),SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),nvl((?),0),(?))
'' sql.insert_pedido2_INTMEX=INSERT INTO INTMEX.PEDIDO (PE_CODPROMO,PE_FECHA_SINC,PE_IDALMACEN,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN, PE_DESCUENTO, PE_TIPO, PE_CANT_TOTAL, PE_VENTA_TOTAL) VALUES ((?),SYSDATE,(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),nvl((?),0),(?),(?),(?))
' Next
' End If
' 'ABONOS
' Dim ab As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$)
' Log(ab.RowCount)
' If ab.RowCount > 0 Then
' For i=0 To ab.RowCount -1
' ab.Position = i
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name = "insert_abono_INTMEX"
' cmd.Parameters = Array As Object( ab.GetString("a_usuario"), ab.GetString("a_ruta"), ab.GetString("a_cliente"), ab.GetString("a_abono"), ab.GetString("a_fecha"),ALMACEN )
' reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
' Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
' Next
' End If
' ab.Close
'CLIENTES NUEVOS
' Dim bb As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from CLIENTE_NUEVO where CN_enviado is null"$)
' Dim cb As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT ID_ALMACEN from CAT_ALMACEN")
' cb.Position = 0
' If bb.RowCount > 0 Then
' For i=0 To bb.RowCount -1
' bb.Position = i
' Dim cmd As DBCommand
' cmd.Initialize
' cmd.Name = "insert_cliente_INTMEX"
' cmd.Parameters = Array As Object( bb.GetString("CN_ID_CLIENTE"), bb.GetString("CN_NOMBRE"),B4XPages.MainPage.principal.l_ruta.Text,cb.GetString("ID_ALMACEN"))
' reqManager.ExecuteCommand(cmd , $"insert_cliente_${bb.GetString("CN_ID_CLIENTE")}"$)
' Log($"insert_cliente_${bb.GetString("CN_ID_CLIENTE")}"$)
' Next
' Log("si lo hice")
' End If
' bb.Close
' cb.Close
c=Starter.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, CN_SOLICITA, CN_COLONIA, CN_TELEFONO, CN_CP FROM CLIENTES_NUEVOS")
If c.RowCount>0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim dia As Int = DateTime.GetDayOfWeek(DateTime.Now)
If dia = 2 Then
Dim dialetra As String = "LUNES"
Else If dia = 3 Then
Dim dialetra As String = "MARTES"
Else If dia = 4 Then
Dim dialetra As String = "MIERCOLES"
Else If dia = 5 Then
Dim dialetra As String = "JUEVES"
Else If dia = 6 Then
Dim dialetra As String = "VIERNES"
Else If dia = 7 Then
Dim dialetra As String = "SABADO"
End If
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_cliente_INTMEX2"
Log(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")&" ,"&ALMACEN& c.GetString("CN_RUTA")&" ,"& "En espera"&c.GetString("CN_GIRO")&" ,"&dialetra& c.GetString("CN_SOLICITA")&" ,"& c.GetString("CN_COLONIA")&" ,"& c.GetString("CN_TELEFONO"))
cmd.Parameters = Array As Object(c.GetString("CN_ID"), c.GetString("CN_NOMBRE"), c.GetString("CN_RUTA"),ALMACEN, c.GetString("CN_LAT"), c.GetString("CN_LON"), "En espera", c.GetString("CN_FECHA"), c.GetString("CN_USER"), c.GetString("CN_DIRECCION"), c.GetString("CN_GIRO"),dialetra, c.GetString("CN_TELEFONO"), c.GetString("CN_SOLICITA"), c.GetString("CN_COLONIA"), c.GetString("CN_CP"))
reqManager.ExecuteCommand(cmd , $"insert_cliente_${C.GetString("CN_ID")}"$)
Next
End If
c.Close
' Cambio atiende
c=B4XPages.MainPage.skmt.ExecQuery("Select CAT_CL_TELEFONO, CAT_CL_CODIGO from kmt_info where CAT_CL_CODIGO IN (SELECT CLIENTE FROM TELEFONO)")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "update_atiende_INTMEX"
cmd.Parameters = Array As Object(C.GetString("CAT_CL_TELEFONO"),C.GetString("CAT_CL_CODIGO"),ALMACEN,Subs.traeRuta2(C.GetString("CAT_CL_CODIGO")))
reqManager.ExecuteCommand(cmd , "up_coordenadas")
Next
End If
c.Close
'' BANDERA FACTURA (Pendientes)
'' c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_FACTURA, PC_CLIENTE FROM pedido_cliente where PC_CLIENTE IN (Select CUENTA from cuentaa)")
'' Log($"BANDERA FACTURA PENDIENTE: ${c.RowCount}"$)
'' If c.RowCount>0 Then
'' For i=0 To c.RowCount -1
'' c.Position=i
'' Dim cmd As DBCommand
'' cmd.Initialize
'' cmd.Name = "update_factura_INTMEX"
'' cmd.Parameters = Array As Object(C.GetString("PC_FACTURA"), C.GetString("PC_CLIENTE"), ALMACEN)
'' reqManager.ExecuteCommand(cmd , "upd_facturasPendientes")
'' Next
'' ' sql.update_factura_INTMEX=UPDATE INTMEX.HIST_VENTAS SET HV_FACTURA = (?) WHERE HV_CLIENTE = (?) And HV_ALMACEN = (?)
'' End If
'' c.Close
'' CUESTIONARIO (Pendientes)
' c = B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM CUESTIONARIO where ifnull(Q_ENVIO_OK, 0) = 0 order by Q_IDCLIENTE, Q_IDPREGUNTA; Q_IDRESPUESTA")
' Private rutaActual As String = Subs.traeRuta
' Log("CUEST PENDIENTES: " & c.RowCount)
' If c.RowCount > 0 Then
' For x = 0 To c.RowCount - 1
' c.Position = x
' Log($"insert_cuestionario_${c.GetString("Q_IDCLIENTE")}_${c.GetString("Q_IDPREGUNTA")}_${c.GetString("Q_IDRESPUESTA")}"$)
' 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 , $"insert_cuestionario_${c.GetString("Q_IDCLIENTE")}_${c.GetString("Q_IDPREGUNTA")}_${c.GetString("Q_IDRESPUESTA")}"$)
' Next ' Next
' ' sql.update_factura_INTMEX=UPDATE INTMEX.HIST_VENTAS SET HV_FACTURA = (?) WHERE HV_CLIENTE = (?) And HV_ALMACEN = (?)
' End If ' End If
' c.Close ' c.Close
' End If
' CUESTIONARIO (Pendientes)
c = B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM CUESTIONARIO where ifnull(Q_ENVIO_OK, 0) = 0 order by Q_IDCLIENTE, Q_IDPREGUNTA; Q_IDRESPUESTA")
Private rutaActual As String = Subs.traeRuta
Log("CUEST PENDIENTES: " & c.RowCount)
If c.RowCount > 0 Then
For x = 0 To c.RowCount - 1
c.Position = x
Log($"insert_cuestionario_${c.GetString("Q_IDCLIENTE")}_${c.GetString("Q_IDPREGUNTA")}_${c.GetString("Q_IDRESPUESTA")}"$)
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 , $"insert_cuestionario_${c.GetString("Q_IDCLIENTE")}_${c.GetString("Q_IDPREGUNTA")}_${c.GetString("Q_IDRESPUESTA")}"$)
Next
End If
c.Close
End If
End Sub End Sub
Sub mandapiezas Sub mandapiezas
@@ -1392,7 +1442,7 @@ Sub JobDone(Job As HttpJob)
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE ABONOS set a_enviado = 1 where a_cliente = '${cliente}'"$) B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE ABONOS set a_enviado = 1 where a_cliente = '${cliente}'"$)
End If End If
End If End If
'CLIENTES NUEVOS 'CLIENTES NUEVOS
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim resultado As DBResult = reqManager.HandleJob(Job) Dim resultado As DBResult = reqManager.HandleJob(Job)
@@ -1405,7 +1455,15 @@ Sub JobDone(Job As HttpJob)
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
Next Next
Next Next
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE CLIENTE_NUEVO set CN_enviado = 1 where CN_ID_CLIENTE = '${cliente}'"$) B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE CLIENTES_NUEVOS set CN_ENVIO = 1 where CN_ID = '${cliente}'"$)
End If
End If
'Guarda coords nuevas
If Job.JobName = "DBRequest" Then
Dim resultado As DBResult = reqManager.HandleJob(Job)
If resultado.Tag = "insCoordsNuevas" Then
ToastMessageShow("Coordenadas actualizadas", False)
End If End If
End If End If
@@ -1643,4 +1701,85 @@ End Sub
Private Sub b_pedidoExistente_Click Private Sub b_pedidoExistente_Click
p_pedidoExistente.Visible = True p_pedidoExistente.Visible = True
End Sub
Private Sub l_telefono_LongClick
p_telefono.Height = Root.Height
p_telefono.Width = Root.Width
p_telefono.Visible = True
End Sub
Private Sub b_aceptelefono_Click
If et_telefono.Text <> "" Then
Private coord As Cursor = B4XPages.MainPage.skmt.ExecQuery("SELECT * from TELEFONO where CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
If coord.RowCount = 0 Then
skmt.ExecNonQuery2("INSERT INTO TELEFONO(TEL,CLIENTE) VALUES (?,?)", Array As String (et_telefono.Text,Subs.traeCliente))
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_TELEFONO = '${et_telefono.Text}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$)
MsgboxAsync("Datos actualizados.","Atención")
l_telefono.Text = et_telefono.Text
ime.HideKeyboard
p_telefono.Visible = False
et_telefono.Text = ""
Else
skmt.ExecNonQuery2("UPDATE TELEFONO SET TEL = ? where CLIENTE IN (SELECT CUENTA FROM CUENTAA)", Array As String (et_telefono.Text))
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_TELEFONO = '${et_telefono.Text}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$)
MsgboxAsync("Datos actualizados.","Atención")
l_telefono.Text = et_telefono.Text
ime.HideKeyboard
p_telefono.Visible = False
et_telefono.Text = ""
End If
Else
MsgboxAsync("Por favor captura un telefono valido.","Atención")
End If
End Sub
Private Sub b_canceltelefono_Click
p_telefono.Visible = False
et_telefono.Text = ""
ime.HideKeyboard
End Sub
Private Sub p_telefono_Click
End Sub
Private Sub Label16_LongClick
p_telefono.Height = Root.Height
p_telefono.Width = Root.Width
p_telefono.Visible = True
End Sub
' Ocultamos por geocerca (Venta, Preventa y No venta)
Sub ocultamosBotonesPorGeocerca
gest.Visible = False
b_ventaabordo.Visible = False
Tels.Visible = False
End Sub
Private Sub la_nombre_Click
Log("Clicked")
If Not(Subs.geocercaActiva) Then
Log("Enviando coords")
DateTime.DateFormat = "MM/dd/yyyy"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
B4XPages.MainPage.skmt.ExecNonQuery($"update kmt_info set cat_cl_lat = '${B4XPages.MainPage.lat_gps}', cat_cl_long = '${B4XPages.MainPage.lon_gps}' where cat_cl_codigo = '${la_cuenta.text}'"$)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_coordsNuevas_INTMEX"
cmd.Parameters = Array As Object(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, Subs.traeAlmacen, Subs.traeRuta, la_cuenta.text)
' cmd.Parameters = Array As Object("1", "1", "5", "6", "CLN13478")
Log($"${Subs.traeAlmacen}, ${Subs.traeRuta},${la_cuenta.text},${B4XPages.MainPage.lat_gps},${B4XPages.MainPage.lon_gps}"$)
reqManager.ExecuteCommand(cmd , "insCoordsNuevas")
ToastMessageShow("Coordenadas actualizadas", False)
B4XPage_Appear
Else
ToastMessageShow("Geocerca activada", False)
End If
End Sub End Sub

View File

@@ -55,6 +55,7 @@ End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear Sub B4XPage_Appear
ListView1.Height = Root.Height * 0.8
If Not(Starter.gps.GPSEnabled) Then If Not(Starter.gps.GPSEnabled) Then
ToastMessageShow("Es necesario tener el GPS encendido", True) ToastMessageShow("Es necesario tener el GPS encendido", True)
StartActivity(Starter.gps.LocationSettingsIntent) StartActivity(Starter.gps.LocationSettingsIntent)
@@ -65,8 +66,9 @@ Sub B4XPage_Appear
C.Position=0 C.Position=0
Existe = C.GetString("EXISTE") Existe = C.GetString("EXISTE")
C.Close C.Close
c=B4XPages.MainPage.skmt.ExecQuery("select HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_PRONOMBRE asc") c=B4XPages.MainPage.skmt.ExecQuery("select HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_USUARIO from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_PRONOMBRE asc")
ListView1.Clear ListView1.Clear
ListView1.TwoLinesLayout.ItemHeight = 70dip
If c.RowCount>0 Then If c.RowCount>0 Then
For i=0 To c.RowCount -1 For i=0 To c.RowCount -1
c.Position=i c.Position=i
@@ -78,7 +80,7 @@ Sub B4XPage_Appear
label2 = ListView1.TwoLinesLayout.SecondLabel label2 = ListView1.TwoLinesLayout.SecondLabel
label2.TextSize = 10 label2.TextSize = 10
label2.TextColor = Colors.Blue label2.TextColor = Colors.Blue
ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT")) ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT") & CRLF & "Usuario: " & c.GetString("HVD_USUARIO"))
Next Next
End If End If
If Existe <> 0 Then If Existe <> 0 Then

View File

@@ -57,6 +57,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' L_CANT.Text = c.GetString("PC_NOART") ' L_CANT.Text = c.GetString("PC_NOART")
' L_TOTAL.Text = c.GetString("PC_MONTO") ' L_TOTAL.Text = c.GetString("PC_MONTO")
' End If ' End If
p_nota.Height = Root.Height : p_nota.Width = Root.Width
End Sub End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.

View File

@@ -4,22 +4,131 @@ ModulesStructureVersion=1
Type=Class Type=Class
Version=11.5 Version=11.5
@EndOfDesignText@ @EndOfDesignText@
'Sub Class_Globals
' Private Root As B4XView 'ignore
' Private xui As XUI 'ignore
'
' Dim g As GPS
' Dim ruta As String
' Dim c As Cursor
'
' Dim CANCELA As Button
' Dim GUARDA As Button
' Dim cuenta As String
' Dim usuario As String
' Dim sDate,sTime As String
' Dim no_cliente As String
' Dim no_ruta As String
'
' Dim r_4 As RadioButton
' Dim E_NOMBRE As EditText
' Dim tgl As Toggle
' Private l_sinUbicacion As Label
' Private p_nuevoCliente As Panel
' Private Label1 As Label
' Private p_botones As Panel
'End Sub
'
''You can add more parameters here.
'Public Sub Initialize As Object
' Return Me
'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
' Root.LoadLayout("nuevocliente")
' ruta = File.DirInternal
' If File.Exists(ruta, "kmt.db") = False Then
' File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
' End If
'' skmt.Initialize(ruta,"kmt.db", True)
'End Sub
'
''You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
'
'Sub B4XPage_Appear
' E_NOMBRE.Text = ""
' If Not(Starter.gps.GPSEnabled) Then
' ToastMessageShow("Es necesario tener el GPS encendido", True)
' StartActivity(Starter.gps.LocationSettingsIntent)
' End If
' GUARDA.Visible = False
' Subs.panelVisible(p_nuevoCliente, 0, 0)
' p_nuevoCliente.Height = Root.Height
' p_nuevoCliente.Width = Root.Width
' Subs.centraEtiqueta(Label1, Root.Width)
' Subs.centraEtiqueta(l_sinUbicacion, Root.Width)
' Subs.centraPanel(p_botones, Root.Width)
' E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
' If B4XPages.MainPage.lat_gps <> "0.0" Then
' GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
' l_sinUbicacion.Visible = False
' End If
'End Sub
'
'Sub GPS_LocationChanged (Location1 As Location)
' If B4XPages.MainPage.lat_gps <> "0.0" Then
' GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
' l_sinUbicacion.Visible = False
' End If
'End Sub
'
'Sub CANCELA_Click
' B4XPages.ShowPage("Principal")
'End Sub
'
'Sub GUARDA_Click
' If E_NOMBRE.Text = "" Then
' ToastMessageShow("Se tiene que nombrar la tienda para continuar" , True)
' Else
' DateTime.DateFormat = "MM/dd/yyyy"
' DateTime.Timeformat = "HHmmss"
' sDate=DateTime.Date(DateTime.Now)
' sTime=DateTime.Time(DateTime.Now)
' Log($" //////////// Date: ${sDate} - Time: ${sTime} ////////////////"$)
' 'Aqui creamos manualmete la hora con el separador de los 2 puntos porque en algunas versiones de android no respeta el formato "Timeformat = 'HH:mm:ss'"
' Private hora As String = sTime.SubString2(0,2)
' Private mins As String = sTime.SubString2(2,4)
' Private segs As String = sTime.SubString(4)
' sTime = hora&":"&mins&":"&segs
' Log("////////////// sTime: "&sTime&" ////////////////")
' c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
' c.Position=0
' no_ruta= c.GetString("CAT_CL_RUTA")
' no_cliente= "N" & sTime & no_ruta
' Log("++ ++ no_cliente = "&no_cliente)
' c.Close
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps))
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (no_cliente))
' B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CLIENTE_NUEVO(CN_ID_CLIENTE, CN_NOMBRE) VALUES (?,?)", Array As Object(no_cliente, E_NOMBRE.Text))
' B4XPages.ShowPage("Cliente")
' End If
'End Sub
'
'
'Private Sub p_nuevoCliente_Click
'
'End Sub
Sub Class_Globals Sub Class_Globals
Private Root As B4XView 'ignore Private Root As B4XView 'ignore
Private xui As XUI 'ignore Private xui As XUI 'ignore
Dim g As GPS Dim g As GPS
Dim ruta As String Dim ruta As String
Dim c As Cursor Dim c As Cursor
Dim CANCELA As Button Dim CANCELA As Button
Dim GUARDA As Button Dim GUARDA As Button
Dim cuenta As String Dim cuenta As String
Dim usuario As String Dim usuario As String
Dim sDate,sTime As String Dim sDate,sTime As String
Dim sDate2,sTime2 As String
Dim no_cliente As String Dim no_cliente As String
Dim no_ruta As String Dim no_ruta As String
Dim lista_punta As List
Dim r_4 As RadioButton Dim r_4 As RadioButton
Dim E_NOMBRE As EditText Dim E_NOMBRE As EditText
Dim tgl As Toggle Dim tgl As Toggle
@@ -27,6 +136,33 @@ Sub Class_Globals
Private p_nuevoCliente As Panel Private p_nuevoCliente As Panel
Private Label1 As Label Private Label1 As Label
Private p_botones As Panel Private p_botones As Panel
Private p_cam As Panel
Private p_camara As Panel
Private b_foto_inci As Button
' Private camEx2 As CameraExClass2
Dim frontCamera As Boolean = False
Dim fototomada As String = "0"
Dim ALMACEN As String
Private et_direccion As EditText
Private Label2 As Label
Dim lat As Double = 0
Dim lon As Double = 0
Private b_ubicacion As Label
Private Label3 As Label
Private cb_giro As B4XComboBox
Dim giros As String
Private L_Atiende As Label
Private ET_Atiende As EditText
Private Label5 As Label
Private et_colonia As EditText
Private et_telefono As EditText
Private et_cp As EditText
Private Label6 As Label
Dim cuantosNuevos As Int
Private p_transparenteCN As Panel
Private p_clientesNuevos As Panel
Private b_clienteNuevo As Button
Private l_textoCN As Label
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -36,6 +172,7 @@ End Sub
'This event will be called once, before the page becomes visible. 'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView) Private Sub B4XPage_Created (Root1 As B4XView)
' B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
Root = Root1 Root = Root1
'load the layout to Root 'load the layout to Root
Root.LoadLayout("nuevocliente") Root.LoadLayout("nuevocliente")
@@ -44,12 +181,45 @@ Private Sub B4XPage_Created (Root1 As B4XView)
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
End If End If
' skmt.Initialize(ruta,"kmt.db", True) ' skmt.Initialize(ruta,"kmt.db", True)
' p_camara.Height = Root.Height
' p_camara.Width = Root.Width
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
' If Result Then
'' camEx2.Initialize(p_cam, frontCamera, Me, "Camera1")
'' frontCamera = camEx2.Front
' Log("inicializamos Camara")
' Else
' ToastMessageShow("Sin permisos de camara!!!", True)
' End If
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result Then
Log("Con permisos para escritura")
Else
ToastMessageShow("Sin permisos de escritura!!!", True)
End If
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_EXTERNAL_STORAGE)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result Then
Log("Con permisos para escritura")
Else
ToastMessageShow("Sin permisos de lectura!!!", True)
End If
End Sub End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear Sub B4XPage_Appear
p_transparenteCN.Top = 0 : p_transparenteCN.Left = 0
p_transparenteCN.Width = Root.Width : p_transparenteCN.Height = Root.Height
et_direccion.Text = ""
E_NOMBRE.Text = "" E_NOMBRE.Text = ""
ET_Atiende.Text = ""
et_colonia.Text = ""
et_telefono.Text = ""
et_cp.Text = ""
If Not(Starter.gps.GPSEnabled) Then If Not(Starter.gps.GPSEnabled) Then
ToastMessageShow("Es necesario tener el GPS encendido", True) ToastMessageShow("Es necesario tener el GPS encendido", True)
StartActivity(Starter.gps.LocationSettingsIntent) StartActivity(Starter.gps.LocationSettingsIntent)
@@ -59,57 +229,390 @@ Sub B4XPage_Appear
p_nuevoCliente.Height = Root.Height p_nuevoCliente.Height = Root.Height
p_nuevoCliente.Width = Root.Width p_nuevoCliente.Width = Root.Width
Subs.centraEtiqueta(Label1, Root.Width) Subs.centraEtiqueta(Label1, Root.Width)
Subs.centraEtiqueta(Label5, Root.Width)
Subs.centraEtiqueta(Label6, Root.Width)
Subs.centraEtiqueta(Label2, Root.Width)
Subs.centraEtiqueta(Label3, Root.Width)
Subs.centraEtiqueta(l_sinUbicacion, Root.Width) Subs.centraEtiqueta(l_sinUbicacion, Root.Width)
Subs.centraEtiqueta(b_ubicacion, Root.Width)
Subs.centraPanel(p_botones, Root.Width) Subs.centraPanel(p_botones, Root.Width)
E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2) E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
et_cp.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
et_colonia.Left = Round(Root.Width/2)-(et_colonia.Width/2)
et_direccion.Left = Round(Root.Width/2)-(et_direccion.Width/2)
If B4XPages.MainPage.lat_gps <> "0.0" Then If B4XPages.MainPage.lat_gps <> "0.0" Then
GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar. GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
l_sinUbicacion.Visible = False l_sinUbicacion.Visible = True
End If End If
cuantosNuevos = 0
Subs.centraPanel(p_clientesNuevos, Root.Width)
c = Starter.skmt.ExecQuery("select count(cat_cl_codigo) as cuantos from kmt_info where cat_cl_codigo like 'N%'")
If c.RowCount > 0 Then
c.Position = 0
cuantosNuevos = c.GetInt("cuantos")
End If
c.Close
Dim permitidos As Int = 0
c = Starter.skmt.ExecQuery("select ACTIVO from cn")
If c.RowCount > 0 Then
c.Position = 0
permitidos = c.GetInt("ACTIVO")
End If
c.Close
Log($"Permitidos: ${permitidos}, Actuales: ${cuantosNuevos}"$)
Log((permitidos > 0) & "|" & (permitidos > cuantosNuevos))
' If permitidos <> 0 Then ' Si permitidos es CERO entonces SIN LIMITE de clientes nuevos.
l_textoCN.Text = "Llegó al límite de clientes nuevos, ya no es posible agregar mas clientes."
If permitidos = 0 Then l_textoCN.Text = "No tienes permitido dar de alta clientes nuevos."
If permitidos > cuantosNuevos Then
p_transparenteCN.Visible = False
Else
p_transparenteCN.BringToFront
p_transparenteCN.Visible = True
End If
' End If
CallSubDelayed(Tracker, "Track")
CallSubDelayed(Tracker, "StartFLPSmall")
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$)
GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation)
End If
' lista_punta.Initialize
' Dim pol As Cursor = Starter.skmt.ExecQuery("SELECT LAT, LONG FROM POLIGONO")
' If pol.RowCount > 0 Then
'
' For poli = 0 To pol.RowCount -1
' pol.Position = poli
' Dim coords As LatLng
' coords.Initialize(pol.GetString("LAT"), pol.GetString("LONG"))
' lista_punta.Add(coords)
' Next
' End If
If Not(Starter.GPS.GPSEnabled) Then
ToastMessageShow("Debe Activar el GPS del Equipo.", True)
StartActivity(Starter.GPS.LocationSettingsIntent)
Else
Starter.GPS.Start(0, 0)
' If Starter.ubicacionActual.Latitude <> 0 Then GPS_LocationChanged(Starter.ubicacionActual)
End If
CallSubDelayed(Tracker, "StartFLPSmall")
c = Starter.skmt.ExecQuery("SELECT GIRO FROM CAT_GIRO order by 1")
Dim Items As List
Items.Initialize
Items.Add("SELECCIONA UNA OPCIÓN")
If c.RowCount > 0 Then
For i = 0 To c.RowCount-1
c.Position = i
Items.Add(c.GetString("GIRO"))
Next
cb_giro.SetItems(Items)
End If
giros = "SELECCIONA UNA OPCIÓN"
c.Close
End Sub End Sub
Sub GPS_LocationChanged (Location1 As Location) Sub GPS_LocationChanged (Location1 As Location)
If B4XPages.MainPage.lat_gps <> "0.0" Then If B4XPages.MainPage.lat_gps <> "0.0" Then
GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar. GUARDA.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
l_sinUbicacion.Visible = False l_sinUbicacion.Visible = True
lat = Location1.Latitude
lon = Location1.Longitude
l_sinUbicacion.Text = ("Latitud: " & lat & ", Longotud: "& lon)
End If
b_ubicacion.TextSize = 13
b_ubicacion.Text = $"Precisión GPS $1.0{Location1.Accuracy} m"$
If Location1.Accuracy > 200 Then
b_ubicacion.TextColor = Colors.Red
b_ubicacion.TextSize = 16
b_ubicacion.Text = $"Mala señal $1.0{Location1.Accuracy} m"$
End If End If
End Sub End Sub
'Sub InicializarGPSPreciso
' Dim gps1 As GPS
' gps1.Initialize("GPS")
'
' ' Usar Criteria para alta precisión
' Dim cr As Criteria
' cr.Accuracy = cr.ACCURACY_FINE
' cr.PowerRequirement = cr.POWER_HIGH
'
' gps1.Start(0, 0) ' Máxima frecuencia de actualización
'End Sub
Sub CANCELA_Click Sub CANCELA_Click
B4XPages.ShowPage("Principal") B4XPages.ShowPage("Principal")
CallSubDelayed(Tracker, "StartFLP")
End Sub
Sub PointInPolygon(point As LatLng, polygon As List) As Boolean
Dim x As Double = point.Longitude
Dim y As Double = point.Latitude
Dim inside As Boolean = False
For i = 0 To polygon.Size - 1
Dim j As Int = (i + 1) Mod polygon.Size
Dim p1_1 As LatLng = polygon.Get(i)
Dim p2_1 As LatLng = polygon.Get(j)
Dim xi As Double = p1_1.Longitude
Dim yi As Double = p1_1.Latitude
Dim xj As Double = p2_1.Longitude
Dim yj As Double = p2_1.Latitude
Dim intersect As Boolean = ((yi > y) <> (yj > y)) And (x < (xj - xi) * (y - yi) / (yj - yi) + xi)
If intersect Then
inside = Not(inside)
End If
Next
Return inside
End Sub End Sub
Sub GUARDA_Click Sub GUARDA_Click
If E_NOMBRE.Text = "" Then
ToastMessageShow("Se tiene que nombrar la tienda para continuar" , True) ' Dim mPoint As LatLng
' mPoint.Initialize(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
'
'' If lista_punta.Size > 0 Then
'' Dim dentro As Boolean = PointInPolygon(mPoint, lista_punta)
''
'' If dentro Then
' ToastMessageShow("El punto está DENTRO del polígono", True)
B4XPages.ShowPage("NuevoCliente")
' Verifica si el nombre de la tienda está vacío
If E_NOMBRE.Text = "" Then
MsgboxAsync("Por favor captura el nombre de la Tienda","Atención")
' Verifica si la dirección tiene más de 3 caracteres
Else If et_direccion.Text.Length > 3 Then
' Verifica si la latitud es diferente de 0
If lat <> 0 Then
' Verifica si el giro del cliente está seleccionado
If giros <> "SELECCIONA UNA OPCIÓN" Or cb_giro.SelectedItem <> "SELECCIONA UNA OPCIÓN" Then
' Verifica si el encargado que atiende el negocio está capturado
If ET_Atiende.Text <> "" Then
If et_telefono.Text <> "" Then
If et_colonia.Text <> "" Then
If et_cp.Text <> "" Then
DateTime.DateFormat = "MM/dd/yyyy"
DateTime.Timeformat = "HHmmss"
sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now)
Log($" //////////// Date: ${sDate} - Time: ${sTime} ////////////////"$)
' Aquí creamos manualmente la hora con el separador de los 2 puntos porque en algunas versiones de Android no respeta el formato "Timeformat = 'HH:mm:ss'"
Private hora As String = sTime.SubString2(0,2)
Private mins As String = sTime.SubString2(2,4)
Private segs As String = sTime.SubString(4)
sTime = hora & ":" & mins & ":" & segs
Dim Fechacliente() As String = Regex.Split("/",sDate)
Log("////////////// sTime: "&sTime&" ////////////////")
c = Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
c.Position = 0
no_ruta = c.GetString("CAT_CL_RUTA")
no_cliente = "N" & sTime & no_ruta
Log("++ ++ no_cliente = "&no_cliente)
c.Close
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (no_cliente))
Starter.skmt.ExecNonQuery("delete from CUENTAA")
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
c = Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
If c.RowCount > 0 Then
c.Position = 0
ALMACEN = c.GetString("ID_ALMACEN")
End If
c.Close
c = Starter.skmt.ExecQuery("select usuario from usuarioa")
c.Position = 0
usuario = c.GetString("USUARIO")
c.Close
' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FOTO_CLIENTE(CODIGO, ALMACEN, RUTA) VALUES(?,?,?)", Array As Object(no_cliente, ALMACEN, no_ruta))
' Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_LAT,NV_LON,NV_NOMBRE,NV_DIRECCION) VALUES(?,?,?,?,?,?,?,?) ", Array As Object (no_cliente,sDate & sTime, usuario, "NUEVO CLIENTE", lat, lon, E_NOMBRE.Text,et_direccion.Text))
DateTime.DateFormat = "dd/MM/yyyy"
DateTime.Timeformat = "HH:mm:ss"
sDate2 = DateTime.Date(DateTime.Now)
sTime2 = DateTime.Time(DateTime.Now)
Log("AQUI")
Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion, CAT_CL_GIRO,CAT_CL_CP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?,?) ", Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps, cb_giro.SelectedItem,et_cp.Text))
Starter.skmt.ExecNonQuery2("INSERT INTO CLIENTES_NUEVOS(CN_ID, CN_FECHA, CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, CN_ALMACEN, CN_RUTA, CN_GIRO, CN_SOLICITA,CN_COLONIA, CN_TELEFONO,CN_CP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(no_cliente, sDate2 &" "&sTime2, usuario, lat, lon, E_NOMBRE.Text, et_direccion.Text, ALMACEN, no_ruta, cb_giro.SelectedItem, ET_Atiende.Text,et_colonia.Text,et_telefono.Text,et_cp.Text))
' fototomada = "0"
B4XPages.ShowPage("Cliente")
CallSubDelayed(Tracker, "StartFLP")
Else
MsgboxAsync("Por favor, debe capturar el C.P. el negocio.","Atención")
End If
Else
MsgboxAsync("Por favor, debe capturar la colonia el negocio.","Atención")
End If
Else
MsgboxAsync("Por favor, debe capturar el telefono.","Atención")
End If
Else
' Mensaje de advertencia si ET_Atiende.Text está vacío
MsgboxAsync("Por favor, debe capturar al encargado que atiende el negocio.","Atención")
End If
Else
MsgboxAsync("Por favor captura el giro del cliente","Atención")
End If
Else
MsgboxAsync("Por favor revisa que tengas señal GPS","Atención")
End If
Else Else
DateTime.DateFormat = "MM/dd/yyyy" MsgboxAsync("Por favor captura la dirección del cliente","Atención")
DateTime.Timeformat = "HHmmss"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
Log($" //////////// Date: ${sDate} - Time: ${sTime} ////////////////"$)
'Aqui creamos manualmete la hora con el separador de los 2 puntos porque en algunas versiones de android no respeta el formato "Timeformat = 'HH:mm:ss'"
Private hora As String = sTime.SubString2(0,2)
Private mins As String = sTime.SubString2(2,4)
Private segs As String = sTime.SubString(4)
sTime = hora&":"&mins&":"&segs
Log("////////////// sTime: "&sTime&" ////////////////")
c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
c.Position=0
no_ruta= c.GetString("CAT_CL_RUTA")
no_cliente= "N" & sTime & no_ruta
Log("++ ++ no_cliente = "&no_cliente)
c.Close
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (no_cliente))
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CLIENTE_NUEVO(CN_ID_CLIENTE, CN_NOMBRE) VALUES (?,?)", Array As Object(no_cliente, E_NOMBRE.Text))
B4XPages.ShowPage("Cliente")
End If End If
' Else
' ToastMessageShow("El punto está FUERA del polígono", True)
' End If
' End If
End Sub End Sub
Private Sub p_nuevoCliente_Click Private Sub p_nuevoCliente_Click
End Sub
'Private Sub b_foto_inci_Click
' camEx2.TakePicture
' p_camara.Visible = False
'' StopCamera2
'End Sub
'
'Private Sub InitializeCamera2
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
' If Result Then
' camEx2.Initialize(p_cam, frontCamera, Me, "Camera1")
' frontCamera = camEx2.Front
' Log("inicializamos Camara")
' Else
' ToastMessageShow("Sin permisos de camara!!!", True)
' End If
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
' If Result Then
' Log("con permisos para escritura")
' Else
' ToastMessageShow("Sin permisos de escritura!!!", True)
' End If
'
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_EXTERNAL_STORAGE)
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
' If Result Then
' Log("con permisos para escritura")
' Else
' ToastMessageShow("Sin permisos de lectura!!!", True)
' End If
'End Sub
'
'Sub Camera1_Ready (Success As Boolean)
' Log("Camara ready")
' If Success Then
' camEx2.SetJpegQuality(90)
' camEx2.SetContinuousAutoFocus
' camEx2.CommitParameters
' camEx2.StartPreview
' Log(camEx2.GetPreviewSize)
' Else
' ToastMessageShow("Cannot open camera.", True)
' Log("Cannot open camera")
' End If
'End Sub
'
'Sub Camera1_PictureTaken (Data()As Byte)
' Log("tome foto")
' Dim filename As String = fototomada
' Dim Dirp As String = File.DirInternal
' Dim Dir As String
' Dim Dir2 As String
' Try
' File.MakeDir(Dirp,"/promotoriakmts")
' Dir = "/promotoriakmts"
' Log("creado en promotoria " & Dirp & Dir)
' Catch
' Dir = ""
' Log("creado en raiz")
' End Try
'
' Try
' File.MakeDir(Dirp & Dir,"/reduccion")
' Dir2 = "/reduccion"
' Log("creado en promotoria " & Dirp & Dir & Dir2)
' Catch
' Dir = ""
' Log("creado en raiz")
' End Try
'
' camEx2.SavePictureToFile(Data, Dirp&Dir, filename)
' camEx2.StartPreview 'restart preview
' ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True)
' Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename)
' p_camara.Visible = False
' StopCamera2
'
'End Sub
'
'Private Sub StopCamera2
'' Capturing = False
' If camEx2.IsInitialized Then
' camEx2.Release
' End If
'End Sub
'
'
'Private Sub B_FOTO_Click
' DateTime.DateFormat="ddMMyyyyHHmmss"
' InitializeCamera2
' Subs.panelVisible(p_camara, 0, 0)
' fototomada = DateTime.Now & "_cliente.jpg"
'End Sub
Private Sub cb_giro_SelectedIndexChanged (Index As Int)
giros = cb_giro.SelectedItem
End Sub
Private Sub et_cp_TextChanged (Old As String, New As String)
If New.Length > 5 Then
et_cp.Text = Old
Else If New.Length > 1 And New.Length <= 5 Then
If New.Contains(Chr(10)) Or New.Contains(Chr(13)) Or New.Contains(Chr(34)) Then
et_cp.Text = Old
End If
End If
End Sub
Private Sub et_telefono_TextChanged (Old As String, New As String)
If New.Length > 10 Then
et_telefono.Text = Old
Else If New.Length > 1 And New.Length <= 10 Then
If New.Contains(Chr(10)) Or New.Contains(Chr(13)) Or New.Contains(Chr(34)) Then
et_telefono.Text = Old
End If
End If
End Sub
Private Sub b_clienteNuevo_Click
B4XPages.ShowPage("Principal")
p_transparenteCN.Visible = False
End Sub
Private Sub p_transparenteCN_Click
End Sub End Sub

View File

@@ -218,6 +218,12 @@ Sub Class_Globals
Private b_muestraPendientes As Button Private b_muestraPendientes As Button
' Dim p_conexion As Panel ' Dim p_conexion As Panel
Dim l_conexion As Label Dim l_conexion As Label
Private lv_prod_Prin As ListView
Private p_prod As Panel
Private b_regreso As Button
Private b_productos As Button
Private B_PROM As Button
Private B_PROD As Button
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -309,6 +315,8 @@ Private Sub B4XPage_Created (Root1 As B4XView)
p_muestraPendientes.Left = Root.Width - p_muestraPendientes.Width - 5dip p_muestraPendientes.Left = Root.Width - p_muestraPendientes.Width - 5dip
' p_conexion.Top = 1 : p_conexion.left = Root.width - p_conexion.width ' p_conexion.Top = 1 : p_conexion.left = Root.width - p_conexion.width
l_conexion.Top = 0 : l_conexion.left = Root.width - l_conexion.width -2 l_conexion.Top = 0 : l_conexion.left = Root.width - l_conexion.width -2
p_prod.Left = 0 : p_prod.Top = 0
p_mandaInfo.Top = 0 : p_mandaInfo.left = 0
End Sub End Sub
Sub chkIfTableExists(db As SQL, table As String) As Boolean 'ignore Sub chkIfTableExists(db As SQL, table As String) As Boolean 'ignore
@@ -432,6 +440,15 @@ Sub B4XPage_Appear
l_ruta.Text = f.GetString("CAT_CL_RUTA") l_ruta.Text = f.GetString("CAT_CL_RUTA")
f.Close f.Close
End If End If
If l_ruta.Text = "0" Then
b_productos.Visible = False
Else
b_productos.Visible = True
End If
If Cuantos = 0 Then If Cuantos = 0 Then
L_MONTOD.Text =0 L_MONTOD.Text =0
l_cuantosc.Text = 0 l_cuantosc.Text = 0
@@ -554,6 +571,7 @@ Sub B4XPage_Appear
End Sub End Sub
Sub Subir_Click Sub Subir_Click
checaPedido
CARGA = "SUBIR" CARGA = "SUBIR"
p_mandaInfo.Width = Root.Width p_mandaInfo.Width = Root.Width
p_mandaInfo.Height = Root.Height p_mandaInfo.Height = Root.Height
@@ -651,6 +669,9 @@ Sub Subir_Click
' Next ' Next
' End If ' End If
' c.Close ' c.Close
DateTime.TimeFormat = "HHmmss"
Private elFolio As String = DateTime.Time(DateTime.Now)
' PEDIDO_CLIENTE ' PEDIDO_CLIENTE
Dim PCNoArts As String Dim PCNoArts As String
@@ -662,10 +683,10 @@ Sub Subir_Click
c.Position = i c.Position = i
Dim cmd As DBCommand Dim cmd As DBCommand
cmd.Initialize cmd.Initialize
cmd.Name = "insert_pedidos_INTMEX" cmd.Name = "insert_pedidos5_INTMEX"
PCNoArts = c.GetString("PC_NOART") PCNoArts = c.GetString("PC_NOART")
PCMonto = c.GetString("PC_MONTO") PCMonto = c.GetString("PC_MONTO")
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, l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA")) 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, l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA"), $"${Application.VersionName}|${elFolio}"$)
reqManager.ExecuteCommand(cmd , "ins_pedidos") reqManager.ExecuteCommand(cmd , "ins_pedidos")
Log(">>>>>> INSERT PEDIDO_CLIENTE") Log(">>>>>> INSERT PEDIDO_CLIENTE")
Next Next
@@ -676,15 +697,16 @@ Sub Subir_Click
d.Close d.Close
' PEDIDO ' 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, PE_TICKET FROM 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, PE_TICKET FROM PEDIDO")
c = B4XPages.MainPage.skmt.ExecQuery($"Select (Select PC_NOART from pedido_cliente where pe_cliente = pc_cliente) As PCNoArts, (Select PC_MONTO from pedido_cliente where pe_cliente = pc_cliente) As PCMonto, * FROM PEDIDO"$)
d = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") d = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO")
If c.RowCount > 0 Then If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1 For i = 0 To c.RowCount - 1
c.Position = i c.Position = i
Dim cmd As DBCommand Dim cmd As DBCommand
cmd.Initialize cmd.Initialize
cmd.Name = "insert_pedido4_INTMEX" 'CON TOTALES INCLUIDOS cmd.Name = "insert_pedido5_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,c.GetString("PE_TICKET")) 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("PCNoArts"), c.GetString("PCMonto"), c.GetString("PE_TICKET"), elFolio)
reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}_${c.GetString("PE_PROID")}"$) 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}, ${c.GetString("PE_TICKET")}"$) ' 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}, ${c.GetString("PE_TICKET")}"$)
' cmd.Name = "insert_pedido_INTMEX" ' SIN TOTALES INCLUIDOS ' cmd.Name = "insert_pedido_INTMEX" ' SIN TOTALES INCLUIDOS
@@ -728,6 +750,34 @@ Sub Subir_Click
Next Next
End If End If
c.Close c.Close
c=Starter.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, CN_SOLICITA, CN_COLONIA, CN_TELEFONO, CN_CP FROM CLIENTES_NUEVOS")
If c.RowCount>0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim dia As Int = DateTime.GetDayOfWeek(DateTime.Now)
If dia = 2 Then
Dim dialetra As String = "LUNES"
Else If dia = 3 Then
Dim dialetra As String = "MARTES"
Else If dia = 4 Then
Dim dialetra As String = "MIERCOLES"
Else If dia = 5 Then
Dim dialetra As String = "JUEVES"
Else If dia = 6 Then
Dim dialetra As String = "VIERNES"
Else If dia = 7 Then
Dim dialetra As String = "SABADO"
End If
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_cliente_INTMEX2"
Log(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")&" ,"&ALMACEN& c.GetString("CN_RUTA")&" ,"& "En espera"&c.GetString("CN_GIRO")&" ,"&dialetra& c.GetString("CN_SOLICITA")&" ,"& c.GetString("CN_COLONIA")&" ,"& c.GetString("CN_TELEFONO"))
cmd.Parameters = Array As Object(c.GetString("CN_ID"), c.GetString("CN_NOMBRE"), c.GetString("CN_RUTA"),ALMACEN, c.GetString("CN_LAT"), c.GetString("CN_LON"), "En espera", c.GetString("CN_FECHA"), c.GetString("CN_USER"), c.GetString("CN_DIRECCION"), c.GetString("CN_GIRO"),dialetra, c.GetString("CN_TELEFONO"), c.GetString("CN_SOLICITA"), c.GetString("CN_COLONIA"), c.GetString("CN_CP"))
reqManager.ExecuteCommand(cmd , "inst_clientesn")
Next
End If
c.Close
' LO DEL LIKE ' LO DEL LIKE
c=B4XPages.MainPage.skmt.ExecQuery("Select HFCLIENTE, HFALIAS,HFRUTA,HFALMACEN from HIST_FACE") c=B4XPages.MainPage.skmt.ExecQuery("Select HFCLIENTE, HFALIAS,HFRUTA,HFALMACEN from HIST_FACE")
@@ -823,7 +873,7 @@ Sub cargar_Click
Subs.panelVisible(P1, 0, 0) Subs.panelVisible(P1, 0, 0)
Subs.centraPanel(P1, Root.Width) Subs.centraPanel(P1, Root.Width)
Subs.centraPanelV(P1, Root.Height) Subs.centraPanelV(P1, Root.Height)
' trabajar.Visible = False ' trabajar.Visible = False
NUEVO.Visible =False NUEVO.Visible =False
BUSCA.Visible=False BUSCA.Visible=False
connecta.Visible=False connecta.Visible=False
@@ -888,7 +938,7 @@ Sub cargar_Click
sTime=DateTime.Time(DateTime.Now) sTime=DateTime.Time(DateTime.Now)
Dim P As PhoneId Dim P As PhoneId
' imei = P.GetDeviceId ' imei = P.GetDeviceId
imei = "xxxx" imei = "xxxx"
cmd.Initialize cmd.Initialize
cmd.Name ="insert_drop_INTMEX_3" cmd.Name ="insert_drop_INTMEX_3"
@@ -905,10 +955,10 @@ Sub cargar_Click
cmd.Parameters = Array As Object(ALMACEN,e_ruta.Text) cmd.Parameters = Array As Object(ALMACEN,e_ruta.Text)
reqManager.ExecuteQuery(cmd , 0, "gunaprod2") reqManager.ExecuteQuery(cmd , 0, "gunaprod2")
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "select_resum_apk_INTMEX" ''' va el nombre de archivo de config ' cmd.Name = "select_resum_apk_INTMEX" ''' va el nombre de archivo de config
' cmd.Parameters = Array As Object(ALMACEN) ' cmd.Parameters = Array As Object(ALMACEN)
' reqManager.ExecuteQuery(cmd , 0, "resum_apk") ''' donde regresa la info ver job_done ' reqManager.ExecuteQuery(cmd , 0, "resum_apk") ''' donde regresa la info ver job_done
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_paquetes_INTMEX4" cmd.Name = "select_cat_paquetes_INTMEX4"
@@ -927,18 +977,30 @@ Sub cargar_Click
reqManager.ExecuteQuery(cmd , 0, "detallepaq") reqManager.ExecuteQuery(cmd , 0, "detallepaq")
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_INTMEX" cmd.Name = "select_cat_clientes3_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text,e_ruta.text, ALMACEN,e_ruta.text,e_ruta.text)
Log("select_cat_clientes3_INTMEX: " & e_ruta.text & "|" & ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "kmt_datos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
cmd.Initialize
cmd.Name = "select_cn_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "cn")
'' cambiar
cmd.Initialize
cmd.Name = "select_cat_GIRO_INTMEX"
reqManager.ExecuteQuery(cmd , 0, "giro")
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_todos_INTMEX" cmd.Name = "select_cat_clientes_todos_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "kmt_datos_todos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos_todos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_hist_datos_INTMEX_2" cmd.Name = "select_hist_datos_INTMEX_3"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
Log($"===> ${e_ruta.text}, ${ALMACEN}"$)
reqManager.ExecuteQuery(cmd , 0, "hist_datos") reqManager.ExecuteQuery(cmd , 0, "hist_datos")
cmd.Initialize cmd.Initialize
@@ -967,41 +1029,43 @@ Sub cargar_Click
cmd.Name = "select_tipoRuta_Intmex" cmd.Name = "select_tipoRuta_Intmex"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "tipoRuta") reqManager.ExecuteQuery(cmd , 0, "tipoRuta")
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "select_HIST_MARCAS_CUOTAS_INTMEX" ' cmd.Name = "select_HIST_MARCAS_CUOTAS_INTMEX"
' cmd.Parameters = Array As Object( ALMACEN, e_ruta.text) ' cmd.Parameters = Array As Object( ALMACEN, e_ruta.text)
' reqManager.ExecuteQuery(cmd , 0, "HIST_MARCAS_CUOTAS") ' reqManager.ExecuteQuery(cmd , 0, "HIST_MARCAS_CUOTAS")
cmd.Name = "select_geocerca_intmex"
cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
Log($"traeGeocerca: almacen: ${ALMACEN}, ruta: ${e_ruta.text}"$)
reqManager.ExecuteQuery(cmd , 0, "traeGeocerca")
If E_RUTA2.text <> "" Then If E_RUTA2.text <> "" Then
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO RUTA_SUPLENCIA(RS_RUTA) VALUES(?)",Array As String(E_RUTA2.Text)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO RUTA_SUPLENCIA(RS_RUTA) VALUES(?)",Array As String(E_RUTA2.Text))
E_RUTA2.Visible = False E_RUTA2.Visible = False
ImageView9.Visible = False ImageView9.Visible = False
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_INTMEX" cmd.Name = "select_cat_clientes3_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text,E_RUTA2.text, ALMACEN,E_RUTA2.text,E_RUTA2.text)
reqManager.ExecuteQuery(cmd , 0, "kmt_datos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_cat_clientes_todos_INTMEX" cmd.Name = "select_cat_clientes_todos_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "kmt_datos_todos") reqManager.ExecuteQuery(cmd , 0, "kmt_datos_todos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_hist_datos_INTMEX" cmd.Name = "select_hist_datos_INTMEX_3"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "hist_datos") reqManager.ExecuteQuery(cmd , 0, "hist_datos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_hist_promos_INTMEX" cmd.Name = "select_hist_promos_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "hist_promos") reqManager.ExecuteQuery(cmd , 0, "hist_promos")
cmd.Initialize cmd.Initialize
cmd.Name = "select_hist_cliente_promos_INTMEX" cmd.Name = "select_hist_cliente_promos_INTMEX"
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
@@ -1012,17 +1076,17 @@ Sub cargar_Click
cmd.Name = "select_promo_comp_INTMEX" cmd.Name = "select_promo_comp_INTMEX"
cmd.Parameters = Array As Object(ALMACEN) cmd.Parameters = Array As Object(ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos") reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos")
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "select_verificacion_INTMEX" ' cmd.Name = "select_verificacion_INTMEX"
' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) ' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
' reqManager.ExecuteQuery(cmd , 0, "cat_verificacion") ' reqManager.ExecuteQuery(cmd , 0, "cat_verificacion")
cmd.Initialize cmd.Initialize
cmd.Name = "select_fecha" cmd.Name = "select_fecha"
' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) ' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
reqManager.ExecuteQuery(cmd , 0, "fecha") reqManager.ExecuteQuery(cmd , 0, "fecha")
cmd.Initialize cmd.Initialize
cmd.Name = "select_folio_INTMEX" cmd.Name = "select_folio_INTMEX"
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
@@ -1038,19 +1102,24 @@ Sub cargar_Click
cmd.Parameters = Array As Object( ALMACEN, e_ruta.text) cmd.Parameters = Array As Object( ALMACEN, e_ruta.text)
reqManager.ExecuteQuery(cmd , 0, "marcas_rutas") reqManager.ExecuteQuery(cmd , 0, "marcas_rutas")
' cmd.Initialize cmd.Initialize
' cmd.Name = "select_CUEST_INTMEX" cmd.Name = "select_marcas_Intmex"
' cmd.Parameters = Array As Object(ALMACEN) cmd.Parameters = Array As Object(usuario)
' reqManager.ExecuteQuery(cmd , 0, "CUESTIONARIO") reqManager.ExecuteQuery(cmd , 0, "marcas")
' cmd.Initialize ' cmd.Initialize
' cmd.Name = "select_HIST_CUOTAS_INTMEX" ' cmd.Name = "select_CUEST_INTMEX"
' cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) ' cmd.Parameters = Array As Object(ALMACEN)
' reqManager.ExecuteQuery(cmd , 0, "CUOTAS") ' reqManager.ExecuteQuery(cmd , 0, "CUESTIONARIO")
'
' cmd.Initialize
' cmd.Name = "select_HIST_CUOTAS_INTMEX"
' cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
' reqManager.ExecuteQuery(cmd , 0, "CUOTAS")
cmd.Initialize cmd.Initialize
cmd.Name = "select_comis_cedex_INTMEX" cmd.Name = "select_comis_cedex_INTMEX"
cmd.Parameters = Array As Object( ALMACEN, e_ruta.text ) cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
reqManager.ExecuteQuery(cmd , 0, "COMISIONES") reqManager.ExecuteQuery(cmd , 0, "COMISIONES")
cmd.Initialize cmd.Initialize
@@ -1079,13 +1148,10 @@ Sub JobDone(Job As HttpJob)
LogColor(">>>>>> " & reqManager.reqsList.Size & " - " & reqManager.reqsList, Colors.Blue) LogColor(">>>>>> " & reqManager.reqsList.Size & " - " & reqManager.reqsList, Colors.Blue)
End If End If
If Job.Success = False Then If Job.Success = False Then
Log("ERROR") LogColor("############################################", Colors.red)
' LogColor("Error: " & reqManager.HandleJob(Job).tag & " : " & Job.ErrorMessage, Colors.red) LogColor("###### JobError: " & Job.Tag & CRLF & Job.ErrorMessage, Colors.red)
Log("ex") LogColor("############################################", Colors.red)
Log(2)
' Job.Release
Else 'If Job Success then ... Else 'If Job Success then ...
Log(3)
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.RGB(0,160,0)) 'Mod por CHV - 211027 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. 'Verificamos que el usuario guardado en BD sea VALIDO.
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
@@ -1189,9 +1255,40 @@ Sub JobDone(Job As HttpJob)
B4XPage_Appear B4XPage_Appear
img2.Visible=False img2.Visible=False
EJECUTANDO=0 EJECUTANDO=0
End If
End If
End If
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "giro" Then 'query tag
For Each records() As Object In RESULT.Rows
Dim giro As String = records(RESULT.Columns.Get("CAT_GR_DESC"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GIRO(GIRO) VALUES (?)", Array As Object (giro))
Next
If PB2.Progress = 0 Then
PB2.Progress = 30
S_CP.Text = "CARGANDO"
ELSE If PB2.Progress = 30 Then
PB2.Progress = 60
ELSE IF PB2.Progress = 60 Then
PB2.Progress = 100
S_CP.Text = "LISTO"
End If
Listo3 =1
If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
B4XPage_Appear
img2.Visible=False
EJECUTANDO=0
Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then
B4XPage_Appear
img2.Visible=False
EJECUTANDO=0
End If
End If End If
End If End If
End If
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim resultado As DBResult = reqManager.HandleJob(Job) Dim resultado As DBResult = reqManager.HandleJob(Job)
@@ -1354,7 +1451,7 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
End If End If
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "hist_cliente_promos" Then 'query tag If RESULT.Tag = "hist_cliente_promos" Then 'query tag
@@ -1368,6 +1465,26 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
' If Job.JobName = "DBRequest" Then
' Dim RESULT As DBResult = reqManager.HandleJob(Job)
' If RESULT.Tag.As(String).Contains("pedido_completo") Then 'query tag
' Subs.logJobDoneResultados(RESULT)
' For Each records() As Object In resultado.Rows
' If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then
' Private pars() As String = Regex.Split("_", RESULT.tag)
' B4XPages.MainPage.skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 1, PE_GUARDADO = 1 where PE_CLIENTE = '${pars(2)}'"$)
' Log($"update PEDIDO set PE_ENVIO_OK = 1, PE_GUARDADO = 1 where PE_CLIENTE = '${pars(2)}'"$)
' B4XPages.MainPage.skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 1, PC_GUARDADO = 1 where PC_CLIENTE = '${pars(2)}'"$)
' Log($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 1, PC_GUARDADO = 1 where PC_CLIENTE = '${pars(2)}'"$)
'
' ($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 1 where PC_CLIENTE = '${pars(3)}'"$)
'
' End If
' Next
'' validador.iniciaValidacion
' End If
' End If
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "HIST_MARCAS_CUOTAS" Then 'query tag If RESULT.Tag = "HIST_MARCAS_CUOTAS" Then 'query tag
@@ -1402,27 +1519,47 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "cat_verificacion" Then 'query tag If RESULT.Tag = "cat_verificacion" Then 'query tag
For Each records() As Object In RESULT.Rows For Each records() As Object In RESULT.Rows
Dim CAT_VE_IDPROD As String = records(RESULT.Columns.Get("CAT_VE_IDPROD")) Dim CAT_VE_IDPROD As String = records(RESULT.Columns.Get("CAT_VE_IDPROD"))
Dim CAT_VE_NOMBRE As String = records(RESULT.Columns.Get("CAT_VE_NOMBRE")) Dim CAT_VE_NOMBRE As String = records(RESULT.Columns.Get("CAT_VE_NOMBRE"))
Dim CAT_VE_ORDEN As String = records(RESULT.Columns.Get("CAT_VE_ORDEN")) Dim CAT_VE_ORDEN As String = records(RESULT.Columns.Get("CAT_VE_ORDEN"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VERIFICACION(CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN) VALUES (?,?,?)", Array As Object (CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VERIFICACION(CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN) VALUES (?,?,?)", Array As Object (CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN))
Next Next
End If
End If End If
End If
If Job.JobName = "DBRequest" Then
If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job)
Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "cn" Then 'query tag
If RESULT.Tag = "marcas_rutas" Then 'query tag For Each records() As Object In RESULT.Rows
For Each records() As Object In RESULT.Rows Dim CAT_RU_CN As String = records(RESULT.Columns.Get("CAT_RU_CN"))
Dim HVD_MARCA As String = records(RESULT.Columns.Get("HVD_MARCA")) B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM CN")
Dim CLIENTES As String = records(RESULT.Columns.Get("CLIENTES")) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CN(ACTIVO) VALUES (?)", Array As Object (CAT_RU_CN))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO MARCAS_RUTAS(HVD_MARCA, CLIENTES) VALUES (?,?)", Array As Object (HVD_MARCA, CLIENTES)) Next
Next End If
End If End If
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "marcas_rutas" Then 'query tag
For Each records() As Object In RESULT.Rows
Dim HVD_MARCA As String = records(RESULT.Columns.Get("HVD_MARCA"))
Dim CLIENTES As String = records(RESULT.Columns.Get("CLIENTES"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO MARCAS_RUTAS(HVD_MARCA, CLIENTES) VALUES (?,?)", Array As Object (HVD_MARCA, CLIENTES))
Next
End If
' Marcas
If RESULT.Tag = "marcas" Then 'query tag
For Each records() As Object In RESULT.Rows
Dim MARCAS As String = records(RESULT.Columns.Get("MARCAS"))
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MARCAS"))
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MARCAS",MARCAS))
Next
End If
End If End If
'CUOTAS 'CUOTAS
@@ -1572,13 +1709,14 @@ Sub JobDone(Job As HttpJob)
Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN"))
Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD"))
Dim CAT_GP_VARREQ3 As Int = records(RESULT.Columns.Get("CAT_GP_VARREQ3")) Dim CAT_GP_VARREQ3 As Int = records(RESULT.Columns.Get("CAT_GP_VARREQ3"))
Dim MARCA As String = records(RESULT.Columns.Get("MARCA"))
CAT_GP_TIPOPROD = "5" CAT_GP_TIPOPROD = "5"
If CAT_GP_ID = "PAQUNI003" Then If CAT_GP_ID = "PAQUNI003" Then
CAT_GP_ALMACEN = 60 CAT_GP_ALMACEN = 60
End If End If
' Log("XXXXXXX gunaprodp XXXXXXXXX " & CAT_GP_ID & "|" & CAT_GP_IMP1 & "|" & CAT_GP_IMP2) ' Log("XXXXXXX gunaprodp XXXXXXXXX " & CAT_GP_ID & "|" & CAT_GP_IMP1 & "|" & CAT_GP_IMP2)
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,MARCA) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD,MARCA))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3,MARCA) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3,MARCA))
Next Next
If PB2.Progress = 0 Then If PB2.Progress = 0 Then
PB2.Progress = 30 PB2.Progress = 30
@@ -1698,7 +1836,9 @@ Sub JobDone(Job As HttpJob)
Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE")) Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE"))
Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT")) Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT"))
Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT")) Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT) VALUES (?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT)) Dim HVD_USUARIO As String = records(RESULT.Columns.Get("USUARIO"))
Log(HVD_USUARIO)
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_USUARIO) VALUES (?,?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_USUARIO))
Next Next
Listo3 =1 Listo3 =1
If PB1.Progress = 0 Then If PB1.Progress = 0 Then
@@ -1888,11 +2028,11 @@ Sub JobDone(Job As HttpJob)
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "hist_avance" Then 'query tag If RESULT.Tag = "hist_avance" Then 'query tag
For Each records() As Object In RESULT.Rows For Each records() As Object In RESULT.Rows
Dim marca As String = records(RESULT.Columns.Get("HIST_AM_MARCA")) Dim marca2 As String = records(RESULT.Columns.Get("HIST_AM_MARCA"))
Dim avance As String = records(RESULT.Columns.Get("HIST_AM_AVANCE")) Dim avance As String = records(RESULT.Columns.Get("HIST_AM_AVANCE"))
Dim objetivo As String = records(RESULT.Columns.Get("HIST_AM_OBJETIVO")) Dim objetivo As String = records(RESULT.Columns.Get("HIST_AM_OBJETIVO"))
Dim porcentaje1 As String = records(RESULT.Columns.Get("HIST_AM_PORCENTAJE")) Dim porcentaje1 As String = records(RESULT.Columns.Get("HIST_AM_PORCENTAJE"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_AVANCE(HA_MARCA, HA_AVANCE, HA_OBJETIVO, HA_PORCENTAJE) VALUES (?,?,?,?)", Array As Object (marca, avance, objetivo, porcentaje1)) B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_AVANCE(HA_MARCA, HA_AVANCE, HA_OBJETIVO, HA_PORCENTAJE) VALUES (?,?,?,?)", Array As Object (marca2, avance, objetivo, porcentaje1))
Next Next
End If End If
End If End If
@@ -1934,29 +2074,39 @@ Sub JobDone(Job As HttpJob)
End If End If
End If End If
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "ins_cuestionario" Then 'query tag If RESULT.Tag = "ins_cuestionario" Then 'query tag
Subs.logJobDoneResultados(RESULT) Subs.logJobDoneResultados(RESULT)
End If End If
Dim RESULT As DBResult = reqManager.HandleJob(Job) Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "test" Then 'query tag If RESULT.Tag = "test" Then 'query tag
Log(">>>>>>>>>>>>> TEST") Log(">>>>>>>>>>>>> TEST")
Subs.logJobDoneResultados(RESULT) Subs.logJobDoneResultados(RESULT)
End If End If
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "clientes_cuestionario" Then
Log("Entramos a clientes_cuestionario - Regs:" & RESULT.Rows.Size)
Starter.skmt.ExecNonQuery("delete from HIST_CUESTIONARIO")
For Each records() As Object In RESULT.Rows
Dim idCliente As String = records(RESULT.Columns.Get("HC_CLIENTE"))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CUESTIONARIO(HC_CLIENTE) VALUES (?)", Array As Object (idCliente))
Next
End If
If RESULT.Tag = "traeGeocerca" Then
For Each records() As Object In RESULT.Rows
Dim geocerca As String = records(RESULT.Columns.Get("CAT_RU_GEOCERCA"))
Log("-- geo: " & geocerca)
B4XPages.MainPage.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("GEOCERCA"))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("GEOCERCA", geocerca))
Next
End If
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag = "clientes_cuestionario" Then
Log("Entramos a clientes_cuestionario - Regs:" & RESULT.Rows.Size)
Starter.skmt.ExecNonQuery("delete from HIST_CUESTIONARIO")
For Each records() As Object In RESULT.Rows
Dim idCliente As String = records(RESULT.Columns.Get("HC_CLIENTE"))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CUESTIONARIO(HC_CLIENTE) VALUES (?)", Array As Object (idCliente))
Next
End If End If
End If End If
End If
Job.Release Job.Release
End Sub End Sub
@@ -2071,6 +2221,7 @@ Sub e_ruta_EnterPressed
RES = Msgbox2("Seguro que desea hacer el cierre todos los datos se borraran?","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore RES = Msgbox2("Seguro que desea hacer el cierre todos los datos se borraran?","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If RES = DialogResponse.POSITIVE Then If RES = DialogResponse.POSITIVE Then
e_ruta.Text = "" e_ruta.Text = ""
Starter.skmt.ExecNonQuery("delete from CAT_GIRO")
B4XPages.MainPage.skmt.ExecNonQuery("delete from CLIENTE_NUEVO") B4XPages.MainPage.skmt.ExecNonQuery("delete from CLIENTE_NUEVO")
B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente") B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente")
B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido") B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido")
@@ -2217,6 +2368,7 @@ Sub B_OK_PAS_Click
Resumen.Visible= True Resumen.Visible= True
img2.Visible=False img2.Visible=False
Subs.panelVisible(p_principal, 0, 0) Subs.panelVisible(p_principal, 0, 0)
checaPedido
Else if CARGA = "CARGAR" And (S_CP.Text <> "LISTO" Or S_CC.Text <> "LISTO" Or S_CH.Text <> "LISTO") Then Else if CARGA = "CARGAR" And (S_CP.Text <> "LISTO" Or S_CC.Text <> "LISTO" Or S_CH.Text <> "LISTO") Then
RES = Msgbox2("Seguro que desea abortar el proceso","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore RES = Msgbox2("Seguro que desea abortar el proceso","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If RES = DialogResponse.POSITIVE Then If RES = DialogResponse.POSITIVE Then
@@ -2473,7 +2625,18 @@ Sub resdia_Click
End Sub End Sub
Sub hacer_ped_Click Sub hacer_ped_Click
B4XPages.ShowPage("Clientes") c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS"))
c.Position = 0
If c.RowCount > 0 Then
Private MARCASQ As String = c.GetString("CAT_VA_VALOR")
c.Close
Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &", 'PROMOS')" )
Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF IN ('PROMOS') AND MARCA NOT IN (" & MARCASQ &")" )
' Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_ID NOT IN (SELECT CAT_DP_ID FROM CAT_DETALLES_PAQ WHERE CAT_DP_IDPROD NOT IN (SELECT CAT_GP_ID FROM CAT_GUNAPROD))")
B4XPages.ShowPage("Clientes")
Else
If Starter.marcaCel <> "LGE" Then ToastMessageShow("No hay marcas en la base de datos ... ya se cargo ruta??", True)
End If
End Sub End Sub
Sub nvo_cliente_Click Sub nvo_cliente_Click
@@ -2489,11 +2652,24 @@ Sub GPS_LocationChanged (Location1 As Location)
End Sub End Sub
Sub Btn_Ubicar_Click Sub Btn_Ubicar_Click
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION) c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS"))
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) c.Position = 0
If Result Then If c.RowCount > 0 Then
StartActivity(MAPA_RUTAS) Private MARCASQ As String = c.GetString("CAT_VA_VALOR")
c.Close
Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &", 'PROMOS')" )
Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF IN ('PROMOS') AND MARCA NOT IN (" & MARCASQ &")" )
' Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_ID NOT IN (SELECT CAT_DP_ID FROM CAT_DETALLES_PAQ WHERE CAT_DP_IDPROD NOT IN (SELECT CAT_GP_ID FROM CAT_GUNAPROD))")
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
If Result Then
StartActivity(MAPA_RUTAS)
End If
Else
If Starter.marcaCel <> "LGE" Then ToastMessageShow("No hay marcas en la base de datos ... ya se cargo ruta??", True)
End If End If
End Sub End Sub
'''''''''''''''''''''''''''''''''''' VALIDAR CARACTERES '''''''''''''''''''''''''''''''''''' VALIDAR CARACTERES
@@ -2711,4 +2887,263 @@ Sub val_Terminado(msg As String)
b_muestraPendientes.Text = msg b_muestraPendientes.Text = msg
Sleep (1000) Sleep (1000)
p_muestraPendientes.Visible = False p_muestraPendientes.Visible = False
End Sub End Sub
Sub checaPedido
Private c As Cursor = Starter.skmt.ExecQuery("SELECT PC_CLIENTE FROM PEDIDO_CLIENTE")
If c.RowCount > 0 Then
Starter.skmt.ExecNonQuery("Update kmt_info set gestion = 2 WHERE CAT_CL_CODIGO IN (SELECT PC_CLIENTE FROM PEDIDO_CLIENTE)")
End If
Private c As Cursor = Starter.skmt.ExecQuery("SELECT NV_CLIENTE FROM NOVENTA")
If c.RowCount > 0 Then
Starter.skmt.ExecNonQuery("Update kmt_info set gestion = 3 WHERE CAT_CL_CODIGO IN (SELECT NV_CLIENTE FROM NOVENTA)")
End If
Private coord As Cursor = Starter.skmt.ExecQuery("SELECT * FROM TELEFONO")
If coord.RowCount > 0 Then
For cor = 0 To coord.RowCount -1
coord.Position = cor
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_TELEFONO = ? where CAT_CL_CODIGO = ?", Array As Object(coord.GetString("TEL"),coord.GetString("CLIENTE")))
Next
End If
End Sub
Private Sub b_productos_Click
Dim label1 As Label
label1 = lv_prod_Prin.SingleLineLayout.Label
label1.TextSize = 14
p_prod.Width = Root.Width
p_prod.Height = Root.Height
b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2
b_regreso.Top = p_prod.Height - b_regreso.Height
p_prod.Visible = True
p_prod.BringToFront
' Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD order by CAT_GP_NOMBRE asc")
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD WHERE CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE asc")
lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.Black
lv_prod_Prin.Clear
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim itemText As String
itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Precio: ${(c.GetDouble("HVD_RECHAZOCANT"))}"$
lv_prod_Prin.AddSingleLine(itemText)
Next
Else
lv_prod_Prin.AddSingleLine("No hay datos disponibles.")
End If
c.Close
End Sub
Private Sub b_regreso_Click
p_prod.Visible = False
End Sub
Private Sub p_prod_Click
End Sub
Private Sub B_PROD_Click
Dim label1 As Label
label1 = lv_prod_Prin.SingleLineLayout.Label
label1.TextSize = 14
p_prod.Width = Root.Width
p_prod.Height = Root.Height
b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2
b_regreso.Top = p_prod.Height - b_regreso.Height
p_prod.Visible = True
p_prod.BringToFront
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD WHERE CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE asc")
lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.Black
lv_prod_Prin.Clear
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim itemText As String
itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Precio: ${(c.GetDouble("HVD_RECHAZOCANT"))}"$
lv_prod_Prin.AddSingleLine(itemText)
Next
Else
lv_prod_Prin.AddSingleLine("No hay datos disponibles.")
End If
c.Close
End Sub
Private Sub B_PROM_Click
Dim label1 As Label
label1 = lv_prod_Prin.SingleLineLayout.Label
label1.TextSize = 14
p_prod.Width = Root.Width
p_prod.Height = Root.Height
b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2
b_regreso.Top = p_prod.Height - b_regreso.Height
p_prod.Visible = True
p_prod.BringToFront
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_GP_NOMBRE AS HVD_PRONOMBRE, IFNULL(CAT_GP_PRECIO, 0) AS HVD_RECHAZOCANT from CAT_GUNAPROD WHERE CAT_GP_CLASIF = 'PROMOS' order by CAT_GP_NOMBRE asc")
lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.Black
lv_prod_Prin.Clear
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim itemText As String
itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Precio: ${(c.GetDouble("HVD_RECHAZOCANT"))}"$
lv_prod_Prin.AddSingleLine(itemText)
Next
Else
lv_prod_Prin.AddSingleLine("No hay datos disponibles.")
End If
c.Close
End Sub
Private Sub l_conexion_LongClick
' enviaPedidoBatch_PRUEBA("todos")
End Sub
' 1. Recopila encabezados y detalles de pedidos locales (todos o solo los pendientes).
' 2. Genera un ID único (Arch) para vincular exactamente cada venta con sus productos.
' 3. Empaqueta todo en una lista de comandos (Batch) para enviarlo al servidor en una sola transacción.
Sub enviaPedidoBatch_PRUEBA(filtro As String)
' Creamos una lista llamada BatchCommands. Aquí vamos a guardar todas las instrucciones
' de base de datos que queremos mandar al servidor de un solo golpe (en lote o "batch").
Dim BatchCommands As List
BatchCommands.Initialize
LogColor("##############################################", Colors.Red)
LogColor($"### enviaPedidoBatch(${filtro})"$, Colors.red)
LogColor("##############################################", Colors.Red)
DateTime.TimeFormat = "HHmmss"
Private elFolio As String = DateTime.Time(DateTime.Now)
' Preparamos una variable para filtrar la consulta a la base de datos.
' Si el filtro no dice "Todos", armamos la condición para traer solo los pedidos que no se han enviado (PC_ENVIO_OK = 0).
Private condicion As String = ""
If filtro.ToUpperCase <> "TODOS" Then condicion = "where PC_ENVIO_OK = 0"
' Ejecutamos una consulta (Query) a la base de datos local de SQLite (skmt).
' Buscamos los ENCABEZADOS de los pedidos en la tabla PEDIDO_CLIENTE usando la condición que armamos arriba.
' El resultado se guarda en un Cursor llamado 'cx', que es como una tabla en memoria por la que podemos navegar.
Private cx As Cursor = Starter.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_ENVIO_OK FROM PEDIDO_CLIENTE ${condicion}"$)
Log($"SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_ENVIO_OK FROM PEDIDO_CLIENTE ${condicion}"$)
Log("pedido_cliente: " & cx.RowCount)
' Reiniciamos la variable de condición para usarla ahora en el DETALLE de los pedidos.
Private condicion As String = ""
If filtro.ToUpperCase <> "TODOS" Then condicion = "where PE_ENVIO_OK = 0"
' ' Verificamos si en la tabla de envíos históricos (HIST_ENVIOS) hay registros del tipo "ABORDO" (Ventas en ruta directa).
' c = Starter.skmt.ExecQuery2("SELECT COUNT(*) as CANTIDAD FROM HIST_ENVIOS WHERE HE_TIPO = ?",Array As String("ABORDO") )
' c.Position = 0
'
' ' Si encontramos que sí hay ventas a bordo...
' If c.GetString("CANTIDAD") > 0 Then
' Log($"pe_cedis_0"$)
' ' Actualizamos la tabla PEDIDO para que los artículos del cliente "0" (que suele ser el inventario a bordo)
' ' y que no tengan un número de folio, se marquen con el almacén/cedis "RECARGA".
' Starter.skmt.ExecNonQuery2("update PEDIDO set PE_CEDIS = ? where PE_CLIENTE =? AND PE_FOLIO IS NULL ", Array As Object("RECARGA", "0"))
' End If
' Hacemos una actualización rápida a los registros de PEDIDO que no tengan folio (folio 0 o 1).
' Les asignamos temporalmente el 'rowid' (el número de fila interno de SQLite) como folio para identificarlos.
Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = rowid where PE_FOLIO = 0 or PE_FOLIO = 1")
' Revisamos si nuestro cursor 'cx' (los encabezados de pedido) trajo algún resultado.
If cx.RowCount > 0 Then ' Si hay pedido entonces lo enviamos.
' Iniciamos un bucle (For) para recorrer cada uno de los encabezados de pedido encontrados.
For j = 0 To cx.RowCount - 1
Log("===== ENVIAMOS PRODUCTOS DE PEDIDO =====")
' Movemos el cursor 'cx' a la posición 'j' actual del bucle.
cx.Position = j
' Generamos un identificador único (Arch) concatenando el almacén, la ruta, el cliente y la fecha/hora actual.
' Esto sirve para agrupar en el servidor el encabezado con sus respectivos detalles.
Dim Arch As String = Subs.traeAlmacen & "_" & Subs.traeRuta & "_" & cx.GetString("PC_CLIENTE") & "_" & DateTime.Now
' Preparamos un comando de base de datos (DBCommand) para mandar al servidor.
Dim cmdHeader As DBCommand
cmdHeader.Initialize
' Asignamos el nombre del procedimiento almacenado o query que está en el servidor (jRDC2).
cmdHeader.Name = "insert_pedidos_INTMEX_arch"
' Pasamos los parámetros leyendo los datos del cursor 'cx' (encabezado) y le pasamos el ID único 'Arch'.
cmdHeader.Parameters = Array As Object(cx.GetString("PC_CLIENTE"),cx.GetString("PC_FECHA"),cx.GetString("PC_USER"),cx.GetString("PC_NOART"),cx.GetString("PC_MONTO"),cx.GetString("PC_LON"),cx.GetString("PC_LAT"),ALMACEN,l_ruta.text,cx.GetString("PC_COSTO_SIN"), cx.GetString("PC_FACTURA"), $"${Application.VersionName}|${elFolio}"$, Arch)
Log($"${cx.GetString("PC_CLIENTE")},${cx.GetString("PC_FECHA")},${cx.GetString("PC_USER")},${cx.GetString("PC_NOART")},${cx.GetString("PC_MONTO")},${cx.GetString("PC_LON")},${cx.GetString("PC_LAT")},${ALMACEN},${l_ruta.text},${cx.GetString("PC_COSTO_SIN")}, ${cx.GetString("PC_FACTURA")}, ${Application.VersionName}|${elFolio}, ${Arch}"$)
' cmd.Name = "insert_pedidos5_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, l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA"), $"${Application.VersionName}|${elFolio}"$)
' Añadimos este comando a nuestra lista del lote (Batch).
BatchCommands.Add(cmdHeader)
' Ahora hacemos una consulta para buscar el DETALLE de este pedido (los productos individuales).
' Filtramos por la condición (si se envió o no) y lo amarramos al cliente actual del bucle (PC_CLIENTE).
Private cPed As Cursor = Starter.skmt.ExecQuery($"SELECT (Select PC_NOART from pedido_cliente where pe_cliente = pc_cliente) As PCNoArts, (Select PC_MONTO from pedido_cliente where pe_cliente = pc_cliente) As PCMonto, * FROM PEDIDO ${condicion} ${(IIf(condicion = "","where", "and"))} pe_cliente = '${cx.GetString("PC_CLIENTE")}' "$)
Log($"SELECT (Select PC_NOART from pedido_cliente where pe_cliente = pc_cliente) As PCNoArts, (Select PC_MONTO from pedido_cliente where pe_cliente = pc_cliente) As PCMonto, * FROM PEDIDO ${condicion} ${(IIf(condicion = "","where", "and"))} pe_cliente = '${cx.GetString("PC_CLIENTE")}' "$)
Log("Productos sin enviar: " & cPed.RowCount)
' Si hay detalles para este encabezado...
If cPed.RowCount > 0 Then
' Iniciamos un bucle interno para recorrer cada producto de este pedido.
For i = 0 To cPed.RowCount - 1
Log("==== ENVIAMOS PRODS ====")
' Movemos el cursor de detalles a la posición actual.
cPed.Position = i
' Preparamos el comando para enviar este producto al servidor.
Dim cmdDetail As DBCommand
cmdDetail.Initialize
' Si es un vendedor normal, usa el comando estándar para insertar el detalle
' y le pasa la misma variable 'Arch' para que en el servidor sepa de qué encabezado es.
cmdDetail.Name = "insert_pedido_INTMEX_arch"
cmdDetail.Parameters = Array As Object(cPed.GetString("PE_CEDIS"),ALMACEN,cPed.GetString("PE_COSTO_TOT"),cPed.GetString("PE_COSTOU"),cPed.GetString("PE_CANT"),cPed.GetString("PE_PRONOMBRE"),cPed.GetString("PE_PROID"),cPed.GetString("PE_CLIENTE"),cPed.GetString("PE_FECHA"),cPed.GetString("PE_USUARIO"),cPed.GetString("PE_RUTA"), cPed.GetString("PE_COSTO_SIN"),cPed.GetString("PE_DESC"),cPed.GetString("PE_FOLIO"), cPed.GetString("PCNoArts"), cPed.GetString("PCMonto"), cPed.GetString("PE_TICKET"), elFolio, Arch)
Log($"ProdsPedido ==> (${cPed.GetString("PE_CEDIS")}, ${ALMACEN}, ${cPed.GetString("PE_COSTO_TOT")}, ${cPed.GetString("PE_COSTOU")}, $cPed.GetString("PE_CANT")}, ${cPed.GetString("PE_PRONOMBRE")}, ${cPed.GetString("PE_PROID")}, ${cPed.GetString("PE_CLIENTE")}, ${cPed.GetString("PE_FECHA")}, ${cPed.GetString("PE_USUARIO")}, ${cPed.GetString("PE_RUTA")}, ${cPed.GetString("PE_COSTO_SIN")}, ${cPed.GetString("PE_DESC")}, ${cPed.GetString("PE_FOLIO")}, ${cPed.GetString("PCNoArts")}, ${cPed.GetString("PCMonto")}, ${cPed.GetString("PE_TICKET")}, ${elFolio}, ${Arch}"$)
' cmd.Name = "insert_pedido5_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"), c.GetString("PCNoArts"), c.GetString("PCMonto"), c.GetString("PE_TICKET"), elFolio)
' Añadimos la instrucción del producto al lote de envío.
BatchCommands.Add(cmdDetail)
Next
End If
Next
' Al terminar de empaquetar, enviamos toda la lista de instrucciones (BatchCommands) al servidor de un solo golpe.
' Se le asigna un nombre de etiqueta (Tag) para saber qué responderá el JobDone ("pedido_completo_" + id de cliente).
' (Ojo visual para el programador: Esta línea está dentro del 'If' general, pero también después de armar los batches en el bucle 'For'. Al procesar el último item del bucle cx, tomará el ID del último cliente para el Tag).
reqManager.ExecuteBatch(BatchCommands, "pedido_completo_" & cx.GetString("PC_CLIENTE"))
End If
' Por buena práctica y para evitar fugas de memoria (memory leaks),
' cerramos siempre los cursores que abrimos hacia la base de datos local.
c.Close
cx.Close
End Sub

View File

@@ -184,7 +184,7 @@ Sub B4XPage_Appear
c = B4XPages.MainPage.skmt.ExecQuery($"SELECT CUENTA FROM CUENTAA"$) c = B4XPages.MainPage.skmt.ExecQuery($"SELECT CUENTA FROM CUENTAA"$)
c.Position = 0 c.Position = 0
If c.GetString("CUENTA") <> "0" Then If c.GetString("CUENTA") <> "0" Then
c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )"$, Array As String("PROMOS", "PROMOS")) c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) ) ORDER BY CAT_GP_NOMBRE"$, Array As String("PROMOS", "PROMOS"))
' Log($"res:${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$) ' Log($"res:${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$)
Private hayPromos As Boolean = False Private hayPromos As Boolean = False
If c2.RowCount > 0 Then If c2.RowCount > 0 Then
@@ -203,8 +203,8 @@ Sub B4XPage_Appear
End If End If
Sleep(100) Sleep(100)
l_total.Visible = False ' l_total.Visible = False
l_totProds.Visible = False ' l_totProds.Visible = False
l_total.Left = 5dip l_total.Left = 5dip
l_totProds.Width = Root.Width * 0.19 l_totProds.Width = Root.Width * 0.19
l_total.Left = l_totProds.Width + 20 l_total.Left = l_totProds.Width + 20
@@ -253,7 +253,21 @@ Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
' lv_tipo.Visible = True ' lv_tipo.Visible = True
If clv_prods_ll.Size = 0 Then LlenaProdsLL(Null) If clv_prods_ll.Size = 0 Then LlenaProdsLL(Null)
clv_prods_ll.AsView.Visible = True clv_prods_ll.AsView.Visible = True
If hayPedido Then p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
If hayPedido Then
p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
End If
c = B4XPages.MainPage.skmt.ExecQuery("select IFNULL(sum(PE_CANT),0) as PC_NOART, IFNULL(sum (PE_COSTO_TOT),0) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP ) ")
If c.RowCount > 0 Then
C.Position = 0
Log($"registros: ${c.RowCount}, arts: ${c.GetString("PC_NOART")}, monto:${c.GetString("PC_MONTO")}"$)
l_totProds.Text = "Prods: " & c.GetString("PC_NOART")
l_total.Text = "Total: $" & c.GetString("PC_MONTO")
If l_total.Text = Null Or l_total.Text = "null" Or l_total.Text = "" Then l_total.Text = "Total: $0.0"
If l_totProds.Text = Null Or l_totProds.Text = "null" Or l_totProds.Text = "" Then l_totProds.Text = "Prods: 0"
End If
Else Else
clv_prods_ll.AsView.Visible = False clv_prods_ll.AsView.Visible = False
lv_promos.Visible = True lv_promos.Visible = True
@@ -281,7 +295,7 @@ Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
' c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD = ? AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )"$, Array As String(Value, Value, Value)) ' c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD = ? AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )"$, Array As String(Value, Value, Value))
c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )"$, Array As String(Value, Value)) c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) ) ORDER BY CAT_GP_NOMBRE"$, Array As String(Value, Value))
' Log($"res:${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$) ' Log($"res:${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$)
If c2.RowCount > 0 Then If c2.RowCount > 0 Then
For i=0 To c2.RowCount -1 For i=0 To c2.RowCount -1
@@ -314,7 +328,7 @@ Sub lv_catalogos2_ItemClick (Position As Int, Value As Object)
End If End If
If Value = "PROMOS" Then If Value = "PROMOS" Then
LogColor("Promos", Colors.red) LogColor("Promos", Colors.red)
c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD = ? AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )"$, Array As String(Value, marca, tipo)) c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD = ? AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) ) ORDER BY CAT_GP_NOMBRE "$, Array As String(Value, marca, tipo))
Else Else
LogColor("Catalogo", Colors.red) LogColor("Catalogo", Colors.red)
c2=B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' "$) c2=B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from ${Starter.tabla} where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' "$)
@@ -433,16 +447,16 @@ Private Sub B4XPage_CloseRequest As ResumableSub
lv_promos.Visible = False lv_promos.Visible = False
lv_catalogos.Visible = True lv_catalogos.Visible = True
p_botonesVenta.Visible = False p_botonesVenta.Visible = False
l_total.Visible = False ' l_total.Visible = False
l_totProds.Visible = False ' l_totProds.Visible = False
Return False Return False
else if clv_prods_ll.AsView.Visible Then else if clv_prods_ll.AsView.Visible Then
lfila.text = "CATALOGO" lfila.text = "CATALOGO"
clv_prods_ll.AsView.Visible = False clv_prods_ll.AsView.Visible = False
lv_subtipo.Visible = False lv_subtipo.Visible = False
p_botonesVenta.Visible = False p_botonesVenta.Visible = False
l_total.Visible = False ' l_total.Visible = False
l_totProds.Visible = False ' l_totProds.Visible = False
lv_catalogos.Visible = True lv_catalogos.Visible = True
Return False Return False
' else if lv_subtipo.Visible Then ' else if lv_subtipo.Visible Then
@@ -557,6 +571,20 @@ Sub b_prodMenos_Click
End If End If
If Subs.totalPedido < 1 Then laCant.Text = "0" If Subs.totalPedido < 1 Then laCant.Text = "0"
invTotal = laCant.Text + Subs.traeinventario(id) invTotal = laCant.Text + Subs.traeinventario(id)
If hayPedido Then
p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
End If
c = B4XPages.MainPage.skmt.ExecQuery("select IFNULL(sum(PE_CANT),0) as PC_NOART, IFNULL(sum (PE_COSTO_TOT),0) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP ) ")
If c.RowCount > 0 Then
C.Position = 0
Log($"registros: ${c.RowCount}, arts: ${c.GetString("PC_NOART")}, monto:${c.GetString("PC_MONTO")}"$)
l_totProds.Text = "Prods: " & c.GetString("PC_NOART")
l_total.Text = "Total: $" & c.GetString("PC_MONTO")
If l_total.Text = Null Or l_total.Text = "null" Or l_total.Text = "" Then l_total.Text = "Total: $0.0"
If l_totProds.Text = Null Or l_totProds.Text = "null" Or l_totProds.Text = "" Then l_totProds.Text = "Prods: 0"
End If
' LogColor("InvTotal PRODMAS: " & invTotal, Colors.Red) ' LogColor("InvTotal PRODMAS: " & invTotal, Colors.Red)
End Sub End Sub
@@ -625,6 +653,19 @@ Sub b_prodMas_Click
' Log(lProdX.Text) ' Log(lProdX.Text)
End If End If
invTotal = laCant.Text + Subs.traeinventario(id) invTotal = laCant.Text + Subs.traeinventario(id)
If hayPedido Then
p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
End If
c = B4XPages.MainPage.skmt.ExecQuery("select IFNULL(sum(PE_CANT),0) as PC_NOART, IFNULL(sum (PE_COSTO_TOT),0) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP ) ")
If c.RowCount > 0 Then
C.Position = 0
Log($"registros: ${c.RowCount}, arts: ${c.GetString("PC_NOART")}, monto:${c.GetString("PC_MONTO")}"$)
l_totProds.Text = "Prods: " & c.GetString("PC_NOART")
l_total.Text = "Total: $" & c.GetString("PC_MONTO")
If l_total.Text = Null Or l_total.Text = "null" Or l_total.Text = "" Or l_total.Text = "Total: $null" Then l_total.Text = "Total: $0.0"
If l_totProds.Text = Null Or l_totProds.Text = "null" Or l_totProds.Text = "" Or l_totProds.Text = "Prods: null" Then l_totProds.Text = "Prods: 0"
End If
' LogColor("InvTotal PRODMAS: " & invTotal, Colors.Red) ' LogColor("InvTotal PRODMAS: " & invTotal, Colors.Red)
End Sub End Sub
@@ -704,7 +745,21 @@ Private Sub et_pCant_TextChanged (Old As String, New As String)
If New = "" Then New = 0 If New = "" Then New = 0
lProdX.Text = cs.Color(Colors.red).append(nombreX).pop.Append(CRLF).Append("Existencias: " & (Subs.traeinventario(id))).Color(0xFF017F01).Append($" $${NumberFormat2(precio, 1, 2, 2, False)}"$).Popall lProdX.Text = cs.Color(Colors.red).append(nombreX).pop.Append(CRLF).Append("Existencias: " & (Subs.traeinventario(id))).Color(0xFF017F01).Append($" $${NumberFormat2(precio, 1, 2, 2, False)}"$).Popall
If hayPedido Then
p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
End If
c = B4XPages.MainPage.skmt.ExecQuery("select IFNULL(sum(PE_CANT),0) as PC_NOART, IFNULL(sum (PE_COSTO_TOT),0) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP ) ")
If c.RowCount > 0 Then
C.Position = 0
Log($"registros: ${c.RowCount}, arts: ${c.GetString("PC_NOART")}, monto:${c.GetString("PC_MONTO")}"$)
l_totProds.Text = "Prods: " & c.GetString("PC_NOART")
l_total.Text = "Total: $" & c.GetString("PC_MONTO")
If l_total.Text = Null Or l_total.Text = "null" Or l_total.Text = "" Then l_total.Text = "Total: $0.0"
If l_totProds.Text = Null Or l_totProds.Text = "null" Or l_totProds.Text = "" Then l_totProds.Text = "Prods: 0"
End If
End If End If
End If End If
End Sub End Sub
@@ -765,7 +820,7 @@ Sub b_terminar1_Click
' ListView1.AddSingleLine(cs.Color(textColor).Size(12).append(c.GetString("PE_PRONOMBRE") & " ").pop.Append(CRLF).Size(8).Color(Colors.Blue).Append("Cantidad #"& c.GetString("PE_CANT")).Append(" SubTotal $"& c.GetString("PE_COSTO_TOT")).Append(" " & c.GetString("PE_FOLIO")& " " &c.GetString("PE_CEDIS")).PopAll) ' ListView1.AddSingleLine(cs.Color(textColor).Size(12).append(c.GetString("PE_PRONOMBRE") & " ").pop.Append(CRLF).Size(8).Color(Colors.Blue).Append("Cantidad #"& c.GetString("PE_CANT")).Append(" SubTotal $"& c.GetString("PE_COSTO_TOT")).Append(" " & c.GetString("PE_FOLIO")& " " &c.GetString("PE_CEDIS")).PopAll)
lv_prodsPedido.AddSingleLine(cs.Color(textColor).Size(12).append(c_prods.GetString("PE_PRONOMBRE") & " ").pop.Append(CRLF).Size(8).Color(Colors.Blue).Append("Cantidad #"& c_prods.GetString("PE_CANT")).Append(" SubTotal $"& c_prods.GetString("PE_COSTO_TOT")).Append(" " & c_prods.GetString("PE_FOLIO")& " " &c_prods.GetString("PE_CEDIS")).PopAll) lv_prodsPedido.AddSingleLine(cs.Color(textColor).Size(12).append(c_prods.GetString("PE_PRONOMBRE") & " ").pop.Append(CRLF).Size(8).Color(Colors.Blue).Append("Cantidad #"& c_prods.GetString("PE_CANT")).Append(" SubTotal $"& c_prods.GetString("PE_COSTO_TOT")).Append(" " & c_prods.GetString("PE_FOLIO")& " " &c_prods.GetString("PE_CEDIS")).PopAll)
Log(c_prods.GetString("PE_PRONOMBRE")) ' Log(c_prods.GetString("PE_PRONOMBRE"))
vamoaver.Add(c_prods.GetString("PE_FOLIO")) vamoaver.Add(c_prods.GetString("PE_FOLIO"))
folio = c_prods.GetString("PE_FOLIO") folio = c_prods.GetString("PE_FOLIO")
Next Next
@@ -1060,7 +1115,7 @@ Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As In
b_prodMenos.Enabled = False b_prodMenos.Enabled = False
End If End If
End If End If
' Log("|"&clv_prods_ll.GetValue(i)&"|")
Private precio As String=NumberFormat2(clv_prods_ll.GetValue(i).As(Map).Get("precio").As(Double),1,2,2,False) Private precio As String=NumberFormat2(clv_prods_ll.GetValue(i).As(Map).Get("precio").As(Double),1,2,2,False)
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null Then et_pCant.Text = clv_prods_ll.GetValue(i).As(Map).Get("cant") If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null Then et_pCant.Text = clv_prods_ll.GetValue(i).As(Map).Get("cant")
l_prodX.Text = cs.Color(Colors.red).append(clv_prods_ll.GetValue(i).As(Map).Get("prod")).pop.append(CRLF).Append("Existencias: " & clv_prods_ll.GetValue(i).As(Map).Get("almacen")).Color(0xFF017F01).Append($" $${precio}"$).Popall l_prodX.Text = cs.Color(Colors.red).append(clv_prods_ll.GetValue(i).As(Map).Get("prod")).pop.append(CRLF).Append("Existencias: " & clv_prods_ll.GetValue(i).As(Map).Get("almacen")).Color(0xFF017F01).Append($" $${precio}"$).Popall
@@ -1080,28 +1135,84 @@ End Sub
Sub Busca_TextChanged (Old As String, New As String) Sub Busca_TextChanged (Old As String, New As String)
' Private inicioContador As String = DateTime.Now ' Private inicioContador As String = DateTime.Now
If Not(clv_prods_ll.AsView.Visible) Then clv_prods_ll.AsView.Visible = True
If (New.Length = 1 Or New.Length = 2) And Not(forzarBusqueda) Then Return If (New.Length = 1 Or New.Length = 2) And Not(forzarBusqueda) Then Return
forzarBusqueda = False forzarBusqueda = False
clv_prods_ll.Clear clv_prods_ll.Clear
listaProds.Initialize listaProds.Initialize
listaHints.Initialize listaHints.Initialize
Sleep(0) Sleep(0)
Private tipoRuta As String = "" If BUSCA.Text = "" Then
Private tRuta As Cursor = Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'TIPO_RUTA'") lv_promos.Visible = False
If tRuta.RowCount > 0 Then clv_prods_ll.AsView.Visible = False
tRuta.Position = 0
tipoRuta = tRuta.GetString("CAT_VA_VALOR")
End If End If
If tipoRuta = "MAYOREO" Then If lfila.text = "PROMOS" Then
LogColor("####### RUTA MAYOREO ###########", Colors.red) ' If Not(lv_promos.Visible) Then lv_promos.Visible = True
Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO10 > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$) ' Private cPromo As Cursor=Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_TIPO, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) and CAT_GP_PROMOCION <> '1' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
' Log($"res:${cPromo.RowCount}"$)
' If cPromo.RowCount > 0 Then
' lv_promos.Clear
' For i=0 To cPromo.RowCount -1
' cPromo.Position=i
' Private tm As Map = Subs.procesaPromocion(cPromo.GetString("CAT_GP_ID"), clienteId)
' If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
' lv_promos.AddTwoLines(cPromo.GetString("CAT_GP_NOMBRE"),"# " & cPromo.GetString("CAT_GP_ALMACEN") & " $ " & cPromo.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
' End If
' Next
lv_promos.Visible = True
c2=B4XPages.MainPage.skmt.ExecQuery2($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${Starter.tabla} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) ) ORDER BY CAT_GP_NOMBRE"$, Array As String("PROMOS", "PROMOS"))
' Log($"res:${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$)
If c2.RowCount > 0 Then
lv_promos.Clear
For i=0 To c2.RowCount -1
c2.Position=i
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId)
If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
End If
Next
Else
ToastMessageShow("No hay promociones disponibles.", False)
End If
c2.Close
If BUSCA.Text = "" Then
lv_promos.Visible = False
clv_prods_ll.AsView.Visible = False
lv_catalogos.Visible = True
lfila.text = "CATALOGOS"
End If
' Else
' ToastMessageShow("No hay promociones disponibles.", False)
' End If
' cPromo.Close
Else Else
LogColor("####### RUTA TRADICIONAL ###########", Colors.red)
Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$) If Not(clv_prods_ll.AsView.Visible) Then clv_prods_ll.AsView.Visible = True
End If Private tipoRuta As String = ""
Log("Llamamos LlenaProdsLL") Private tRuta As Cursor = Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'TIPO_RUTA'")
LlenaProdsLL(p) If tRuta.RowCount > 0 Then
tRuta.Position = 0
tipoRuta = tRuta.GetString("CAT_VA_VALOR")
End If
If tipoRuta = "MAYOREO" Then
LogColor("####### RUTA MAYOREO ###########", Colors.red)
Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO10 > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
Else
LogColor("####### RUTA TRADICIONAL ###########", Colors.red)
Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
End If
clv_prods_ll.AsView.Visible = True
Log("Llamamos LlenaProdsLL")
LlenaProdsLL(p)
If BUSCA.Text = "" Then
lv_promos.Visible = False
clv_prods_ll.AsView.Visible = False
lv_catalogos.Visible = True
lfila.text = "CATALOGOS"
End If
' Do While p.NextRow ' Do While p.NextRow
' Dim tempMap As Map = CreateMap("prod":p.GetString("CAT_GP_NOMBRE"), "precio":p.GetString("CAT_GP_PRECIO"), "almacen":p.GetString("CAT_GP_ALMACEN"), "id":p.GetString("CAT_GP_ID")) ' Dim tempMap As Map = CreateMap("prod":p.GetString("CAT_GP_NOMBRE"), "precio":p.GetString("CAT_GP_PRECIO"), "almacen":p.GetString("CAT_GP_ALMACEN"), "id":p.GetString("CAT_GP_ID"))
' listaProds.Add(tempMap) ' listaProds.Add(tempMap)
@@ -1111,7 +1222,7 @@ Sub Busca_TextChanged (Old As String, New As String)
' clv_prods_ll.Add(Pnl, tempMap) ' clv_prods_ll.Add(Pnl, tempMap)
' Loop ' Loop
' LogColor(clv_prods_ll.Size, Colors.red) ' LogColor(clv_prods_ll.Size, Colors.red)
'' Log(listaProds) '' Log(listaProds)
' p.Close ' p.Close
' PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size ' PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size
' PCLV.B4XSeekBar1.MinValue = 0 ' PCLV.B4XSeekBar1.MinValue = 0
@@ -1119,7 +1230,11 @@ Sub Busca_TextChanged (Old As String, New As String)
' PCLV.B4XSeekBar1.Value = clv_prods_ll.Size ' PCLV.B4XSeekBar1.Value = clv_prods_ll.Size
' PCLV.B4XSeekBar1.Update ' PCLV.B4XSeekBar1.Update
' Log($"Min:0, max:${clv_prods_ll.Size}, Interval:${clv_prods_ll.Size/10}"$) ' Log($"Min:0, max:${clv_prods_ll.Size}, Interval:${clv_prods_ll.Size/10}"$)
' LogColor("TIEMPO DE PROCESO DEL TEXTCHANGED: " & ((DateTime.Now-inicioContador)/1000), Colors.Red) ' LogColor("TIEMPO DE PROCESO DEL TEXTCHANGED: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
End If
End Sub End Sub
Sub LlenaProdsLL(p As ResultSet) Sub LlenaProdsLL(p As ResultSet)
@@ -1152,7 +1267,12 @@ Sub LlenaProdsLL(p As ResultSet)
If tipoRuta = "MAYOREO" Then If tipoRuta = "MAYOREO" Then
LogColor("####### RUTA MAYOREO ###########", Colors.red) LogColor("####### RUTA MAYOREO ###########", Colors.red)
' Log($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO10 > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' union all select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO10 > 0 And CAT_GP_ALMACEN = 0 And CAT_GP_CLASIF <> 'PROMOS' and cat_gp_id in (select pe_proid from pedido where pe_cliente in (select cuenta from cuentaa)) order by 2"$) ' Log($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO10 > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' union all select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO10 > 0 And CAT_GP_ALMACEN = 0 And CAT_GP_CLASIF <> 'PROMOS' and cat_gp_id in (select pe_proid from pedido where pe_cliente in (select cuenta from cuentaa)) order by 2"$)
Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO10 > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' union all select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO10 > 0 And CAT_GP_ALMACEN = 0 And CAT_GP_CLASIF <> 'PROMOS' and cat_gp_id in (select pe_proid from pedido where pe_cliente in (select cuenta from cuentaa)) order by 2"$) Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"
select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla}
where CAT_GP_PRECIO10 > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS'
union all
select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO10 as CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla}
where CAT_GP_PRECIO10 > 0 And CAT_GP_ALMACEN = 0 And CAT_GP_CLASIF <> 'PROMOS' and cat_gp_id in (select pe_proid from pedido where pe_cliente in (select cuenta from cuentaa)) order by 2"$)
Else Else
LogColor("####### RUTA TRADICIONAL ###########", Colors.red) LogColor("####### RUTA TRADICIONAL ###########", Colors.red)
Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' union all select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN = 0 And CAT_GP_CLASIF <> 'PROMOS' and cat_gp_id in (select pe_proid from pedido where pe_cliente in (select cuenta from cuentaa)) order by 2"$) Dim p As ResultSet = B4XPages.MainPage.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' union all select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Starter.tabla} where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN = 0 And CAT_GP_CLASIF <> 'PROMOS' and cat_gp_id in (select pe_proid from pedido where pe_cliente in (select cuenta from cuentaa)) order by 2"$)

View File

@@ -350,7 +350,7 @@ End Sub
Private Sub ObtenerVariablesRequeridas(promo As String) Private Sub ObtenerVariablesRequeridas(promo As String)
Log("Esto es promo: " & promo) Log("Esto es promo: " & promo)
Dim cursorVariablesReq As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_STS AS CAT_GP_VAR1REQ, CAT_GP_IMP1 AS CAT_GP_VAR2REQ, CAT_GP_VARREQ3 from cat_gunaprod2 where cat_gp_id = '${promo}'"$) Dim cursorVariablesReq As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_STS AS CAT_GP_VAR1REQ, CAT_GP_IMP1 AS CAT_GP_VAR2REQ, CAT_GP_VARREQ3 from cat_gunaprod2 where cat_gp_id = '${promo}' ORDER BY CAT_GP_NOMBRE"$)
If cursorVariablesReq.RowCount > 0 Then If cursorVariablesReq.RowCount > 0 Then
cursorVariablesReq.Position = 0 cursorVariablesReq.Position = 0
@@ -446,7 +446,7 @@ Sub muestraPromo(promo As String, cliente As String)
lblFijosRequeridos.Left = 0 lblFijosRequeridos.Left = 0
lblFijosRequeridos.Width = Root.Width lblFijosRequeridos.Width = Root.Width
Dim cursorProdFijo As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_DP_PZAS, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 0"$) Dim cursorProdFijo As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_DP_PZAS, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 0 order BY CAT_GP_NOMBRE"$)
If cursorProdFijo.RowCount > 0 Then If cursorProdFijo.RowCount > 0 Then
For i = 0 To cursorProdFijo.RowCount - 1 For i = 0 To cursorProdFijo.RowCount - 1
cursorProdFijo.Position = i cursorProdFijo.Position = i
@@ -465,7 +465,7 @@ Sub muestraPromo(promo As String, cliente As String)
lblVariablesRequeridas1.Text = $"Primeros Variables Requeridos: '${variablesRequeridas1}'"$ lblVariablesRequeridas1.Text = $"Primeros Variables Requeridos: '${variablesRequeridas1}'"$
lblVariablesRequeridas1.Left = 0 lblVariablesRequeridas1.Left = 0
lblVariablesRequeridas1.Width = Root.Width lblVariablesRequeridas1.Width = Root.Width
Dim cursorNomProductosVar1 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 1"$) Dim cursorNomProductosVar1 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 1 ORDER BY CAT_GP_NOMBRE "$)
If cursorNomProductosVar1.RowCount > 0 Then If cursorNomProductosVar1.RowCount > 0 Then
For i = 0 To cursorNomProductosVar1.RowCount - 1 For i = 0 To cursorNomProductosVar1.RowCount - 1
cursorNomProductosVar1.Position = i cursorNomProductosVar1.Position = i
@@ -483,7 +483,7 @@ Sub muestraPromo(promo As String, cliente As String)
lblVariablesRequeridas2.Text = $"Segundos Variables Requeridos: '${variablesRequeridas2}'"$ lblVariablesRequeridas2.Text = $"Segundos Variables Requeridos: '${variablesRequeridas2}'"$
lblVariablesRequeridas2.Left = 0 lblVariablesRequeridas2.Left = 0
lblVariablesRequeridas2.Width = Root.Width lblVariablesRequeridas2.Width = Root.Width
Dim cursorNomProductosVar2 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 2"$) Dim cursorNomProductosVar2 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 2 ORDER BY CAT_GP_NOMBRE "$)
If cursorNomProductosVar2.RowCount > 0 Then If cursorNomProductosVar2.RowCount > 0 Then
For i = 0 To cursorNomProductosVar2.RowCount - 1 For i = 0 To cursorNomProductosVar2.RowCount - 1
cursorNomProductosVar2.Position = i cursorNomProductosVar2.Position = i
@@ -500,7 +500,7 @@ Sub muestraPromo(promo As String, cliente As String)
lblVariablesRequeridas3.Visible = True lblVariablesRequeridas3.Visible = True
lblVariablesRequeridas3.Text = $"Tercer Variables Requeridas: '${variablesRequeridas3}'"$ lblVariablesRequeridas3.Text = $"Tercer Variables Requeridas: '${variablesRequeridas3}'"$
lblVariablesRequeridas3.Width = Root.Width lblVariablesRequeridas3.Width = Root.Width
Dim cursorNomProductosVar3 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 3"$) Dim cursorNomProductosVar3 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 3 ORDER BY CAT_GP_NOMBRE "$)
If cursorNomProductosVar3.RowCount > 0 Then If cursorNomProductosVar3.RowCount > 0 Then
For i = 0 To cursorNomProductosVar3.RowCount - 1 For i = 0 To cursorNomProductosVar3.RowCount - 1
cursorNomProductosVar3.Position = i cursorNomProductosVar3.Position = i

View File

@@ -56,6 +56,7 @@ Public Sub Initialize As Object
rkmt.ExecNonQuery($"create table if not exists paquetes (cat_dp_precio_simptos TEXT, cat_dp_precio TEXT, cat_dp_almacen TEXT, cat_dp_id TEXT, cat_dp_idprod TEXT, cat_dp_tipo TEXT, cat_dp_pzas TEXT, cat_dp_usuario TEXT, cat_dp_fecha TEXT, cat_dp_regalo TEXT, cat_dp_clasif TEXT, fecha TEXT)"$) rkmt.ExecNonQuery($"create table if not exists paquetes (cat_dp_precio_simptos TEXT, cat_dp_precio TEXT, cat_dp_almacen TEXT, cat_dp_id TEXT, cat_dp_idprod TEXT, cat_dp_tipo TEXT, cat_dp_pzas TEXT, cat_dp_usuario TEXT, cat_dp_fecha TEXT, cat_dp_regalo TEXT, cat_dp_clasif TEXT, fecha TEXT)"$)
agregaColumna("pedidos", "pe_ticket", "INT") agregaColumna("pedidos", "pe_ticket", "INT")
agregaColumna("pedidos", "pe_guardado", "TEXT") agregaColumna("pedidos", "pe_guardado", "TEXT")
agregaColumna("pedidos", "pe_arch", "TEXT")
DateTime.DateFormat = "MM/dd/yyyy" DateTime.DateFormat = "MM/dd/yyyy"
fechaHoy = DateTime.Date(DateTime.Now) fechaHoy = DateTime.Date(DateTime.Now)
revisaSkmtAttached revisaSkmtAttached
@@ -87,7 +88,7 @@ Sub respaldaPedido
Log("copiando pedidos ...") Log("copiando pedidos ...")
rkmt.BeginTransaction rkmt.BeginTransaction
rkmt.ExecNonQuery($"delete from pedidos where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$) rkmt.ExecNonQuery($"delete from pedidos where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
rkmt.ExecNonQuery($"insert into pedidos (pe_folio, pe_desc, pe_costo_sin, pe_ruta, pe_cedis, pe_costo_tot, pe_costou, pe_cant, pe_pronombre, pe_proid, pe_cliente, pe_fecha, pe_usuario, pe_envio_ok, pe_ticket, pe_guardado) select * from skmt1.pedido where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$) rkmt.ExecNonQuery($"insert into pedidos (pe_folio, pe_desc, pe_costo_sin, pe_ruta, pe_cedis, pe_costo_tot, pe_costou, pe_cant, pe_pronombre, pe_proid, pe_cliente, pe_fecha, pe_usuario, pe_envio_ok, pe_ticket, pe_guardado, pe_arch) select * from skmt1.pedido where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
rkmt.EndTransaction rkmt.EndTransaction
' Log(((DateTime.Now - inicio)/1000) & " segs") ' Log(((DateTime.Now - inicio)/1000) & " segs")

View File

@@ -15,7 +15,7 @@ Sub Class_Globals
Dim skmt As SQL Dim skmt As SQL
Dim c As Cursor Dim c As Cursor
Dim sDate, sTime As String Dim sDate, sTime As String
dim totalAValidar as int = 0 Dim totalAValidar As Int = 0
End Sub End Sub
'You can add more parameters here. 'You can add more parameters here.
@@ -43,7 +43,10 @@ End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub iniciaValidacion Sub iniciaValidacion
Log("INICIAMOS VALIDACIONES DE PEDIDOS") LogColor("##############################################", Colors.Red)
LogColor("##### INICIAMOS VALIDACIONES DE PEDIDOS", Colors.Red)
LogColor("##############################################", Colors.Red)
Sleep(2000)
mandaGuardados mandaGuardados
Sleep(5000) Sleep(5000)
revisaGuardados revisaGuardados
@@ -74,12 +77,16 @@ Sub buscaSinEnviar As Int
End Sub End Sub
'Manda a web los pedidos GUARDADOS con ENVIO_OK = 0 y los pone en 1. 'Manda a web los pedidos GUARDADOS con ENVIO_OK = 0 y los pone en 1.
Sub mandaGuardados Sub mandaGuardados0
Log(">>>>>>> MANDA GUARDADOS") LogColor("##############################################", Colors.Red)
LogColor("#### MANDA GUARDADOS", Colors.red)
LogColor("##############################################", Colors.Red)
' PEDIDO_CLIENTE (Pendientes) ' PEDIDO_CLIENTE (Pendientes)
Dim PCNoArts As String ' Dim PCNoArts As String
Dim PCMonto As String ' Dim PCMonto As String
Private almacen As String = Subs.traeAlmacen Private almacen As String = Subs.traeAlmacen
DateTime.TimeFormat = "HHmmss"
Private elFolio As String = DateTime.Time(DateTime.Now)
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK < 2 and PC_GUARDADO = 1") c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK < 2 and PC_GUARDADO = 1")
Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$) Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$)
If c.RowCount > 0 Then If c.RowCount > 0 Then
@@ -89,34 +96,138 @@ Sub mandaGuardados
Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$) Log($"${c.GetString("PC_CLIENTE")}|${c.GetString("PC_FECHA")}|${c.GetString("PC_ENVIO_OK")}|"$)
Dim cmd As DBCommand Dim cmd As DBCommand
cmd.Initialize cmd.Initialize
cmd.Name = "insert_pedidos_INTMEX" cmd.Name = "insert_pedidos5_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, B4XPages.MainPage.principal.l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA")) 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, B4XPages.MainPage.principal.l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA"), $"${Application.VersionName}|${elFolio}"$)
PCNoArts = c.GetString("PC_NOART") ' PCNoArts = c.GetString("PC_NOART")
PCMonto = c.GetString("PC_MONTO") ' PCMonto = c.GetString("PC_MONTO")
reqManager.ExecuteCommand(cmd , $"ins_mandaGuardados_head_${c.GetString("PC_CLIENTE")}"$) reqManager.ExecuteCommand(cmd , $"ins_mandaGuardados_head_${c.GetString("PC_CLIENTE")}"$)
Next Next
End If End If
'PEDIDO (Pendientes) 'PEDIDO (Pendientes)
c = skmt.ExecQuery($"SELECT * FROM PEDIDO where PE_ENVIO_OK < 2 and PE_GUARDADO = 1"$) ' c = skmt.ExecQuery($"SELECT * FROM PEDIDO where PE_ENVIO_OK < 2 and PE_GUARDADO = 1"$)
c = skmt.ExecQuery($"Select (Select PC_NOART from pedido_cliente where pe_cliente = pc_cliente) As PCNoArts, (Select PC_MONTO from pedido_cliente where pe_cliente = pc_cliente) As PCMonto, * FROM PEDIDO where PE_ENVIO_OK < 2 And PE_GUARDADO = 1"$)
Log($"Pedido PENDIENTE: ${c.RowCount}"$) Log($"Pedido PENDIENTE: ${c.RowCount}"$)
If c.RowCount>0 Then If c.RowCount>0 Then
For i=0 To c.RowCount -1 For i=0 To c.RowCount -1
c.Position=i c.Position=i
Dim cmd As DBCommand Dim cmd As DBCommand
cmd.Initialize cmd.Initialize
cmd.Name = "insert_pedido4_INTMEX" cmd.Name = "insert_pedido5_INTMEX"
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,c.GetString("PE_TICKET")) 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("PCNoArts"), c.GetString("PCMonto"), c.GetString("PE_TICKET"), elFolio)
reqManager.ExecuteCommand(cmd, $"ins_mandaGuardados_prods_${c.GetString("PE_CLIENTE")}|${c.GetString("PE_PROID")}|${c.GetString("PE_CEDIS")}"$) reqManager.ExecuteCommand(cmd, $"ins_mandaGuardados_prods_${c.GetString("PE_CLIENTE")}|${c.GetString("PE_PROID")}|${c.GetString("PE_CEDIS")}"$)
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}, ${PCMonto}, ${c.GetString("PE_TICKET")}"$) 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")}, ${c.GetString("PCNoArts")}, ${c.GetString("PCMonto")}, ${c.GetString("PE_TICKET")}, ${Application.VersionName}, ${elFolio}"$)
Next Next
End If End If
c.Close c.Close
End Sub End Sub
'Manda a web los pedidos GUARDADOS con ENVIO_OK = 0 y los pone en 1 (BATCH)
Sub mandaGuardados
' Creamos una lista llamada BatchCommands. Aquí vamos a guardar todas las instrucciones
' de base de datos que queremos mandar al servidor de un solo golpe (en lote o "batch").
Dim BatchCommands As List
BatchCommands.Initialize
LogColor("##############################################", Colors.Red)
LogColor($"### enviaPedidoBatch"$, Colors.red)
LogColor("##############################################", Colors.Red)
DateTime.TimeFormat = "HHmmss"
Private elFolio As String = DateTime.Time(DateTime.Now)
Private almacen As String = Subs.traeAlmacen
' Preparamos una variable para filtrar la consulta a la base de datos.
' Si el filtro no dice "Todos", armamos la condición para traer solo los pedidos que no se han enviado (PC_ENVIO_OK = 0).
' Private condicion As String = ""
' If filtro.ToUpperCase <> "TODOS" Then condicion = "where PC_ENVIO_OK = 0"
' Ejecutamos una consulta (Query) a la base de datos local de SQLite (skmt).
' Buscamos los ENCABEZADOS de los pedidos en la tabla PEDIDO_CLIENTE.
' Private cx As Cursor = Starter.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_ENVIO_OK FROM PEDIDO_CLIENTE ${condicion}"$)
Private cx As Cursor = Starter.skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK < 2 and PC_GUARDADO = 1")
' Log($"SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_ENVIO_OK FROM PEDIDO_CLIENTE ${condicion}"$)
Log("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK < 2 and PC_GUARDADO = 1")
Log("pedido_cliente: " & cx.RowCount)
' Reiniciamos la variable de condición para usarla ahora en el DETALLE de los pedidos.
' Private condicion As String = ""
' If filtro.ToUpperCase <> "TODOS" Then condicion = "where PE_ENVIO_OK = 0"
' Revisamos si nuestro cursor 'cx' (los encabezados de pedido) trajo algún resultado.
If cx.RowCount > 0 Then ' Si hay pedido entonces lo enviamos.
' Iniciamos un bucle (For) para recorrer cada uno de los encabezados de pedido encontrados.
For j = 0 To cx.RowCount - 1
Log("===== ENVIAMOS PRODUCTOS DE PEDIDO =====")
' Movemos el cursor 'cx' a la posición 'j' actual del bucle.
cx.Position = j
' Generamos un identificador único (Arch) concatenando el almacén, la ruta, el cliente y la fecha/hora actual.
' Esto sirve para agrupar en el servidor el encabezado con sus respectivos detalles.
Dim Arch As String = Subs.traeAlmacen & "_" & Subs.traeRuta & "_" & cx.GetString("PC_CLIENTE") & "_" & DateTime.Now
' Preparamos un comando de base de datos (DBCommand) para mandar al servidor.
Dim cmdHeader As DBCommand
cmdHeader.Initialize
' Asignamos el nombre del procedimiento almacenado o query que está en el servidor (jRDC2).
cmdHeader.Name = "insert_pedidos_INTMEX_arch"
' Pasamos los parámetros leyendo los datos del cursor 'cx' (encabezado) y le pasamos el ID único 'Arch'.
cmdHeader.Parameters = Array As Object(cx.GetString("PC_CLIENTE"),cx.GetString("PC_FECHA"),cx.GetString("PC_USER"),cx.GetString("PC_NOART"),cx.GetString("PC_MONTO"),cx.GetString("PC_LON"),cx.GetString("PC_LAT"),almacen,B4XPages.MainPage.principal.l_ruta.text,cx.GetString("PC_COSTO_SIN"), cx.GetString("PC_FACTURA"), $"${Application.VersionName}|${elFolio}"$, Arch)
Log($"${cx.GetString("PC_CLIENTE")},${cx.GetString("PC_FECHA")},${cx.GetString("PC_USER")},${cx.GetString("PC_NOART")},${cx.GetString("PC_MONTO")},${cx.GetString("PC_LON")},${cx.GetString("PC_LAT")},${almacen},${B4XPages.MainPage.principal.l_ruta.text},${cx.GetString("PC_COSTO_SIN")}, ${cx.GetString("PC_FACTURA")}, ${Application.VersionName}|${elFolio}, ${Arch}"$)
' cmd.Name = "insert_pedidos5_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, l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA"), $"${Application.VersionName}|${elFolio}"$)
' Añadimos este comando a nuestra lista del lote (Batch).
BatchCommands.Add(cmdHeader)
' Ahora hacemos una consulta para buscar el DETALLE de este pedido (los productos individuales).
' Private cPed As Cursor = Starter.skmt.ExecQuery($"SELECT (Select PC_NOART from pedido_cliente where pe_cliente = pc_cliente) As PCNoArts, (Select PC_MONTO from pedido_cliente where pe_cliente = pc_cliente) As PCMonto, * FROM PEDIDO where pe_cliente = '${cx.GetString("PC_CLIENTE")}' "$)
Private cPed As Cursor = Starter.skmt.ExecQuery($"Select (Select PC_NOART from pedido_cliente where pe_cliente = pc_cliente) As PCNoArts, (Select PC_MONTO from pedido_cliente where pe_cliente = pc_cliente) As PCMonto, * FROM PEDIDO where PE_ENVIO_OK < 2 And PE_GUARDADO = 1 and pe_cliente = '${cx.GetString("PC_CLIENTE")}'"$)
Log($"Select (Select PC_NOART from pedido_cliente where pe_cliente = pc_cliente) As PCNoArts, (Select PC_MONTO from pedido_cliente where pe_cliente = pc_cliente) As PCMonto, * FROM PEDIDO where PE_ENVIO_OK < 2 And PE_GUARDADO = 1 and pe_cliente = '${cx.GetString("PC_CLIENTE")}'"$)
Log("Productos sin enviar: " & cPed.RowCount)
' Si hay detalles para este encabezado...
If cPed.RowCount > 0 Then
' Iniciamos un bucle interno para recorrer cada producto de este pedido.
For i = 0 To cPed.RowCount - 1
Log("==== ENVIAMOS PRODS ====")
' Movemos el cursor de detalles a la posición actual.
cPed.Position = i
' Preparamos el comando para enviar este producto al servidor.
Dim cmdDetail As DBCommand
cmdDetail.Initialize
' Si es un vendedor normal, usa el comando estándar para insertar el detalle
' y le pasa la misma variable 'Arch' para que en el servidor sepa de qué encabezado es.
cmdDetail.Name = "insert_pedido_INTMEX_arch"
cmdDetail.Parameters = Array As Object(cPed.GetString("PE_CEDIS"),almacen,cPed.GetString("PE_COSTO_TOT"),cPed.GetString("PE_COSTOU"),cPed.GetString("PE_CANT"),cPed.GetString("PE_PRONOMBRE"),cPed.GetString("PE_PROID"),cPed.GetString("PE_CLIENTE"),cPed.GetString("PE_FECHA"),cPed.GetString("PE_USUARIO"),cPed.GetString("PE_RUTA"), cPed.GetString("PE_COSTO_SIN"),cPed.GetString("PE_DESC"),cPed.GetString("PE_FOLIO"), cPed.GetString("PCNoArts"), cPed.GetString("PCMonto"), cPed.GetString("PE_TICKET"), elFolio, Arch)
Log($"ProdsPedido ==> (${cPed.GetString("PE_CEDIS")}, ${almacen}, ${cPed.GetString("PE_COSTO_TOT")}, ${cPed.GetString("PE_COSTOU")}, $cPed.GetString("PE_CANT")}, ${cPed.GetString("PE_PRONOMBRE")}, ${cPed.GetString("PE_PROID")}, ${cPed.GetString("PE_CLIENTE")}, ${cPed.GetString("PE_FECHA")}, ${cPed.GetString("PE_USUARIO")}, ${cPed.GetString("PE_RUTA")}, ${cPed.GetString("PE_COSTO_SIN")}, ${cPed.GetString("PE_DESC")}, ${cPed.GetString("PE_FOLIO")}, ${cPed.GetString("PCNoArts")}, ${cPed.GetString("PCMonto")}, ${cPed.GetString("PE_TICKET")}, ${elFolio}, ${Arch}"$)
' Añadimos la instrucción del producto al lote de envío.
BatchCommands.Add(cmdDetail)
Next
End If
' Al terminar de empaquetar, enviamos toda la lista de instrucciones (BatchCommands) al servidor de un solo golpe.
' Se le asigna un nombre de etiqueta (Tag) para saber qué responderá el JobDone ("pedido_completo_" + id de cliente).
' (Ojo visual para el programador: Esta línea está dentro del 'If' general, pero también después de armar los batches en el bucle 'For'. Al procesar el último item del bucle cx, tomará el ID del último cliente para el Tag).
reqManager.ExecuteBatch(BatchCommands, "pedido_completo_" & cx.GetString("PC_CLIENTE"))
Next
End If
' Por buena práctica y para evitar fugas de memoria (memory leaks),
' cerramos siempre los cursores que abrimos hacia la base de datos local.
' c.Close
cx.Close
End Sub
'Revisa que los pedidos con envio_ok < 2 esten completos en web y los pone en 2. 'Revisa que los pedidos con envio_ok < 2 esten completos en web y los pone en 2.
Sub revisaGuardados Sub revisaGuardados
Log(">>>>>>> VALIDA GUARDADOS") LogColor("##############################################", Colors.Red)
LogColor("##### VALIDA GUARDADOS", Colors.red)
LogColor("##############################################", Colors.Red)
'' Dim PCNoArts As String '' Dim PCNoArts As String
'' Dim PCMonto As String '' Dim PCMonto As String
Private almacen As String = Subs.traeAlmacen Private almacen As String = Subs.traeAlmacen
@@ -139,7 +250,7 @@ Sub revisaGuardados
End If End If
Sleep(5000) Sleep(5000)
' Subir los productos del pedido, y en el jobdone revisar si ya se enviaron todos los de ese pedido (verificar con AffectedRows = 1), si ya se enviaron, ' Subir los productos del pedido, y en el jobdone revisar si ya se enviaron todos los de ese pedido (verificar con AffectedRows = 1), si ya se enviaron,
' entonces Y SOLO ENTONCES, subir el header del pedido y validarlo con AffectedRows = 1. ' entonces Y SOLO ENTONCES, subir el header del pedido y validarlo con AffectedRows = 1.
@@ -177,7 +288,9 @@ End Sub
'Revisa que coincidan las cantidades y montos totales de los pedidos en web y locales, y si coinciden, pone PC_ENVIO_OK en 3 (en JobDone). 'Revisa que coincidan las cantidades y montos totales de los pedidos en web y locales, y si coinciden, pone PC_ENVIO_OK en 3 (en JobDone).
'Si No coinciden, pone en CERO PC_ENVIO_OK y PE_ENVIO_OK y reinicia el proceso de validacion. 'Si No coinciden, pone en CERO PC_ENVIO_OK y PE_ENVIO_OK y reinicia el proceso de validacion.
Sub revisaCantsYMontosTotales Sub revisaCantsYMontosTotales
Log(">>>>>>> VALIDA CANTIDADES Y MONTOS") LogColor("##############################################", Colors.Red)
Logcolor("###### VALIDA CANTIDADES Y MONTOS", Colors.red)
LogColor("##############################################", Colors.Red)
Private almacen As String = Subs.traeAlmacen Private almacen As String = Subs.traeAlmacen
Private laRuta As String = Subs.traeRuta Private laRuta As String = Subs.traeRuta
c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 2 or 1") ' El uno del final es para que SIEMPRE revise las cantidades y montos, por si se borra la orden desde web, para que se envíe NUEVAMENTE. c = skmt.ExecQuery("SELECT * FROM PEDIDO_CLIENTE where PC_ENVIO_OK = 2 or 1") ' El uno del final es para que SIEMPRE revise las cantidades y montos, por si se borra la orden desde web, para que se envíe NUEVAMENTE.
@@ -200,7 +313,10 @@ End Sub
Sub JobDone(Job As HttpJob) Sub JobDone(Job As HttpJob)
' Log(Job.Success) ' Log(Job.Success)
If Job.Success = False Then If Job.Success = False Then
ToastMessageShow("Validador JobDone Error: " & Job.ErrorMessage, True) ' ToastMessageShow("Validador JobDone Error: " & Job.ErrorMessage, True)
LogColor("############################################", Colors.red)
LogColor("###### Validador JobError: " & Job.Tag & CRLF & Job.ErrorMessage, Colors.red)
LogColor("############################################", Colors.red)
Else Else
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green)
If Job.JobName = "DBRequest" Then If Job.JobName = "DBRequest" Then
@@ -224,6 +340,7 @@ Sub JobDone(Job As HttpJob)
Next Next
' pedidoGuardando("Listo") ' pedidoGuardando("Listo")
End If End If
' PEDIDOS GUARDADOS PRODS ' PEDIDOS GUARDADOS PRODS
Dim resultado As DBResult = reqManager.HandleJob(Job) Dim resultado As DBResult = reqManager.HandleJob(Job)
If resultado.Tag.As(String).IndexOf("ins_mandaGuardados_prods_") > -1 Then If resultado.Tag.As(String).IndexOf("ins_mandaGuardados_prods_") > -1 Then
@@ -242,6 +359,25 @@ Sub JobDone(Job As HttpJob)
End If End If
Next Next
End If End If
' PEDIDOS GUARDADOS BATCH
If Job.JobName = "DBRequest" Then
Dim RESULT As DBResult = reqManager.HandleJob(Job)
If RESULT.Tag.As(String).Contains("pedido_completo") Then 'query tag
Subs.logJobDoneResultados(RESULT)
For Each records() As Object In resultado.Rows
Log("AffectedRows: " & records(resultado.Columns.Get("AffectedRows")))
If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then
Private pars() As String = Regex.Split("_", RESULT.tag)
B4XPages.MainPage.skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${pars(2)}'"$)
Log($"update PEDIDO set PE_ENVIO_OK = 1, PE_GUARDADO = 1 where PE_CLIENTE = '${pars(2)}'"$)
B4XPages.MainPage.skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 1, PC_GUARDADO = 1 where PC_CLIENTE = '${pars(2)}'"$)
Log($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 1 where PC_CLIENTE = '${pars(2)}'"$)
End If
Next
End If
End If
' REVISA GUARDADOS PRODS ' REVISA GUARDADOS PRODS
Dim resultado As DBResult = reqManager.HandleJob(Job) Dim resultado As DBResult = reqManager.HandleJob(Job)
If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_prods_") > -1 Then If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_prods_") > -1 Then
@@ -255,10 +391,11 @@ Sub JobDone(Job As HttpJob)
If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then
Private pars() As String = Regex.Split("\|", cliente) Private pars() As String = Regex.Split("\|", cliente)
skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 1"$) skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 1"$)
LogColor($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 1"$, Colors.red) ' LogColor($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 1"$, Colors.red)
End If End If
Next Next
End If End If
' REVISA GUARDADOS HEAD ' REVISA GUARDADOS HEAD
If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_head_") > -1 Then If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_head_") > -1 Then
Log("ins_revisaGuardados_head_") Log("ins_revisaGuardados_head_")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -159,12 +159,12 @@ Module9=C_Nota
NumberOfFiles=46 NumberOfFiles=46
NumberOfLibraries=33 NumberOfLibraries=33
NumberOfModules=30 NumberOfModules=30
Version=13 Version=12.8
@EndOfDesignText@ @EndOfDesignText@
#Region Project Attributes #Region Project Attributes
#ApplicationLabel: Intmex #ApplicationLabel: Intmex
#VersionCode: 1 #VersionCode: 1
#VersionName: 5.05.30 #VersionName: 6.03.16
'SupportedOrientations possible values: unspecified, landscape or portrait. 'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: portrait #SupportedOrientations: portrait
#CanInstallToExternalStorage: False #CanInstallToExternalStorage: False

View File

@@ -63,17 +63,17 @@ ModuleBreakpoints9=
ModuleClosedNodes0= ModuleClosedNodes0=
ModuleClosedNodes1= ModuleClosedNodes1=
ModuleClosedNodes10= ModuleClosedNodes10=
ModuleClosedNodes11= ModuleClosedNodes11=3
ModuleClosedNodes12= ModuleClosedNodes12=
ModuleClosedNodes13=4,5,6 ModuleClosedNodes13=1,4,5,6
ModuleClosedNodes14=11 ModuleClosedNodes14=
ModuleClosedNodes15= ModuleClosedNodes15=
ModuleClosedNodes16= ModuleClosedNodes16=
ModuleClosedNodes17= ModuleClosedNodes17=
ModuleClosedNodes18= ModuleClosedNodes18=
ModuleClosedNodes19= ModuleClosedNodes19=
ModuleClosedNodes2=6 ModuleClosedNodes2=
ModuleClosedNodes20= ModuleClosedNodes20=6
ModuleClosedNodes21= ModuleClosedNodes21=
ModuleClosedNodes22= ModuleClosedNodes22=
ModuleClosedNodes23= ModuleClosedNodes23=
@@ -85,12 +85,12 @@ ModuleClosedNodes28=
ModuleClosedNodes29= ModuleClosedNodes29=
ModuleClosedNodes3= ModuleClosedNodes3=
ModuleClosedNodes30= ModuleClosedNodes30=
ModuleClosedNodes4=4 ModuleClosedNodes4=
ModuleClosedNodes5=3 ModuleClosedNodes5=3
ModuleClosedNodes6= ModuleClosedNodes6=
ModuleClosedNodes7= ModuleClosedNodes7=
ModuleClosedNodes8= ModuleClosedNodes8=
ModuleClosedNodes9= ModuleClosedNodes9=
NavigationStack=C_Promos,CalcularTotalFijos,1706,6,C_Promos,Class_Globals,62,0,C_Promos,GenerarFijos,844,4,C_Promos,muestraPromo,506,0,C_Promos,btnMenosPromo_Click,511,6,C_Promos,btnGuardaPromo_Click,1343,0,Diseñador Visual,cliente.bal,-100,3,C_Promos,btnContinuar_Click,1446,6,C_Cliente,Class_Globals,155,0,C_Cliente,B4XPage_Appear,242,3,C_Cliente,B_GUARDA_C_Click,1032,0 NavigationStack=C_Validador,iniciaValidacion,43,2,C_Principal,JobDone,1466,5,C_Principal,enviaPedidoBatch_PRUEBA,3028,0,C_Principal,l_conexion_LongClick,3022,0,C_Principal,B_PROM_Click,3020,0,C_Cliente,Class_Globals,7,0,C_Cliente,MODS,3,0,C_Cliente,Guardar_Click,622,0,C_Validador,mandaGuardados0,117,0,C_Validador,mandaGuardados,184,5
SelectedBuild=0 SelectedBuild=0
VisibleModules=28,2,13,20,14,29,17,15,9,4 VisibleModules=28,2,13,14,29,15,4,20

View File

@@ -65,6 +65,20 @@ Sub decompress(base64 As String) As String 'ignore
Return uncompressed Return uncompressed
End Sub End Sub
'Regresa la ruta actual de la base de datos.
Sub traeRuta2 (cliente As String) As String 'ignore
Private c As Cursor
Private r As String
c=B4XPages.MainPage.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO = '${cliente}' UNION ALL select CAT_CL_RUTA from kmt_info2 where CAT_CL_CODIGO = '${cliente}'"$)
r = "0"
If c.RowCount > 0 Then
c.Position=0
r = c.GetString("CAT_CL_RUTA")
End If
c.Close
Return r
End Sub
'Convierte una fecha al formato yyMMddHHmmss 'Convierte una fecha al formato yyMMddHHmmss
Sub fechaKMT(fecha As String) As String 'ignore Sub fechaKMT(fecha As String) As String 'ignore
' Log(fecha) ' Log(fecha)
@@ -1531,4 +1545,26 @@ Sub traeTicketConsecutivo(idCliente As String) As Int
sigTicket = c.GetInt("pe_ticket") sigTicket = c.GetInt("pe_ticket")
Loop Loop
Return sigTicket + 1 Return sigTicket + 1
End Sub End Sub
' Regresa la geocerca desde CAT_VARIABLES, default = TRUE
Sub traeGeocerca As Boolean
Private usarGeo As Boolean = True
Private c As Cursor = Starter.skmt.ExecQuery("select * from cat_variables where cat_va_descripcion ='GEOCERCA'")
If c.RowCount> 0 Then
c.Position = 0
If c.GetInt("CAT_VA_VALOR") = 0 Then usarGeo = False
End If
Return usarGeo
End Sub
'Revisa si la geocerca debe de estar activa
Sub geocercaActiva As Boolean
Private resultado As Boolean = True
Private c As Cursor = Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'GEOCERCA'")
If c.RowCount > 0 Then
c.Position = 0
If c.GetString("CAT_VA_VALOR") = 0 Then resultado = False
End If
Return resultado
End Sub

View File

@@ -109,7 +109,6 @@ Public Sub StartFLPSmall
Sleep(500) Sleep(500)
Log("sleeping") Log("sleeping")
Loop Loop
dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida
FLP.RequestLocationUpdates(CreateLocationRequestSmallD) 'Buscamos ubicacion 2 peticiones FLP.RequestLocationUpdates(CreateLocationRequestSmallD) 'Buscamos ubicacion 2 peticiones
' Log("Buscamos ubicacion Small displacement") ' Log("Buscamos ubicacion Small displacement")
' Log("GPSSmallestDisplacement = " & actualLR.GetSmallestDisplacement) ' Log("GPSSmallestDisplacement = " & actualLR.GetSmallestDisplacement)
@@ -140,16 +139,6 @@ Private Sub CreateLocationRequestSmallD As LocationRequest
Return lr Return lr
End Sub End Sub
Sub dameUltimaUbicacionConocida
If FLP.GetLastKnownLocation.IsInitialized Then 'Mandamos ultima ubicacion guardada
' If Main.logger Then Log("Mandamos UUC : "&formatoFecha(FLP.GetLastKnownLocation.Time))
If Starter.Logger Then LogColor($"Mandamos UUC "${Subs.fechaKMT(FLP.GetLastKnownLocation.Time)}|Acc:$0.2{FLP.GetLastKnownLocation.Accuracy}|$0.8{FLP.GetLastKnownLocation.Latitude}|$0.8{FLP.GetLastKnownLocation.Longitude}|Spd:$0.2{FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35))
Dim coords As String = FLP.GetLastKnownLocation.Latitude&","&FLP.GetLastKnownLocation.Longitude&","&formatoFecha(FLP.GetLastKnownLocation.Time)
' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords)
' Subs.mandamosLoc(coords)
End If
End Sub
Public Sub StopFLP Public Sub StopFLP
'Log("StopFLP") 'Log("StopFLP")
If flpStarted Then If flpStarted Then
@@ -202,7 +191,7 @@ Sub CreateNotification (Body As String) As Notification
Dim notification As Notification Dim notification As Notification
notification.Initialize2(notification.IMPORTANCE_LOW) notification.Initialize2(notification.IMPORTANCE_LOW)
notification.Icon = "icon" notification.Icon = "icon"
notification.SetInfo("INTMEX", Body, Main) notification.SetInfo("IZCA", Body, Main)
Return notification Return notification
End Sub End Sub

127
B4A/_git_tag.ps1 Normal file
View File

@@ -0,0 +1,127 @@
# --- SCRIPT DE COMMIT Y TAG (MODO IDE B4A) ---
# 0. CONFIGURACIÓN
$HacerPush = $true # Cambia a $true para que suba los cambios a GitHub
# Cargar librería visual para el MessageBox (por si se necesita en el Push)
Add-Type -AssemblyName System.Windows.Forms
# 1. AUTODESCUBRIMIENTO
$projectPath = $PSScriptRoot
Write-Host "Ruta del proyecto: $projectPath"
$b4aFileItem = Get-ChildItem -Path $projectPath -Filter "*.b4a" | Select-Object -First 1
if (-Not $b4aFileItem) {
Write-Host "ERROR: No hay archivo .b4a en esta carpeta."
return
}
$projectName = $b4aFileItem.BaseName
Write-Host "Proyecto detectado: $projectName"
# 2. LEER VERSIÓN
$versionLine = Get-Content $b4aFileItem.FullName | Select-String "#VersionName:"
if (-Not $versionLine) {
Write-Host "ERROR: Falta #VersionName en el archivo .b4a"
return
}
$version = ($versionLine -split ":")[1].Trim()
# Reemplaza cualquier espacio en blanco por un guion bajo solo para el tag
$tagName = "$version".Replace(" ", "_")
Set-Location $projectPath
# 3. COMMIT CON TORTOISEGIT
$oldCommit = git rev-parse HEAD 2>$null
Write-Host "----------------------------------------"
Write-Host "Version a etiquetar: $version"
Write-Host "Abriendo ventana de TortoiseGit..."
$pathArg = '/path:"{0}"' -f $projectPath
$msgArg = '/logmsg:"VERSION {0}"' -f $version
$cmdArg = "/command:commit"
Start-Process "TortoiseGitProc.exe" -ArgumentList $cmdArg, $pathArg, $msgArg
Write-Host "Esperando a que termines el commit en TortoiseGit..."
# El freno de mano: espera a que cierres la ventana
while (Get-Process "TortoiseGitProc" -ErrorAction SilentlyContinue) {
Start-Sleep -Seconds 1
}
$newCommit = git rev-parse HEAD 2>$null
# 4. VALIDACIÓN
if ($oldCommit -eq $newCommit) {
Write-Host "WARNING: Commit cancelado o sin cambios detectados."
return
}
Write-Host "Commit registrado exitosamente: $newCommit"
# 5. GESTIÓN DE TAGS
$tagGenerado = $false
# Revisamos si el tag ya existe localmente y lo borramos para recrearlo con el nuevo commit
if (git tag -l $tagName) {
git tag -d $tagName 2>$null | Out-Null
}
# Creamos el tag nuevo apuntando al commit que acabamos de hacer
git tag -a $tagName -m "Release version $version"
if ($?) { $tagGenerado = $true }
# 6. LÓGICA DE PUSH
if ($HacerPush) {
Write-Host "Conectando con GitHub..."
$remoteTagInfo = git ls-remote --tags origin $tagName
if ($remoteTagInfo) {
# Conflicto: Ya existe en remoto
$topForm = New-Object System.Windows.Forms.Form
$topForm.TopMost = $true
$topForm.Opacity = 0
$topForm.ShowInTaskbar = $false
$topForm.StartPosition = "CenterScreen"
$topForm.Show()
$topForm.Activate()
[System.Console]::Beep(1000, 200)
$msgBody = "El tag '$tagName' YA EXISTE en GitHub.`n`nDeseas SOBRESCRIBIRLO?`n`nSi = Borrar anterior y actualizar (Force Push).`nNo = Subir solo codigo (mantener tag viejo)."
$msgTitle = "Conflicto de Versiones - $projectName"
$respuesta = [System.Windows.Forms.MessageBox]::Show($topForm, $msgBody, $msgTitle, "YesNo", "Warning")
$topForm.Dispose()
if ($respuesta -eq "Yes") {
Write-Host "Sobrescribiendo tag en GitHub (Force Push)..."
git push origin
git push origin $tagName --force
} else {
Write-Host "Conservando tag anterior en GitHub..."
git push origin
}
} else {
# Tag Nuevo
Write-Host "Subiendo codigo y tag nuevo a GitHub..."
git push origin --follow-tags
}
} else {
Write-Host "Push OMITIDO (Switch de control apagado)."
}
# 7. REPORTE FINAL PARA EL IDE
$EstadoPush = if($HacerPush) { "SI" } else { "NO (Modo de prueba local)" }
$EstadoTag = if($tagGenerado) { "SI ($tagName)" } else { "NO (Error al generar)" }
Write-Host ""
Write-Host "========================================"
Write-Host " REPORTE DE VERSION "
Write-Host "========================================"
Write-Host " PROYECTO : $projectName"
Write-Host " TAG CREADO : $EstadoTag"
Write-Host " PUSH GITHUB: $EstadoPush"
Write-Host "========================================"

127
B4A/_juntaBas.ps1 Normal file
View File

@@ -0,0 +1,127 @@
# SCRIPT: _juntaBas_Master_FinalIA.ps1
# FIX: Corregida sintaxis de comillas y concatenación de tags XML.
# OBJETIVO: Fuente de verdad para IA con navegación ultra estructurada.
$ErrorActionPreference = 'SilentlyContinue'
$Dir = Get-Location
$LT = [char]60; $GT = [char]62; $SL = [char]47
$NL = [Environment]::NewLine
Write-Output '--- GENERANDO MASTER IA DEFINITIVO (FIX ESTRUCTURAL) ---'
# 1. PARSEO DEL PROYECTO .B4A
$b4a = Get-ChildItem -Path ".\*" -Include "*.b4a" -Recurse | Select-Object -First 1
$Name = 'App'; $Ver = '0.0'; $ModulosValidos = @(); $Librerias = @()
if ($b4a) {
$lines = [System.IO.File]::ReadAllLines($b4a.FullName)
foreach ($L in $lines) {
if ($L -match '#ApplicationLabel:\s*(.*)') { $Name = $Matches[1].Trim() }
if ($L -match '#VersionName:\s*(.*)') { $Ver = $Matches[1].Trim() }
if ($L -match '^Module\d+=(.*)') {
$m = [System.IO.Path]::GetFileName($Matches[1].Trim())
if (-not $m.EndsWith(".bas") -and $m -ne "Main") { $m += ".bas" }
$ModulosValidos += $m
}
if ($L -match '^Library\d+=(.*)') { $Librerias += $Matches[1].Trim() }
}
}
$OutName = "_" + $Name + "_" + $Ver + "_IA.md"
$OutFile = Join-Path $Dir $OutName
# 2. HEADER CON TUS INSTRUCCIONES CRÍTICAS
$CurrentDate = Get-Date -Format 'yyyy-MM-dd HH:mm'
$Header = @"
# PROYECTO: $Name
- Version: $Ver
- Fecha: $CurrentDate
- Librerias Activas: $($Librerias -join ", ")
## INSTRUCCIONES CRITICAS (B4A / BASIC4ANDROID)
0. **Integridad del Contexto:** Antes de procesar peticiones, cuenta si el numero de modulos listados en el indice coincide con los detallados en el cuerpo.
1. **Source of Truth (Codigo):** Este archivo contiene el codigo fuente ACTUAL del proyecto.
2. **Source of Truth (Librerias):** Basa tus sugerencias en la lista de 'Librerias Activas'.
3. **Anti-Alucinacion:** Antes de sugerir, VERIFICA la 'Interfaz Pública' o el código fuente del módulo.
4. **Existencia Estricta:** Si una variable/Sub no está en el texto, NO EXISTE.
5. **Formato:** Usa bloques 'vb'.
6. **Navegacion Estructural:** Usa los tags <module>, <interface> y <method> para localizar codigo.
7. **Inferencia de Datos:** Deduce la BD solo de los strings SQL presentes.
"@
Set-Content -Path $OutFile -Value $Header -Encoding UTF8
# 3. LISTAR ARCHIVOS
$files = Get-ChildItem -Path $Dir -Include *.bas,*.b4a -Recurse | Where-Object {
$_.FullName -notmatch 'Objects' -and ($_.Extension -eq '.b4a' -or $ModulosValidos -contains $_.Name)
}
# 4. INDICE DE MODULOS
Add-Content $OutFile ($NL + "## INDICE DE MODULOS" + $NL) -Encoding UTF8
foreach ($f in $files) {
$Ref = $f.Name.Replace('.', '').Replace(' ', '-').ToLower()
Add-Content $OutFile ("- [" + $f.Name + "](#modulo-" + $Ref + ")") -Encoding UTF8
}
# 5. CODIGO FUENTE ESTRUCTURADO
Add-Content $OutFile ($NL + '## CODIGO FUENTE DETALLADO' + $NL) -Encoding UTF8
foreach ($f in $files) {
Write-Host " -> $($f.Name)... " -NoNewline
$txt = [System.IO.File]::ReadAllLines($f.FullName)
# Pre-escaneo para <interface>
$Methods = @()
foreach ($line in $txt) {
if ($line.Trim() -match '^(?:Public\s+|Private\s+)?Sub\s+([\w\d_]+)') {
$Methods += $Matches[1]
}
}
$Ref = $f.Name.Replace('.', '').Replace(' ', '-').ToLower()
Add-Content $OutFile "$NL<module name='$($f.Name)' id='modulo-$Ref'>" -Encoding UTF8
Add-Content $OutFile " <interface>" -Encoding UTF8
foreach($m in $Methods) {
Add-Content $OutFile " <method_ref name='$m' />" -Encoding UTF8
}
Add-Content $OutFile " </interface>$NL" -Encoding UTF8
Add-Content $OutFile "```vb" -Encoding UTF8
$skip = ($f.Extension -eq '.b4a')
foreach ($l in $txt) {
$trim = $l.Trim()
if ($skip) {
if ($trim.StartsWith("#") -and -not $trim.StartsWith("#Region")) { Add-Content $OutFile $l -Encoding UTF8 }
if ($l.Contains("@EndOfDesignText@")) { $skip = $false }
continue
}
# Inicio de Método
if ($trim -match '^(?:Public\s+|Private\s+)?Sub\s+([\w\d_]+)') {
Add-Content $OutFile "<method name='$($Matches[1])'>" -Encoding UTF8
}
# Limpieza de comentarios y escritura de línea
if ($trim.StartsWith("'")) {
if (-not ($trim.StartsWith("'#") -or ($trim -match 'TODO:') -or ($trim -match 'FIX:'))) { continue }
}
if (-not [string]::IsNullOrWhiteSpace($trim)) {
Add-Content $OutFile $l -Encoding UTF8
}
# Fin de Método
if ($trim -eq "End Sub") {
Add-Content $OutFile "</method>" -Encoding UTF8
}
}
Add-Content $OutFile "```$NL</module>" -Encoding UTF8
Write-Host "OK" -ForegroundColor Green
}
Write-Output ("--- FINALIZADO: " + $OutName + " ---")

Binary file not shown.

61
_sync_project.ps1 Normal file
View File

@@ -0,0 +1,61 @@
# 1. Mensaje inicial y pausa
Clear-Host
Write-Host "Se va a hacer un respaldo del codigo actual en el directorio ""AutoBackups""" -ForegroundColor Yellow
Write-Host "y al terminar, traemos desde GitHub la ultima version del codigo." -ForegroundColor Yellow
Write-Host ""
Write-Host "Presione cualquier tecla para continuar..." -ForegroundColor Yellow
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
# 2. Asegurar ubicación en la raíz
Set-Location $PSScriptRoot
Write-Host "`nScript ejecutado desde: $PWD" -ForegroundColor DarkGray
# 3. Buscar el proyecto
$B4AFile = Get-ChildItem -Path ".\B4A\*.b4a" | Select-Object -First 1
if (!$B4AFile) {
Write-Host "ERROR: No encontre el archivo .b4a" -ForegroundColor Red
Start-Sleep -Seconds 3
exit
}
$ProjectName = $B4AFile.BaseName
$BackupDir = ".\B4A\AutoBackups"
if (!(Test-Path $BackupDir)) { New-Item -ItemType Directory -Path $BackupDir }
Write-Host "Respaldando $ProjectName..." -ForegroundColor Cyan
# 4. Preparar archivos limpios (Método Copiar y Podar)
$tempFolder = Join-Path $env:TEMP "B4A_Stage_$ProjectName"
if (Test-Path $tempFolder) { Remove-Item $tempFolder -Recurse -Force -ErrorAction SilentlyContinue }
New-Item -ItemType Directory -Path $tempFolder | Out-Null
Write-Host "Extrayendo archivos de codigo..." -ForegroundColor Gray
foreach ($f in @("B4A", "Files")) {
if (Test-Path $f) {
$target = Join-Path $tempFolder $f
Copy-Item -Path $f -Destination $target -Recurse -Force -ErrorAction SilentlyContinue
}
}
Write-Host "Podando carpetas Objects y AutoBackups..." -ForegroundColor Gray
Remove-Item -Path "$tempFolder\B4A\Objects" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$tempFolder\B4A\AutoBackups" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$tempFolder\B4A\*.zip" -Force -ErrorAction SilentlyContinue
# 5. Zipear
$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
Write-Host "Comprimiendo..." -ForegroundColor Gray
Compress-Archive -Path "$tempFolder\*" -DestinationPath "$BackupDir\$ProjectName`_$Timestamp.zip" -Force
Remove-Item $tempFolder -Recurse -Force -ErrorAction SilentlyContinue
Write-Host "¡Respaldo limpio creado con exito en AutoBackups!`n" -ForegroundColor Green
# 6. Sincronizar con GitHub (Pull forzado)
Write-Host "--- Sincronizando con GitHub (Borrando cambios locales) ---" -ForegroundColor Cyan
git fetch --all
git reset --hard origin/main
git pull
Write-Host "`n¡PROCESO COMPLETADO!" -ForegroundColor Green
# Pausa de 3 segundos para que veas el resultado antes de que se cierre sola
Start-Sleep -Seconds 3