...
3
.gitignore
vendored
@@ -1,3 +1,2 @@
|
|||||||
**/Objects
|
**/Objects
|
||||||
**/AutoBackups
|
**/AutoBackups
|
||||||
*.meta
|
|
||||||
783
B4A/B4XMainPage.bas
Normal file
@@ -0,0 +1,783 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=9.85
|
||||||
|
@EndOfDesignText@
|
||||||
|
#Region Shared Files
|
||||||
|
'#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
|
||||||
|
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
|
||||||
|
'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
|
||||||
|
'###########################################################################################################
|
||||||
|
'###################### PULL #############################################################
|
||||||
|
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull
|
||||||
|
'###########################################################################################################
|
||||||
|
'###################### PUSH #############################################################
|
||||||
|
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\
|
||||||
|
'###########################################################################################################
|
||||||
|
'###################### 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
|
||||||
|
'###########################################################################################################
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\
|
||||||
|
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView
|
||||||
|
Private xui As XUI
|
||||||
|
' Dim ks As kms_helperSubs
|
||||||
|
Public login As B4XMainPage
|
||||||
|
Public principal As C_Principal
|
||||||
|
Public clientes As C_Clientes
|
||||||
|
Public cliente As C_Cliente
|
||||||
|
Public productos As C_Productos
|
||||||
|
Public updateAvailable As C_UpdateAvailable
|
||||||
|
Public mapas As C_Mapas
|
||||||
|
Public nuevoCliente As C_NuevoCliente
|
||||||
|
Public ticketsDia As C_TicketsDia
|
||||||
|
Public noVenta As C_NoVenta
|
||||||
|
Public nota As C_Nota
|
||||||
|
Public pedidos As C_Pedidos
|
||||||
|
Public promos As C_Promos
|
||||||
|
Public historico As C_Historico
|
||||||
|
|
||||||
|
Dim reqManager As DBRequestManager
|
||||||
|
Dim s As C_Subs
|
||||||
|
Dim v As String = Application.VersionName
|
||||||
|
Dim ruta As String
|
||||||
|
Dim tgl As Toggle
|
||||||
|
Dim lat_gps, lon_gps As String
|
||||||
|
Dim usuario As String
|
||||||
|
Dim batt As Int
|
||||||
|
' Dim Starter.skmt As SQL
|
||||||
|
Dim montoActual, clientesTotal, clientesVenta, clientesVisitados,almacen, rutaPreventa As String
|
||||||
|
Dim DBReqServer, fechaRuta As String
|
||||||
|
Dim Logger As Boolean
|
||||||
|
Dim mac_impresora As String
|
||||||
|
Dim Phn As PhoneId
|
||||||
|
|
||||||
|
Dim user As EditText
|
||||||
|
Dim pass As EditText
|
||||||
|
Dim c As Cursor
|
||||||
|
Dim existe As String
|
||||||
|
Dim paso1 As String
|
||||||
|
Private IMEN As Label
|
||||||
|
Dim IMEI As String = ""
|
||||||
|
Dim alterno As String
|
||||||
|
Private b_menu As Button
|
||||||
|
' Dim PopupMenu As RSPopupMenu
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
Private PDF As Button
|
||||||
|
Private bpv1 As BatteryProgressView
|
||||||
|
Dim batterystatus(11) As Int
|
||||||
|
Private bu As BatteryUtilities
|
||||||
|
Private b_apk As Button
|
||||||
|
Private i_engrane As ImageView
|
||||||
|
Private p_Main As Panel
|
||||||
|
Private p_appUpdate As Panel
|
||||||
|
Private b_regesar As Button
|
||||||
|
Private l_version As Label
|
||||||
|
Private ImageView1 As ImageView
|
||||||
|
Private Label2 As Label
|
||||||
|
Private Entrar As Button
|
||||||
|
Dim tipo_venta As String
|
||||||
|
Dim bTerminarClicked As Boolean = False
|
||||||
|
Private lv_server As ListView
|
||||||
|
Private l_server As Label
|
||||||
|
Dim et_server As EditText
|
||||||
|
Private b_server As Button
|
||||||
|
Private b_envioBD As Button
|
||||||
|
Public Provider As FileProvider
|
||||||
|
Public rutaBDBackup As String = ""
|
||||||
|
Dim MES1 As ManageExternalStorage
|
||||||
|
Dim device As Phone
|
||||||
|
Private b_importarBD As Button
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub Initialize
|
||||||
|
' B4XPages.GetManager.LogEvents = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'This event will be called once, before the page becomes visible.
|
||||||
|
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||||
|
B4XPages.GetManager.LogEvents = True
|
||||||
|
Root = Root1
|
||||||
|
Root.LoadLayout("login")
|
||||||
|
s.Initialize(Me, "Subs")
|
||||||
|
B4XPages.SetTitle(Me, "PROFINA Preventa")
|
||||||
|
login.Initialize
|
||||||
|
B4XPages.AddPage("Login", login)
|
||||||
|
principal.Initialize
|
||||||
|
B4XPages.AddPage("Principal", principal)
|
||||||
|
clientes.Initialize
|
||||||
|
B4XPages.AddPage("Clientes", clientes)
|
||||||
|
cliente.Initialize
|
||||||
|
B4XPages.AddPage("Cliente", cliente)
|
||||||
|
productos.Initialize
|
||||||
|
B4XPages.AddPage("Productos", productos)
|
||||||
|
updateAvailable.Initialize
|
||||||
|
B4XPages.AddPage("updateAvailable", updateAvailable)
|
||||||
|
mapas.Initialize
|
||||||
|
B4XPages.AddPage("Mapas", mapas)
|
||||||
|
nuevoCliente.Initialize
|
||||||
|
B4XPages.AddPage("NuevoCliente", nuevoCliente)
|
||||||
|
ticketsDia.Initialize
|
||||||
|
B4XPages.AddPage("TicketsDia", ticketsDia)
|
||||||
|
noVenta.Initialize
|
||||||
|
B4XPages.AddPage("NoVenta", noVenta)
|
||||||
|
nota.Initialize
|
||||||
|
B4XPages.AddPage("Nota", nota)
|
||||||
|
pedidos.Initialize
|
||||||
|
B4XPages.AddPage("Pedidos", pedidos)
|
||||||
|
promos.Initialize
|
||||||
|
B4XPages.AddPage("Promos", promos)
|
||||||
|
historico.Initialize
|
||||||
|
B4XPages.AddPage("Historico", historico)
|
||||||
|
ruta = Starter.ruta
|
||||||
|
|
||||||
|
' Dim px As B4XView = xui.CreatePanel("")
|
||||||
|
' px.SetLayoutAnimated(0, 500, 30, 200dip, 45dip)
|
||||||
|
' px.Color = Colors.Cyan
|
||||||
|
' Dim tf As Label
|
||||||
|
' tf.Initialize("")
|
||||||
|
' tf.TextSize = 20
|
||||||
|
' tf.Color = Colors.gray
|
||||||
|
' tf.Gravity = Gravity.CENTER_VERTICAL
|
||||||
|
' tf.Text = "Hola"
|
||||||
|
' px.AddView(tf, 0, 0, px.Width - 10dip, px.Height)
|
||||||
|
' B4XPages.GetManager.ActionBar.RunMethod("setCustomView", Array(px))
|
||||||
|
' B4XPages.GetManager.ActionBar.RunMethod("setDisplayOptions", Array(16, 16))
|
||||||
|
|
||||||
|
Provider.Initialize
|
||||||
|
' Subs.borraArribaDe100Errores ' Para Websockets
|
||||||
|
' Subs.borraArribaDe600RenglonesBitacora ' Para Websockets
|
||||||
|
If File.Exists(ruta, "kmt.db") = False Then
|
||||||
|
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||||
|
Log(File.DirAssets)
|
||||||
|
LogColor("copiamos kmt.db de "&File.DirAssets & " a " & ruta,Colors.Green)
|
||||||
|
End If
|
||||||
|
' Log(ruta)
|
||||||
|
' Starter.skmt.Initialize(ruta,"kmt.db", True)
|
||||||
|
s.guardaAppInfo(Starter.skmt)
|
||||||
|
Starter.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)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_GPS (HGDATE TEXT, HGLAT TEXT, HGLON TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_STORE (HSS_CODIGO TEXT, HSS_IN TEXT, HSS_OUT TEXT, HSS_TOT TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_OUT (HSO_INI TEXT, HSO_FIN TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS INVENT_X_ENVIAR (ALMACEN TEXT, PROID TEXT, CANTIDAD TEXT)")
|
||||||
|
Starter.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)")
|
||||||
|
Starter.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)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_GEOCERCA (HGCLIENTE TEXT, HGDATE TEXT, HGLAT TEXT, HGLON TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FACE (HFCLIENTE TEXT, HFALIAS TEXT, HFRUTA TEXT, HFALMACEN TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(FECHA INTEGER, LAT TEXT, LON TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE VIEW IF NOT EXISTS CATALOGO AS Select CAT_GP_CLASIF, CAT_GP_ID FROM CAT_GUNAPROD UNION Select CAT_GP_CLASIF, CAT_GP_ID FROM CAT_GUNAPROD GROUP BY CAT_GP_CLASIF, CAT_GP_ID")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE VIEW IF NOT EXISTS total_marcas AS Select cat_gp_clasif, sum(pe_costo_tot) As total from CATALOGO, pedido where pe_proid = cat_gp_id And pe_cliente <> 0 group by cat_gp_clasif")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_MARCAS_CUOTAS (HMC_MARCA TEXT, HMC_TOTAL TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CODIGO_BARRAS(CODIGOKMTS TEXT, CODIGOB TEXT, LAT TEXT, LON TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ABONOS (a_usuario TEXT, a_ruta TEXT, a_cliente TEXT, a_abono TEXT, a_fecha TEXT, a_enviado TEXT)")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GIRO(GIRO TEXT)")
|
||||||
|
' Starter.skmt.ExecNonQuery("drop table kmt_info")
|
||||||
|
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS kmt_info (CAT_CL_FOTO BLOB, CAT_CL_NUM_SERIEFISICO TEXT, CAT_CL_MTOCOMPRA TEXT, CAT_CL_CEDIS TEXT, CAT_CL_LAT TEXT, CAT_CL_LONG TEXT, CAT_CL_FBAJA TEXT, CAT_CL_FALTA TEXT, CAT_CL_CP TEXT, CAT_CL_EDO TEXT, CAT_CL_MUNI TEXT, CAT_CL_COLONIA TEXT, CAT_CL_CALLE2 TEXT, CAT_CL_CALLE1 TEXT, CAT_CL_NOINT TEXT, CAT_CL_NOEXT TEXT, CAT_CL_CALLE TEXT, CAT_CL_EMAIL TEXT, CAT_CL_TELEFONO TEXT, CAT_CL_ATIENTE2 TEXT, CAT_CL_ATIENDE1 TEXT, CAT_CL_NOMBRE TEXT, CAT_CL_GIRO TEXT, CAT_CL_DIAS_VISITA TEXT, CAT_CL_TIPO_RUTA TEXT, CAT_CL_RUTA TEXT, CAT_CL_CODIGO TEXT, gestion NUMERIC, CAT_CL_DIASEMANA TEXT, CAT_CL_SECUENCIA INT)")
|
||||||
|
Subs.agregaColumna("PEDIDO", "PE_ENVIO_OK", "TEXT")
|
||||||
|
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "CAT_CL_DIASEMANA" en la tabla
|
||||||
|
c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='CAT_CL_DIASEMANA'")
|
||||||
|
c.Position = 0
|
||||||
|
If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos
|
||||||
|
Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_DIASEMANA TEXT")
|
||||||
|
End If
|
||||||
|
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||||
|
Try
|
||||||
|
Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_DIASEMANA TEXT")
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
End Try
|
||||||
|
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "CAT_GP_TIPOPROD2" en la tabla
|
||||||
|
c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('CAT_GUNAPROD') WHERE name='CAT_GP_TIPOPROD2'")
|
||||||
|
c.Position = 0
|
||||||
|
If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos
|
||||||
|
Starter.skmt.ExecNonQuery("ALTER TABLE CAT_GUNAPROD ADD COLUMN CAT_GP_TIPOPROD2 TEXT")
|
||||||
|
End If
|
||||||
|
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||||
|
Try
|
||||||
|
Starter.skmt.ExecNonQuery("ALTER TABLE CAT_GUNAPROD ADD COLUMN CAT_GP_TIPOPROD2 TEXT")
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
End Try
|
||||||
|
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "CAT_CL_SECUENCIA" en la tabla
|
||||||
|
c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='CAT_CL_SECUENCIA'")
|
||||||
|
c.Position = 0
|
||||||
|
If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos
|
||||||
|
Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_SECUENCIA INT")
|
||||||
|
End If
|
||||||
|
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||||
|
Try
|
||||||
|
Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_SECUENCIA INT")
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
End Try
|
||||||
|
c=Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ")
|
||||||
|
C.Position = 0
|
||||||
|
If c.GetString("CUANTOS") = 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery("INSERT INTO HIST_STAY_OUT(HSO_INI, HSO_FIN) VALUES (0,0)")
|
||||||
|
End If
|
||||||
|
C.Close
|
||||||
|
l_version.Text = Application.VersionName
|
||||||
|
montoActual = 0
|
||||||
|
clientesTotal = 0
|
||||||
|
clientesVenta = 0
|
||||||
|
clientesVisitados = 0
|
||||||
|
almacen = 0
|
||||||
|
rutaPreventa = 0
|
||||||
|
p_appUpdate.Visible = False
|
||||||
|
|
||||||
|
LogColor("Revisa permisos Phone_State", Colors.Green)
|
||||||
|
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||||
|
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||||
|
If Result Then
|
||||||
|
Log("Con permisos de ubicacion")
|
||||||
|
Else
|
||||||
|
Log("SIN permisos de ubicacion")
|
||||||
|
End If
|
||||||
|
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE)
|
||||||
|
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||||
|
If Result Then
|
||||||
|
' IMEN.Text = Phn.GetDeviceId
|
||||||
|
' IMEI = Phn.GetDeviceId
|
||||||
|
' LogColor($"////////////////// IMEI: ${IMEI} ////////////////// "$, Colors.Blue)
|
||||||
|
' IMEI="" 'Pruebas
|
||||||
|
End If
|
||||||
|
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
|
||||||
|
' Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
|
||||||
|
' If Result Then
|
||||||
|
' StartService(Tracker)
|
||||||
|
'' Log("Start Tracker")
|
||||||
|
' Else
|
||||||
|
' ToastMessageShow("No permission", True)
|
||||||
|
' End If
|
||||||
|
p_appUpdate.Visible = False
|
||||||
|
MES1.Initialize(Me, "MES1")
|
||||||
|
' get the device SDK version
|
||||||
|
Dim SdkVersion As Int = device.SdkVersion
|
||||||
|
' Choose which permission to request in order to access external storgage
|
||||||
|
If SdkVersion < 30 Then
|
||||||
|
' Log("SDK = " & SdkVersion & " : Requesting WRITE_EXTERNAL_STORAGE permission")
|
||||||
|
Dim rp As RuntimePermissions
|
||||||
|
rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE) ' Implicit read capability if granted
|
||||||
|
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
|
||||||
|
' Log($"PERMISSION_WRITE_EXTERNAL_STORAGE = ${Result}"$)
|
||||||
|
Else
|
||||||
|
' Log("SDK = " & SdkVersion & " : Requesting MANAGE_EXTERNAL_STORAGE permission")
|
||||||
|
' Log("On Entry MANAGE_EXTERNAL_STORAGE = " & MES1.HasPermission)
|
||||||
|
If Not(MES1.HasPermission) Then
|
||||||
|
MsgboxAsync("This app requires access to all files, please enable the option", "Manage All Files")
|
||||||
|
Wait For Msgbox_Result(Res As Int)
|
||||||
|
' Log("Getting permission")
|
||||||
|
MES1.GetPermission
|
||||||
|
Wait For MES_StorageAvailable
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
|
||||||
|
If Starter.muestraProgreso = 1 Then
|
||||||
|
muestraProgreso("Descargando actualización")
|
||||||
|
Starter.muestraProgreso = 0
|
||||||
|
End If
|
||||||
|
Dim ph As Phone 'Get Id Device
|
||||||
|
Dim DeviceID As String = ph.GetSettings("android_id").ToUpperCase
|
||||||
|
LogColor($"////////////////// DeviceID: ${DeviceID} ////////////////// "$, Colors.Blue)
|
||||||
|
DBReqServer = Starter.DBReqServer
|
||||||
|
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||||
|
tgl.Initialize()
|
||||||
|
If Not(Starter.gps.GPSEnabled) Then
|
||||||
|
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||||
|
Sleep(500)
|
||||||
|
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||||
|
End If
|
||||||
|
c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA"))
|
||||||
|
c.Position = 0
|
||||||
|
If c.GetString("CUANTOS") = 0 Then
|
||||||
|
LogColor($"No hay fecha: ${c.GetString("CUANTOS")}"$, Colors.Red)
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_fecha"
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "fecha")
|
||||||
|
Msgbox("AJUSTAR FECHA","AVISO") 'Ignore
|
||||||
|
B4XPage_Appear
|
||||||
|
Else
|
||||||
|
' LogColor($"Si hay fecha: ${c.GetString("CUANTOS")}"$, Colors.Green)
|
||||||
|
c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA"))
|
||||||
|
c.Position =0
|
||||||
|
Dim sDate, sTime As String 'ignore
|
||||||
|
DateTime.DateFormat = "yyyyMMdd"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
' If sDate > "20220701" Then
|
||||||
|
' Msgbox("INSTALAR NUEVO APK" ,"AVISO") 'Ignore
|
||||||
|
' B4XPage_Appear
|
||||||
|
' End If
|
||||||
|
If c.GetString("CAT_VA_VALOR") > sDate Then
|
||||||
|
Msgbox("AJUSTAR LA FECHA YA QUE ES MENOR AL SISTEMA" ,"AVISO") 'Ignore
|
||||||
|
B4XPage_Appear
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
bu.Initialize
|
||||||
|
batterystatus = bu.BatteryInformation
|
||||||
|
'Obtenemos el usuario registrado
|
||||||
|
' CallSubDelayed(FirebaseMessaging, "SubscribeToTopics")
|
||||||
|
dameUsuario
|
||||||
|
' If Not(CheckNotificationAccess) Then
|
||||||
|
' Msgbox2Async($"Se necesita acceso a las notificaciones, haga clic en "Aceptar" y en la siguiente pantalla permita el acceso a la aplicación "${Application.LabelName}"."$, "Permisos necesarios", "Aceptar", "Cancelar", "", Null, True)
|
||||||
|
' Wait For Msgbox_Result (resultado As Int)
|
||||||
|
' If resultado = DialogResponse.POSITIVE Then
|
||||||
|
' Dim In As Intent
|
||||||
|
' In.Initialize("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS", "")
|
||||||
|
' StartActivity(In)
|
||||||
|
' End If
|
||||||
|
'' Private cd1 As ColorDrawable
|
||||||
|
'' cd1.Initialize(Colors.red, 10dip)
|
||||||
|
'' b_notifAccess.Background = cd1
|
||||||
|
'' b_notifAccess.TextColor = Colors.White
|
||||||
|
'' b_notifAccess.Text = "Activar Permisos"
|
||||||
|
' Else
|
||||||
|
'' Private cd1 As ColorDrawable
|
||||||
|
'' cd1.Initialize(Colors.RGB(109, 221, 101), 10dip)
|
||||||
|
'' b_notifAccess.Background = cd1
|
||||||
|
'' b_notifAccess.TextColor = Colors.White
|
||||||
|
'' b_notifAccess.Text = "Permisos Activos"
|
||||||
|
' End If
|
||||||
|
' ks.Initialize(Me, "ks")
|
||||||
|
' ks.vacuum
|
||||||
|
' ks.centraEtiqueta(l_version, Root.Width)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub ks_etiquetaCentrada(success As Boolean)
|
||||||
|
If success Then Log("Etiqueta Centrada") Else Log("Etiqueta Centrada")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Sub Entrar_Click
|
||||||
|
Dim r As Reflector
|
||||||
|
Dim Api As Int
|
||||||
|
Dim PP As Phone
|
||||||
|
user.Text = user.Text.Trim
|
||||||
|
Api = r.GetStaticField("android.os.Build$VERSION", "SDK_INT")
|
||||||
|
If Api < 9 Then
|
||||||
|
'Old device
|
||||||
|
If File.Exists(File.DirInternal, "__id") Then
|
||||||
|
IMEI = File.ReadString(File.DirInternal, "__id")
|
||||||
|
Log(1&"-"&IMEI)
|
||||||
|
Else
|
||||||
|
Dim id As Int
|
||||||
|
id = Rnd(0x10000000, 0x7FFFFFFF)
|
||||||
|
File.WriteString(File.DirInternal, "__id", id)
|
||||||
|
IMEI = id
|
||||||
|
Log(2&"-"&IMEI)
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
'New device
|
||||||
|
IMEI = r.GetStaticField("android.os.Build", "SERIAL")
|
||||||
|
' Log(3&"-"&IMEI)
|
||||||
|
End If
|
||||||
|
If IMEI.ToLowerCase = "unknown" Then
|
||||||
|
IMEI = PP.GetSettings("android_id")
|
||||||
|
End If
|
||||||
|
' Log("IMEI = " & IMEI)
|
||||||
|
|
||||||
|
If user.Text = "ALTERNO" Then
|
||||||
|
c=Starter.skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER"))
|
||||||
|
c.Position =0
|
||||||
|
DBReqServer = c.GetString("CAT_CO_CONFIGURACION")
|
||||||
|
alterno = c.GetString("CAT_CO_RESULTADO")
|
||||||
|
c.Close
|
||||||
|
If alterno = 1 Then
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER"))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER"))
|
||||||
|
Else if alterno = 2 Then
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER"))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER"))
|
||||||
|
End If
|
||||||
|
c=Starter.skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER"))
|
||||||
|
c.Position =0
|
||||||
|
DBReqServer = c.GetString("CAT_CO_CONFIGURACION")
|
||||||
|
user.Text = DBReqServer
|
||||||
|
c.Close
|
||||||
|
' reqManager.Initialize(Me, DBReqServer)
|
||||||
|
else if user.Text = "KMTS1" Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from usuarioa")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, pass.Text))
|
||||||
|
Starter.skmt.ExecNonQuery("delete from cat_almacen")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (pass.Text))
|
||||||
|
Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.1"))
|
||||||
|
B4XPages.ShowPage("Clientes")
|
||||||
|
else if user.Text = "BERNA1" Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from usuarioa")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, "1"))
|
||||||
|
Starter.skmt.ExecNonQuery("delete from cat_almacen")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object ("1"))
|
||||||
|
Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.1"))
|
||||||
|
B4XPages.ShowPage("Clientes")
|
||||||
|
else if user.Text = "IMEI" Then
|
||||||
|
user.Text = IMEI
|
||||||
|
End If
|
||||||
|
|
||||||
|
c=Starter.skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text))
|
||||||
|
c.Position=0
|
||||||
|
existe = c.GetString("EXISTE1")
|
||||||
|
If existe = 0 Then
|
||||||
|
If IMEI = "" Then
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_usuario_guna_PRO" 'Antes select_usuario_guna_GV2_1
|
||||||
|
cmd.Parameters = Array As Object(user.Text.Trim, pass.Text.Trim)
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "usuario_10") 'Antes usuario
|
||||||
|
Else
|
||||||
|
If IMEI = "" Then
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_usuario_guna_PRO"
|
||||||
|
cmd.Parameters = Array As Object(user.Text.Trim, pass.Text.Trim)
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "usuario_10")
|
||||||
|
Else
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_usuario_guna_PRO" 'Antes select_usuario_guna_GV2
|
||||||
|
cmd.Parameters = Array As Object(user.Text.Trim, pass.Text.trim)
|
||||||
|
Log("Mandamos: "&user.Text&"|"& pass.Text)
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "usuario_10") 'Antes usuario
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_version_PRO"
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "version")
|
||||||
|
Else
|
||||||
|
usuario = user.Text
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub JobDone(Job As HttpJob)
|
||||||
|
Log("JOBDONE MAINPAGE - " & Job.Success)
|
||||||
|
If Job.Success = False Then
|
||||||
|
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||||
|
Else
|
||||||
|
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If result.Tag = "version" Then 'query tag
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||||
|
Dim CAT_VE_VERSION As String = records(result.Columns.Get("CAT_VE_VERSION"))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
If result.Tag = "select_fechat" Then 'query tag
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
For Each k As String In result.Columns.Keys
|
||||||
|
Log("select_fechat: " & k & ": " & records(result.Columns.Get(k)))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If result.Tag = "agencia" Then 'query tag
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim ID_ALMACEN As String = records(result.Columns.Get("ID_ALMACEN"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If result.Tag = "fecha" Then 'query tag
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim FECHA_HOY As String = records(result.Columns.Get("FECHA"))
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA"))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",FECHA_HOY))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If result.Tag = "usuario" Then 'query tag
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim name As String = records(result.Columns.Get("USUARIO"))
|
||||||
|
Dim ID_ALMACEN As String = records(result.Columns.Get("CAT_LO_AGENCIA"))
|
||||||
|
Dim IMEI_BASE As String = records(result.Columns.Get("CAT_LO_IDTELEFONO"))
|
||||||
|
Log(records(result.Columns.Get("CAT_LO_IDTELEFONO")) )
|
||||||
|
Next
|
||||||
|
paso1 = 1
|
||||||
|
ToastMessageShow(name, False)
|
||||||
|
Log("////////////////////////// "&name)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If result.Tag = "usuario_10" Then 'query tag
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim name As String = records(result.Columns.Get("USUARIO"))
|
||||||
|
Dim ID_ALMACEN As String = records(result.Columns.Get("CAT_LO_AGENCIA"))
|
||||||
|
Dim IMEI_BASE As String = records(result.Columns.Get("CAT_LO_IDTELEFONO"))
|
||||||
|
Next
|
||||||
|
Log("|"&name&"|")
|
||||||
|
paso1 = 1
|
||||||
|
IMEI_BASE = ""
|
||||||
|
IMEI = ""
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Job.Release
|
||||||
|
End If
|
||||||
|
Log($"Paso1 = ${paso1} - Name: ${name} - IMEI: ${IMEI} - IMEI_BASE: ${IMEI_BASE}"$)
|
||||||
|
If paso1 = 1 Then
|
||||||
|
If IMEI = "" Then
|
||||||
|
If user.Text = "KMTS1" Then name = "OKActivo"
|
||||||
|
If name = "OKActivo" Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from usuarioa")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, pass.Text))
|
||||||
|
Starter.skmt.ExecNonQuery("delete from cat_almacen")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN))
|
||||||
|
usuario = user.Text
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
Else If name = "OKExpirado" Then
|
||||||
|
Msgbox("Usuario Expirado llamar al administrador","") 'Ignore
|
||||||
|
Else If name = "OKCancelado" Then
|
||||||
|
Msgbox("Usuario Cancelado llamar al administrador","") 'Ignore
|
||||||
|
Else
|
||||||
|
Msgbox("Usuario o password No validos","") 'Ignore
|
||||||
|
End If
|
||||||
|
paso1 = 0
|
||||||
|
Else
|
||||||
|
If name = "OKActivo" & IMEI And IMEI = IMEI_BASE Then
|
||||||
|
If name = "OKActivo" & IMEI Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from usuarioa")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, pass.Text))
|
||||||
|
Starter.skmt.ExecNonQuery("delete from cat_almacen")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN))
|
||||||
|
usuario = user.Text
|
||||||
|
B4XPages.ShowPage("Clientes")
|
||||||
|
Else If name = "OKExpirado"& IMEI Then
|
||||||
|
Msgbox("Usuario Expirado llamar al administrador","") 'ignore
|
||||||
|
Else If name = "OKCancelado"& IMEI Then
|
||||||
|
Msgbox("Usuario Cancelado llamar al administrador","") 'ignore
|
||||||
|
Else
|
||||||
|
Msgbox("Usuario o password No validos","") 'ignore
|
||||||
|
End If
|
||||||
|
paso1 = 0
|
||||||
|
Else IF name = "OKActivo" Then
|
||||||
|
Msgbox("Telefono no VALIDO!","") 'ignore
|
||||||
|
Else
|
||||||
|
Msgbox("Usuario o password No validos","") 'ignore
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
Log("closreq")
|
||||||
|
Sleep(0)
|
||||||
|
If p_appUpdate.Visible Then
|
||||||
|
Log("update visible")
|
||||||
|
p_appUpdate.Visible = False
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
If Not(p_appUpdate.Visible) Then
|
||||||
|
Log("ExitApplication")
|
||||||
|
ExitApplication
|
||||||
|
End If
|
||||||
|
Return True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub GPS_LocationChanged (Location1 As Location)
|
||||||
|
If user.text = "GPS" Then
|
||||||
|
user.Text=Location1.Latitude
|
||||||
|
pass.text=Location1.Longitude
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PopupMenu_Dismiss
|
||||||
|
ToastMessageShow("PopupMenu dismissed", False)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PopupMenu_MenuItemClick (ItemId As Int) As Boolean
|
||||||
|
ToastMessageShow("Item " & ItemId & " clicked.", False)
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_menu_Click
|
||||||
|
' PopupMenu.Show
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PDF_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Private Sub GetAdvertisingId As ResumableSub
|
||||||
|
' Dim jo As JavaObject = Me
|
||||||
|
' jo.RunMethod("GetAdvertisingId", Null)
|
||||||
|
' Wait For AdvertisingId_Ready (Success As Boolean, Id As String)
|
||||||
|
' Return Id
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
Sub dameUsuario
|
||||||
|
c=Starter.skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text))
|
||||||
|
c.Position=0
|
||||||
|
existe = c.GetString("EXISTE1")
|
||||||
|
c.Close
|
||||||
|
If existe > 0 Then
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
Else
|
||||||
|
usuario = "SINUSUARIO"
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'#if Java
|
||||||
|
'import java.util.concurrent.Callable;
|
||||||
|
'import com.google.android.gms.ads.identifier.AdvertisingIdClient;
|
||||||
|
'import com.google.android.gms.ads.identifier.AdvertisingIdClient.Info;
|
||||||
|
'
|
||||||
|
'public static void GetAdvertisingId() {
|
||||||
|
' BA.runAsync(processBA, mostCurrent, "advertisingid_ready", new Object[] {false, ""}
|
||||||
|
' , new Callable<Object[]>() {
|
||||||
|
' @Override
|
||||||
|
' public Object[] call() throws Exception {
|
||||||
|
' String id = AdvertisingIdClient.getAdvertisingIdInfo(mostCurrent).getId();
|
||||||
|
' return new Object[] {true, id};
|
||||||
|
' }
|
||||||
|
' }); }
|
||||||
|
'#End If
|
||||||
|
|
||||||
|
Sub copiaDB
|
||||||
|
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||||
|
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||||
|
Dim theDir As String = ""
|
||||||
|
If Result Then
|
||||||
|
' Private x As String
|
||||||
|
' If File.ExternalWritable Then
|
||||||
|
' x = File.DirRootExternal
|
||||||
|
' Else
|
||||||
|
' x = File.DirInternal
|
||||||
|
' End If
|
||||||
|
Dim theDir As String
|
||||||
|
Try
|
||||||
|
File.MakeDir(File.DirRootExternal,"kmts")
|
||||||
|
theDir = "/kmts"
|
||||||
|
Catch
|
||||||
|
theDir = ""
|
||||||
|
End Try
|
||||||
|
Try
|
||||||
|
File.Copy(File.DirInternal,"kmt.db",File.DirRootExternal&theDir, "profina_kmt.db")
|
||||||
|
ToastMessageShow("Listo, copiado a " & File.DirRootExternal&theDir & "/profina_kmt.db", False)
|
||||||
|
Catch
|
||||||
|
ToastMessageShow("No se pudo hacer la copia: "&LastException, True)
|
||||||
|
End Try
|
||||||
|
Else
|
||||||
|
ToastMessageShow("Sin permisos", False)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_apk_Click
|
||||||
|
StartService(appUpdater)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'appUpdater - Mostramos el anuncio de que se esta descargando el nuevo apk
|
||||||
|
Sub muestraProgreso(mensaje As String)
|
||||||
|
ProgressDialogShow(mensaje)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'appUpdater - Ocultamos el anuncio de que se esta descargando el nuevo apk
|
||||||
|
Sub ocultaProgreso
|
||||||
|
ProgressDialogHide
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub i_engrane_Click
|
||||||
|
lv_server.Clear
|
||||||
|
lv_server.AddSingleLine("http://keymon.lat:1781")
|
||||||
|
If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://11.0.0.89:1781")
|
||||||
|
' l_server.Text = Starter.DBReqServer
|
||||||
|
et_server.Text = Starter.DBReqServer
|
||||||
|
If user.Text = "KMTS1" Then b_importarBD.Visible = True Else b_importarBD.Visible = False
|
||||||
|
Subs.panelVisible(p_appUpdate,0,0)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_regesar_Click
|
||||||
|
p_appUpdate.Visible = False
|
||||||
|
Subs.panelVisible(p_Main,0,0)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub i_engrane_LongClick
|
||||||
|
copiaDB
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B_SERVER_Click
|
||||||
|
Starter.DBReqServer = et_server.text
|
||||||
|
If Logger Then Log("Inicializamos reqManager con " & Starter.DBReqServer)
|
||||||
|
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||||
|
CallSubDelayed2(Starter, "reinicializaReqManager", Starter.DBReqServer)
|
||||||
|
s.reqManagerReInit 'Inicializamos el reqManager de C_Subs.
|
||||||
|
Subs.panelVisible(p_Main,0,0)
|
||||||
|
p_appUpdate.Visible = False
|
||||||
|
' Entrar.Visible = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Entrar_LongClick
|
||||||
|
' dim a as int = "a"
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_server_ItemClick (Position As Int, Value As Object)
|
||||||
|
Starter.DBReqServer = Value
|
||||||
|
' l_server.Text = Value
|
||||||
|
et_server.Text = Value
|
||||||
|
Starter.reinicializaReqManager(Value)
|
||||||
|
' Starter.reqManager.Initialize(Me, Value)
|
||||||
|
ToastMessageShow("Servidor modificado", False)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Enviamos la base de datos por correo o Whatsapp
|
||||||
|
Private Sub b_envioBD_Click
|
||||||
|
' copiaDB
|
||||||
|
' Sleep(1000)
|
||||||
|
Dim FileName As String = "kmt.db"
|
||||||
|
'copy the shared file to the shared folder
|
||||||
|
Log("xxxxxx:"&Provider.SharedFolder)
|
||||||
|
Sleep(1000)
|
||||||
|
File.Copy(File.DirInternal, FileName, Provider.SharedFolder, FileName)
|
||||||
|
Dim email As Email
|
||||||
|
email.To.Add("cheveguerra@gmail.com")
|
||||||
|
email.Subject = "subject"
|
||||||
|
email.Attachments.Add(Provider.GetFileUri(FileName))
|
||||||
|
' email.Attachments.Add(Provider.GetFileUri(FileName)) 'second attachment
|
||||||
|
Dim in As Intent = email.GetIntent
|
||||||
|
in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION
|
||||||
|
StartActivity(in)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Revisa si la aplicación tiene permiso para acceder a las notificaciones.
|
||||||
|
Sub CheckNotificationAccess As Boolean
|
||||||
|
Dim ph As Phone
|
||||||
|
Dim nstr, pstr As String
|
||||||
|
Dim r As Reflector
|
||||||
|
pstr = r.GetStaticField("anywheresoftware.b4a.BA", "packageName")
|
||||||
|
nstr = ph.GetSettings("enabled_notification_listeners")
|
||||||
|
Return nstr.Contains(pstr)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_importarBD_Click
|
||||||
|
Private FH As FileHandler
|
||||||
|
FH.Initialize
|
||||||
|
Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar.
|
||||||
|
File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno.
|
||||||
|
Starter.skmt.Initialize(Starter.ruta,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada.
|
||||||
|
ToastMessageShow("¡BD importada!", False)
|
||||||
|
End Sub
|
||||||
126
B4A/BatteryUtilities.bas
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=9.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
'Class module
|
||||||
|
Sub Class_Globals
|
||||||
|
Private nativeMe As JavaObject
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
'Initializes the object.
|
||||||
|
Public Sub Initialize
|
||||||
|
nativeMe = Me
|
||||||
|
End Sub
|
||||||
|
'Return information about the battery status. It returns the following 11 values in an integer Array:
|
||||||
|
'EXTRA_LEVEL = current battery level, from 0 To EXTRA_SCALE.
|
||||||
|
'EXTRA_SCALE = the maximum battery level possible.
|
||||||
|
'EXTRA_HEALTH = the current health constant.
|
||||||
|
'EXTRA_ICON_SMALL = the resource ID of a small status bar icon indicating the current battery state.
|
||||||
|
'EXTRA_PLUGGED = whether the device is plugged into a Power source; 0 means it is on battery, other constants are different types of Power sources.
|
||||||
|
'EXTRA_STATUS = the current status constant.
|
||||||
|
'EXTRA_TEMPERATURE = the current battery temperature.
|
||||||
|
'EXTRA_VOLTAGE = the current battery voltage level.
|
||||||
|
'A value indicating if the battery is being charged or fully charged (If neither it returns 0 Else it returns 1)
|
||||||
|
'A value indicating if it is charging via USB (0 = Not USB, 2 = USB)
|
||||||
|
'A value indicating if it is charging via AC (0 = Not AC, 1 = AC)
|
||||||
|
Public Sub getBatteryInformation () As Int()
|
||||||
|
|
||||||
|
Dim batteryInfo(11) As Int
|
||||||
|
batteryInfo = nativeMe.RunMethod("getBatteryInformation",Null)
|
||||||
|
Return batteryInfo
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub getBatteryTechnolgy() As String
|
||||||
|
|
||||||
|
Dim batterytech As String
|
||||||
|
batterytech = nativeMe.RunMethod("getBatteryTechnology",Null)
|
||||||
|
Return batterytech
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#If Java
|
||||||
|
|
||||||
|
import android.os.BatteryManager;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
|
|
||||||
|
public int[] getBatteryInformation() {
|
||||||
|
|
||||||
|
int[] mybat = new int[11];
|
||||||
|
|
||||||
|
Intent batteryIntent = ba.context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
|
|
||||||
|
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
|
||||||
|
mybat[0] = level;
|
||||||
|
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
|
||||||
|
mybat[1] = scale;
|
||||||
|
int health = batteryIntent.getIntExtra(BatteryManager.EXTRA_HEALTH,-1);
|
||||||
|
mybat[2] = health;
|
||||||
|
int icon_small = batteryIntent.getIntExtra(BatteryManager.EXTRA_ICON_SMALL,-1);
|
||||||
|
mybat[3] = icon_small;
|
||||||
|
int plugged = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED,-1);
|
||||||
|
mybat[4] = plugged;
|
||||||
|
// boolean present = batteryIntent.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT);
|
||||||
|
int status = batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS,-1);
|
||||||
|
mybat[5] = status;
|
||||||
|
// String technology = batteryIntent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY);
|
||||||
|
// BA.Log("Technology = " + technology);
|
||||||
|
int temperature = batteryIntent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,-1);
|
||||||
|
mybat[6] = temperature;
|
||||||
|
int voltage = batteryIntent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,-1);
|
||||||
|
mybat[7] = voltage;
|
||||||
|
// int ac = batteryIntent.getIntExtra("plugged",BatteryManager.BATTERY_PLUGGED_AC);
|
||||||
|
// mybat[8] = ac;
|
||||||
|
// int usb = batteryIntent.getIntExtra("plugged",BatteryManager.BATTERY_PLUGGED_USB);
|
||||||
|
// mybat[9] = usb;
|
||||||
|
|
||||||
|
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
|
||||||
|
status == BatteryManager.BATTERY_STATUS_FULL;
|
||||||
|
mybat[8] = 0;
|
||||||
|
if (isCharging == true) {
|
||||||
|
mybat[8] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// How are we charging?
|
||||||
|
mybat[9] = 0;
|
||||||
|
mybat[10] = 0;
|
||||||
|
int chargePlug = batteryIntent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
|
||||||
|
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
|
||||||
|
if (usbCharge == true) {
|
||||||
|
mybat[9] = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
|
||||||
|
if (acCharge == true) {
|
||||||
|
mybat[10] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mybat;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getBatteryTechnology() {
|
||||||
|
|
||||||
|
Intent batteryIntent = ba.context.getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
|
|
||||||
|
String technology = batteryIntent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY);
|
||||||
|
|
||||||
|
return technology;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#End If
|
||||||
960
B4A/C_Cliente.bas
Normal file
@@ -0,0 +1,960 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub MODS 'ignore
|
||||||
|
'V3.04.10 - Se agregó código para el registro de abonos, en B4XMainPage se genera la tabla y aquí se agregó el panel p_abonos para ralizar el abono, y el codigo en el sub "mandaPendientes" para cambiar la bandera de enviado en el abono.
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
Private p_cliente As Panel
|
||||||
|
Dim reqManager As DBRequestManager
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
Dim ime As IME
|
||||||
|
|
||||||
|
Dim g As GPS
|
||||||
|
Dim ruta As String
|
||||||
|
Dim skmt As SQL
|
||||||
|
Dim clie_id As String
|
||||||
|
Dim sDate,sTime As String
|
||||||
|
Dim usuario As String
|
||||||
|
Dim total_cliente As String
|
||||||
|
Dim m_lat, m_lon As String
|
||||||
|
Dim btAdmin As BluetoothAdmin
|
||||||
|
Dim cmp20 As Serial
|
||||||
|
Dim printer As TextWriter
|
||||||
|
Dim PairedDevices As Map
|
||||||
|
Dim L As List
|
||||||
|
Dim TAMANO As Int
|
||||||
|
Dim ESPACIO As Int
|
||||||
|
Dim BLANCO As String
|
||||||
|
Dim cuenta As String
|
||||||
|
Dim tipo_venta As String = "PREVENTA"
|
||||||
|
Dim MAC_IMPRESORA As String
|
||||||
|
|
||||||
|
Dim c As Cursor
|
||||||
|
Dim s As Cursor
|
||||||
|
Dim DD As Cursor
|
||||||
|
Dim c2 As Cursor
|
||||||
|
Dim ListView1 As ListView
|
||||||
|
Dim la_cuenta As Label
|
||||||
|
Dim La_nombre As Label
|
||||||
|
Dim la_Calle As Label
|
||||||
|
Dim la_numero As Label
|
||||||
|
Dim la_nint As Label
|
||||||
|
Dim la_edo As Label
|
||||||
|
Dim la_pob As Label
|
||||||
|
Dim la_col As Label
|
||||||
|
Dim la_cp As Label
|
||||||
|
Dim la_zona As Label
|
||||||
|
Dim gest As Button
|
||||||
|
Dim la_saldotot As Label
|
||||||
|
Dim la_saldooper As Label
|
||||||
|
|
||||||
|
Dim Tels As Button
|
||||||
|
Dim Label10 As Label
|
||||||
|
Dim Label11 As Label
|
||||||
|
|
||||||
|
Dim Tar As Button
|
||||||
|
|
||||||
|
Dim la_comm As Label
|
||||||
|
Dim la_actdte As Label
|
||||||
|
Dim la_usuario As Label
|
||||||
|
Dim la_resultado As Label
|
||||||
|
Dim l_entre1 As Label
|
||||||
|
Dim l_entre2 As Label
|
||||||
|
Dim l_atiende As Label
|
||||||
|
Dim l_atiende2 As Label
|
||||||
|
Dim DATOS As Button
|
||||||
|
Dim Guardar As Button
|
||||||
|
Dim NUEVO As Button
|
||||||
|
' Dim lat_gps, lon_gps As String
|
||||||
|
|
||||||
|
Dim l_total As Label
|
||||||
|
Dim c2 As Cursor
|
||||||
|
Dim S2 As Cursor
|
||||||
|
Private s As Cursor
|
||||||
|
Dim res As String
|
||||||
|
Private HIST As Button
|
||||||
|
Private MONTO_COMPRA As String
|
||||||
|
Private META As String
|
||||||
|
Private META2 As String
|
||||||
|
Private VERIFICA As String
|
||||||
|
Private L_QR As Label
|
||||||
|
Private BT_QR As Button
|
||||||
|
'Private qr As QRCode
|
||||||
|
Dim CODIGO As String
|
||||||
|
|
||||||
|
Private b_mapa As Button
|
||||||
|
Dim CUANTOS As String
|
||||||
|
Private B_IMP As Button
|
||||||
|
Dim Toggla As Toggle
|
||||||
|
Dim tgl As Toggle
|
||||||
|
Private Panel1 As Panel
|
||||||
|
Private I_COMPRA As EditText
|
||||||
|
Private B_GUARDA_C As Button
|
||||||
|
Private b_venta As Button
|
||||||
|
Dim ALMACEN As String
|
||||||
|
Private LA_GPS As Label
|
||||||
|
Private B_E_NEXT As Button
|
||||||
|
Private E_RES_E As EditText
|
||||||
|
Private t_tenc As Label
|
||||||
|
Private Panel2 As Panel
|
||||||
|
Private CONTADOR_E As String
|
||||||
|
Private HR_RES1 As String
|
||||||
|
Private HR_RES2 As String
|
||||||
|
Private HR_RES3 As String
|
||||||
|
Private EXISTE As String
|
||||||
|
Private TELEFONO As String
|
||||||
|
|
||||||
|
Private RB1 As RadioButton
|
||||||
|
Private RB2 As RadioButton
|
||||||
|
Private RB3 As RadioButton
|
||||||
|
Private RB4 As RadioButton
|
||||||
|
Private RB5 As RadioButton
|
||||||
|
|
||||||
|
Private stay_hh As String
|
||||||
|
Private stay_mi As String
|
||||||
|
Private stay_ss As String
|
||||||
|
|
||||||
|
Private LA_GEO As Label
|
||||||
|
Dim result As Int
|
||||||
|
Private cercavalor As String
|
||||||
|
Private LA_RUTA As String
|
||||||
|
|
||||||
|
Private b_like As Button
|
||||||
|
Private B_GPS As Button
|
||||||
|
Dim CODIGO As String
|
||||||
|
Private cb_factura As CheckBox
|
||||||
|
Private p_cbFactura As Panel
|
||||||
|
Dim venimosDeTicketsDia As Boolean = False
|
||||||
|
Private p_abono As Panel
|
||||||
|
Private et_abono As EditText
|
||||||
|
Private b_abono As Button
|
||||||
|
Private b_cancelar As Button
|
||||||
|
Private b_abono1 As Button
|
||||||
|
Private Label20 As Label
|
||||||
|
Private l_calle1 As Label
|
||||||
|
Private l_ubicacion2 As Label
|
||||||
|
Private l_version As Label
|
||||||
|
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)
|
||||||
|
B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||||
|
Root = Root1
|
||||||
|
'load the layout to Root
|
||||||
|
' Activity.RemoveAllViews
|
||||||
|
Root.LoadLayout("cliente")
|
||||||
|
l_version.Text = Application.VersionName
|
||||||
|
Subs.centraPanel(Panel1, Root.Width)
|
||||||
|
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)
|
||||||
|
c = 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 from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||||
|
s = skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
s.Position = 0
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
c.Position = 0
|
||||||
|
la_cuenta.Text = c.GetString("CAT_CL_CODIGO")
|
||||||
|
cuenta = c.GetString("CAT_CL_CODIGO")
|
||||||
|
La_nombre.Text = c.GetString("CAT_CL_NOMBRE")
|
||||||
|
la_Calle.Text = c.GetString("CAT_CL_CALLE") & c.GetString("CAT_CL_NOEXT")
|
||||||
|
la_col.Text = c.GetString("CAT_CL_COLONIA")
|
||||||
|
la_edo.Text = c.GetString("CAT_CL_EDO")
|
||||||
|
' la_cp.Text = c.GetString("CAT_CL_CP")
|
||||||
|
l_entre1.Text = c.GetString("CAT_CL_NOEXT")
|
||||||
|
l_entre2.Text = c.GetString("CAT_CL_NOINT")
|
||||||
|
l_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
|
||||||
|
l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2")
|
||||||
|
la_saldotot.Text = c.GetString("CAT_CL_TELEFONO")
|
||||||
|
la_saldooper.Text = c.GetString("CAT_CL_EMAIL")
|
||||||
|
l_total.Text = s.GetString("TOTAL_CLIE")
|
||||||
|
total_cliente = s.GetString("TOTAL_CLIE")
|
||||||
|
MONTO_COMPRA = c.GetString("CAT_CL_MTOCOMPRA")
|
||||||
|
Label20.Text = c.GetString("CAT_CL_CP")
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
s.Close
|
||||||
|
btAdmin.Initialize("BlueTeeth")
|
||||||
|
cmp20.Initialize("Printer")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||||
|
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
|
||||||
|
' Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean)
|
||||||
|
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
||||||
|
' Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean)
|
||||||
|
Tels.Visible = True
|
||||||
|
gest.Visible = True
|
||||||
|
LA_GPS.TextColor = Colors.Red
|
||||||
|
LA_GPS.Text = "SIN UBICACION GPS"
|
||||||
|
cercavalor = 0
|
||||||
|
If Not(Starter.gps.GPSEnabled) Then
|
||||||
|
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||||
|
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||||
|
End If
|
||||||
|
cb_factura.Checked = False
|
||||||
|
p_abono.Visible = False
|
||||||
|
Subs.centraPanel(p_abono, Root.Width)
|
||||||
|
skmt.Initialize(ruta,"kmt.db", True)
|
||||||
|
c=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)")
|
||||||
|
s=skmt.ExecQuery("Select SUM(PE_COSTO_TOT) 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.Position=0
|
||||||
|
If c.RowCount > 0 Then
|
||||||
|
c.Position=0
|
||||||
|
la_cuenta.Text = c.GetString("CAT_CL_CODIGO")
|
||||||
|
La_nombre.Text = c.GetString("CAT_CL_NOMBRE")
|
||||||
|
la_Calle.Text = c.GetString("CAT_CL_CALLE")
|
||||||
|
la_col.Text = c.GetString("CAT_CL_COLONIA")
|
||||||
|
la_edo.Text = c.GetString("CAT_CL_EDO")
|
||||||
|
l_entre1.Text = c.GetString("CAT_CL_NOEXT")
|
||||||
|
l_entre2.Text = c.GetString("CAT_CL_NOINT")
|
||||||
|
l_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
|
||||||
|
l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2")
|
||||||
|
Label20.Text = c.GetString("CAT_CL_CP")
|
||||||
|
l_calle1.Text = c.GetString("CAT_CL_CALLE1")
|
||||||
|
TELEFONO = c.GetString("CAT_CL_TELEFONO")
|
||||||
|
l_total.Text = s.GetString("TOTAL_CLIE")
|
||||||
|
total_cliente = s.GetString("TOTAL_CLIE")
|
||||||
|
Private factura As String = 0
|
||||||
|
If s.GetString("PC_FACTURA") <> Null And IsNumber(s.GetString("PC_FACTURA")) Then factura = s.GetString("PC_FACTURA")
|
||||||
|
If factura = "1" Then cb_factura.Checked = True
|
||||||
|
m_lat = "0"
|
||||||
|
If c.GetString("CAT_CL_LAT") <> "" Then m_lat =c.GetString("CAT_CL_LAT")
|
||||||
|
If m_lat.Length < 5 Then m_lat = "0"
|
||||||
|
m_lon = "0"
|
||||||
|
If c.GetString("CAT_CL_LONG") <> "" Then m_lon =c.GetString("CAT_CL_LONG")
|
||||||
|
If m_lon.Length < 5 Then m_lon = "0"
|
||||||
|
LA_RUTA = c.GetString("CAT_CL_RUTA")
|
||||||
|
' ESTO ES PARA FORZAR A PEDIR LA FOTO Y EL GPS
|
||||||
|
If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then
|
||||||
|
L_QR.TEXT = "SIN CODIGO"
|
||||||
|
L_QR.TextColor = Colors.Red
|
||||||
|
gest.VISIBLE = False
|
||||||
|
BT_QR.Visible = True
|
||||||
|
Else
|
||||||
|
L_QR.TEXT = c.GetString("CAT_CL_NUM_SERIEFISICO")
|
||||||
|
L_QR.TextColor = Colors.Blue
|
||||||
|
BT_QR.Visible = False
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
s.Close
|
||||||
|
S2=skmt.ExecQuery("select count(*) AS CUANTOS from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
S2.Position =0
|
||||||
|
CUANTOS = S2.GetString("CUANTOS")
|
||||||
|
S2.Close
|
||||||
|
If CUANTOS > 0 Then
|
||||||
|
c2=skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS TOTAL from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
c2.Position =0
|
||||||
|
MONTO_COMPRA = c2.GetString("TOTAL")
|
||||||
|
c2.Close
|
||||||
|
Else
|
||||||
|
MONTO_COMPRA = "0"
|
||||||
|
End If
|
||||||
|
|
||||||
|
la_saldotot.Text = MONTO_COMPRA
|
||||||
|
If MONTO_COMPRA <> "0" Then
|
||||||
|
META2 = 1200 - MONTO_COMPRA
|
||||||
|
Else
|
||||||
|
META2 = 1200
|
||||||
|
End If
|
||||||
|
If META2 < 1 Then
|
||||||
|
META2 = "CUBIERTO"
|
||||||
|
End If
|
||||||
|
la_saldooper.Text = META2
|
||||||
|
c=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
|
||||||
|
If ALMACEN = "1" Then
|
||||||
|
Tels.Visible = False
|
||||||
|
gest.Visible = False
|
||||||
|
' B_GPS.Visible = False
|
||||||
|
End If
|
||||||
|
If ALMACEN = "4" Then
|
||||||
|
' b_like.Visible = True
|
||||||
|
DD=skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String("KNORR RINDE MAS 70 GR"))
|
||||||
|
DD.Position =0
|
||||||
|
If DD.GetString("CUANTOS") = 0 Then
|
||||||
|
c=skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) AND PE_PRONOMBRE =?", Array As String("KNORR RINDE MAS 70 GR"))
|
||||||
|
c.Position =0
|
||||||
|
' If c.GetString("CUANTOS") = 0 Then
|
||||||
|
' b_like.Visible = True
|
||||||
|
' Else
|
||||||
|
' b_like.Visible = False
|
||||||
|
' End If
|
||||||
|
c.Close
|
||||||
|
Else
|
||||||
|
' b_like.Visible = False
|
||||||
|
End If
|
||||||
|
DD.Close
|
||||||
|
Else
|
||||||
|
' b_like.Visible = False
|
||||||
|
End If
|
||||||
|
If ALMACEN = "16" Or ALMACEN = "13" Then
|
||||||
|
Tels.Visible = True
|
||||||
|
gest.Visible = True
|
||||||
|
End If
|
||||||
|
CallSubDelayed(Tracker, "Track")
|
||||||
|
|
||||||
|
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")
|
||||||
|
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
|
||||||
|
' Tels.Visible = True
|
||||||
|
' gest.Visible = True
|
||||||
|
'Si el cliente es nuevo, no aparece el boton de venta
|
||||||
|
If la_cuenta.text.SubString2(0,1) = "N" Then gest.Visible = False
|
||||||
|
If LA_GPS.TextColor = Colors.Blue Then
|
||||||
|
Tels.Visible = True
|
||||||
|
gest.Visible = True
|
||||||
|
Else
|
||||||
|
Tels.Visible = False
|
||||||
|
gest.Visible = False
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub GPS_LocationChanged (Location1 As Location)
|
||||||
|
' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red)
|
||||||
|
If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then
|
||||||
|
B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude
|
||||||
|
B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude
|
||||||
|
' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim l1, l2 As Location
|
||||||
|
l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)
|
||||||
|
' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$)
|
||||||
|
l2.Initialize2(m_lat, m_lon)
|
||||||
|
|
||||||
|
BT_QR.Enabled = True
|
||||||
|
LA_GPS.TextColor = Colors.Blue
|
||||||
|
LA_GPS.Text = "CON UBICACION GPS"
|
||||||
|
' B_GPS.Enabled = True
|
||||||
|
'now we need the distance between our location and the target location
|
||||||
|
Dim distance As Long
|
||||||
|
distance = l1.DistanceTo(l2) 'the result is in meter
|
||||||
|
gest.Visible = True
|
||||||
|
Log(distance)
|
||||||
|
If distance < 30 Then
|
||||||
|
Tels.Visible = True
|
||||||
|
gest.Visible = True
|
||||||
|
LA_GEO.TextColor = Colors.Blue
|
||||||
|
Else If distance > 30 Then
|
||||||
|
Tels.Visible = False
|
||||||
|
gest.Visible = False
|
||||||
|
LA_GEO.TextColor = Colors.Red
|
||||||
|
End If
|
||||||
|
LA_GEO.Text= $"$1.2{distance/1000} kms"$
|
||||||
|
skmt.ExecNonQuery("DELETE FROM HIST_GPS")
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
|
||||||
|
|
||||||
|
l_ubicacion2.TextSize = 13
|
||||||
|
l_ubicacion2.Text = $"Precisión GPS $1.0{Location1.Accuracy} m"$
|
||||||
|
If Location1.Accuracy > 200 Then
|
||||||
|
l_ubicacion2.TextColor = Colors.Red
|
||||||
|
l_ubicacion2.TextSize = 16
|
||||||
|
l_ubicacion2.Text = $"Mala señal $1.0{Location1.Accuracy} m"$
|
||||||
|
End If
|
||||||
|
|
||||||
|
CallSubDelayed(Tracker, "CreateLocationRequest")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub ListView1_ItemLongClick (Position As Int, Value As Object)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub gest_Click
|
||||||
|
B4XPages.MainPage.tipo_venta = "PREVENTA"
|
||||||
|
|
||||||
|
'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")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Tels_Click
|
||||||
|
B4XPages.ShowPage("NoVenta")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
' BACK key pressed
|
||||||
|
' Return True To close, False To cancel
|
||||||
|
' Log($"venimosDeTicketsDia=${venimosDeTicketsDia}"$)
|
||||||
|
If IsNumber(l_total.text) And l_total.text <> "0" And Not(Subs.pedidoGuardado) Then
|
||||||
|
LogColor("Hay Venta", Colors.Red)
|
||||||
|
Private resultado1 As Int = Msgbox2($"Va salir sin haber guardado la venta, si continua, la venta se BORRARA.${CRLF}${CRLF}¿Esta seguro que desea continuar?"$, "SE VA A BORRAR LA VENTA", "Borrar Venta", "Guardar Venta", "", LoadBitmap(File.DirAssets,"alert2.png"))
|
||||||
|
If resultado1 = DialogResponse.POSITIVE Then
|
||||||
|
Log("Borrra venta")
|
||||||
|
Subs.borraPedidoClienteActual
|
||||||
|
ToastMessageShow("Venta Borrada", False)
|
||||||
|
' venimosDeTicketsDia = False
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
else if resultado1=DialogResponse.CANCEL Then
|
||||||
|
Log("Pedido guardado")
|
||||||
|
Guardar_Click
|
||||||
|
ToastMessageShow("Venta Guardada", False)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
ToastMessageShow("Por favor presione GUARDAR para continuar", True)
|
||||||
|
' venimosDeTicketsDia = False
|
||||||
|
' B4XPages.ShowPage("Clientes")
|
||||||
|
' Return True
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Tar_Click
|
||||||
|
B4XPages.ShowPage("Nota")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Tar_LongClick
|
||||||
|
p_abono.Visible = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub DATOS_Click
|
||||||
|
B4XPages.ShowPage("telefonos")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Guardar_Click
|
||||||
|
|
||||||
|
If l_total.Text = Null Or l_total.Text = "null" Then
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
Log("aqui no guarde nada")
|
||||||
|
Else If l_total.Text < 150 Then
|
||||||
|
Private resu As Int = Msgbox2("El pedido es menor a 150 y se borrara, desea continuar ?","Atención", "Continuar", "", "Cancelar",LoadBitmap(File.DirAssets,"alert2.png"))
|
||||||
|
|
||||||
|
If resu = DialogResponse.POSITIVE Then
|
||||||
|
Subs.borraPedidoClienteActual
|
||||||
|
ToastMessageShow("Venta Borrada", False)
|
||||||
|
B4XPage_Appear
|
||||||
|
End If
|
||||||
|
|
||||||
|
Else
|
||||||
|
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
c=skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
c.Close
|
||||||
|
c = skmt.ExecQuery("Select sum(pe_costo_tot) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, COUNT(*) As CUANTOS, PC_ENVIO_OK FROM PEDIDO left join PEDIDO_CLIENTE Where pc_cliente = pe_cliente And PE_CLIENTE IN (Select cuenta from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
If c.GetString("CUANTOS") > 0 Then
|
||||||
|
Private cbFactura As Int = 0
|
||||||
|
If cb_factura.Checked Then cbFactura = 1
|
||||||
|
skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_ENVIO_OK, PC_FACTURA) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, c.GetString("PC_ENVIO_OK"), cbFactura))
|
||||||
|
skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
DateTime.TimeFormat = "HHmmss"
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_OUT = ? where HSS_OUT = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(sTime))
|
||||||
|
' skmt.ExecNonQuery("UPDATE HIST_STAY_STORE set HSS_TOT = HSS_OUT - HSS_IN where HSS_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
Try
|
||||||
|
c=skmt.ExecQuery("Select (substr(HSS_OUT,1,2) - substr(HSS_IN,1,2)) - Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then 1 Else 0 end HORAS_TOTALES, " & _
|
||||||
|
"Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then (substr(HSS_OUT,3,2) + 60 - substr(HSS_IN,3,2)) " & _
|
||||||
|
" Else (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) End - Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then 1 Else 0 end MINUTOS_TOTALES, " & _
|
||||||
|
"Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then (substr(HSS_OUT,5,2) + 60 - substr(HSS_IN,5,2)) " & _
|
||||||
|
" Else (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) end SEGUNDOS_TOTALES " & _
|
||||||
|
" from HIST_STAY_STORE where HSS_CODIGO In (Select cuenta from cuentaa) ")
|
||||||
|
c.Position = 0
|
||||||
|
stay_hh = c.GetString("HORAS_TOTALES") * 60 * 60
|
||||||
|
stay_mi = c.GetString("MINUTOS_TOTALES") * 60
|
||||||
|
stay_ss = c.GetString("SEGUNDOS_TOTALES")
|
||||||
|
skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_TOT = ? where HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(stay_hh + stay_mi + stay_ss))
|
||||||
|
skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_FIN = ? ", Array As Object(sTime))
|
||||||
|
c.Close
|
||||||
|
Catch
|
||||||
|
ToastMessageShow(".",True)
|
||||||
|
End Try
|
||||||
|
|
||||||
|
skmt.ExecNonQuery2("update PEDIDO_INICIO_FINAL set PIF_HORA_FINAL = ? where PIF_CLIENTE = ? and PIF_HORA_FINAL = 0", Array As Object (DateTime.Now, la_cuenta.Text))
|
||||||
|
' LogColor($"actualizamos "${la_cuenta.text}, hora_final=${DateTime.now}"$,Colors.Red)
|
||||||
|
Subs.actualizaTET(la_cuenta.text)
|
||||||
|
DateTime.TimeFormat = "HH:mm:ss"
|
||||||
|
|
||||||
|
' mandaPendientes 'LO COMENTAMOS PARA PRUEBAS, ACTIVAR AL FINAL!!!
|
||||||
|
|
||||||
|
B4XPages.MainPage.productos.reiniciarlistaProds = True
|
||||||
|
B4XPages.MainPage.productos.prodsMap.Initialize
|
||||||
|
B4XPages.MainPage.promos.promosMap.Initialize
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub NUEVO_Click
|
||||||
|
B4XPages.ShowPage("NuevoCliente")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub HIST_Click
|
||||||
|
B4XPages.ShowPage("Historico")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub BT_QR_Click
|
||||||
|
' sc.isportrait = True
|
||||||
|
' sc.timeoutDuration = 45
|
||||||
|
' sc.theViewFinderXfactor = 0.7
|
||||||
|
' sc.theViewFinderYfactor = 0.5
|
||||||
|
' sc.theResultColor = Colors.Green
|
||||||
|
' sc.mustVibrate = True
|
||||||
|
' sc.BeginScan("sc")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub sc_result(atype As String,Values As String, image As Bitmap)
|
||||||
|
'Log("Type : " & atype)
|
||||||
|
'Log("Value : " & Values)
|
||||||
|
CODIGO = Values
|
||||||
|
DD=skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM kmt_info WHERE CAT_CL_NUM_SERIEFISICO = ?", Array As String(CODIGO))
|
||||||
|
DD.Position =0
|
||||||
|
If DD.GetString("CUANTOS") > 0 Then
|
||||||
|
MsgboxAsync("Código ya asignado", "AVISO")
|
||||||
|
Else
|
||||||
|
If CODIGO.Length = 7 Then
|
||||||
|
Msgbox2Async("El código "& CODIGO & " es correcto?" , "Title", "Yes", "Cancel", "No", Null, False)
|
||||||
|
Wait For Msgbox_Result (resultado As Int)
|
||||||
|
If resultado = DialogResponse.POSITIVE Then
|
||||||
|
skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_NUM_SERIEFISICO = ?, CAT_CL_LONG = ?, CAT_CL_LAT =? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps))
|
||||||
|
L_QR.TEXT =CODIGO
|
||||||
|
L_QR.TextColor = Colors.Blue
|
||||||
|
skmt.ExecNonQuery2("insert into HIST_CODIGO_BARRAS(CODIGOKMTS, CODIGOB, LAT, LON) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text,CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps))
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
MsgboxAsync("Código No Valido", "AVISO")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
DD.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub sc_timedout(timedOut As Boolean)
|
||||||
|
Log("timedOut " & timedOut)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub sc_usercancelled(userCancelled As Boolean)
|
||||||
|
Log("userCancelled " & userCancelled)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub calc_ean_checksum(number As String) As String 'this has now become redundant as I am only interested in QR Codes
|
||||||
|
Dim i As Int
|
||||||
|
Dim cO As Char
|
||||||
|
Dim soma As Int
|
||||||
|
Dim n As Int
|
||||||
|
Dim digit As Float
|
||||||
|
soma = 0
|
||||||
|
For i=0 To number.Length - 1
|
||||||
|
digit = number.SubString2(i,i+1)
|
||||||
|
n= digit * ((i Mod 2) * 2 + 1)
|
||||||
|
soma=soma+n
|
||||||
|
Next
|
||||||
|
Return number & ( ( 10 - ( soma Mod 10 )) Mod 10 )
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_mapa_Click
|
||||||
|
B4XPages.ShowPage("mapas")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B_IMP_Click
|
||||||
|
TAMANO = 0
|
||||||
|
ESPACIO = 21
|
||||||
|
BLANCO = " "
|
||||||
|
printer.Initialize(cmp20.OutputStream)
|
||||||
|
printer.WriteLine("DURAKELO S.A. de C.V.")
|
||||||
|
printer.WriteLine("RFC: DUR-011025-T12")
|
||||||
|
printer.WriteLine("Tel.: 618-826-0104")
|
||||||
|
printer.WriteLine("Vendedor: KMTS ")
|
||||||
|
printer.WriteLine("Tienda: " & La_nombre.Text)
|
||||||
|
printer.WriteLine("-----------PREVENTA-----------")
|
||||||
|
s=skmt.ExecQuery("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
If S.RowCount>0 Then
|
||||||
|
For i=0 To S.RowCount -1
|
||||||
|
S.Position=i
|
||||||
|
printer.WriteLine(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE"))
|
||||||
|
TAMANO = s.GetLong("L_CANT") + TAMANO
|
||||||
|
TAMANO = s.GetLong("L_COSTOU") + TAMANO
|
||||||
|
TAMANO = s.GetLong("L_COSTO_TOT") + TAMANO
|
||||||
|
ESPACIO = ESPACIO - TAMANO
|
||||||
|
For E=0 To ESPACIO -1
|
||||||
|
BLANCO = " " & BLANCO
|
||||||
|
Next
|
||||||
|
printer.WriteLine(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") )
|
||||||
|
TAMANO = 0
|
||||||
|
ESPACIO = 21
|
||||||
|
BLANCO = " "
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
s.Close
|
||||||
|
printer.WriteLine("Total Preventa: $" & total_cliente)
|
||||||
|
printer.WriteLine("------------VENTA-------------")
|
||||||
|
printer.WriteLine(" ")
|
||||||
|
printer.WriteLine("TOTAL: $" & total_cliente)
|
||||||
|
printer.WriteLine(" ")
|
||||||
|
printer.WriteLine("----ESTE TICKET NO ES UN -----")
|
||||||
|
printer.WriteLine("--COMPROBANTE FISCAL, SOLO ES-")
|
||||||
|
printer.WriteLine("--------INFORMATIVO-----------")
|
||||||
|
printer.WriteLine("------------------------------")
|
||||||
|
printer.WriteLine(" ")
|
||||||
|
printer.Flush
|
||||||
|
' printer.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Printer_Connected (Success As Boolean)
|
||||||
|
If Success Then
|
||||||
|
B_IMP.Enabled = True
|
||||||
|
Else
|
||||||
|
B_IMP.Enabled = False
|
||||||
|
If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'Ignore
|
||||||
|
StartPrinter
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub StartPrinter
|
||||||
|
Dim PairedDevices As Map
|
||||||
|
Dim L As List
|
||||||
|
Dim resimp As Int
|
||||||
|
ToastMessageShow("Printing.....",True)
|
||||||
|
PairedDevices.Initialize
|
||||||
|
Try
|
||||||
|
PairedDevices = cmp20.GetPairedDevices
|
||||||
|
Catch
|
||||||
|
Msgbox("Getting Paired Devices","Printer Error") 'Ignore
|
||||||
|
printer.Close
|
||||||
|
cmp20.Disconnect
|
||||||
|
End Try
|
||||||
|
If PairedDevices.Size = 0 Then
|
||||||
|
Msgbox("Error Connecting to Printer - Printer Not Found","") 'Ignore
|
||||||
|
Return
|
||||||
|
End If
|
||||||
|
If PairedDevices.Size = 1 Then
|
||||||
|
Try
|
||||||
|
cmp20.ConnectInsecure(btAdmin,PairedDevices.Get(PairedDevices.GetKeyAt(0)),1)
|
||||||
|
Catch
|
||||||
|
Msgbox("Connecting","Printer Error") 'Ignore
|
||||||
|
printer.Close
|
||||||
|
cmp20.Disconnect
|
||||||
|
End Try
|
||||||
|
Else
|
||||||
|
L.Initialize
|
||||||
|
For i = 0 To PairedDevices.Size - 1
|
||||||
|
L.Add(PairedDevices.GetKeyAt(i))
|
||||||
|
Next
|
||||||
|
resimp = InputList(L, "Choose device", -1) 'Ignore
|
||||||
|
If resimp <> DialogResponse.CANCEL Then
|
||||||
|
cmp20.Connect(PairedDevices.Get(L.Get(resimp)))
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B_GUARDA_C_Click
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
c=skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
c.Close
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object ("4",.01 , .01, 2, "KNORR RINDE MAS 70 GR", "GUNA2",la_cuenta.TEXT, sDate & sTime, usuario,LA_RUTA))
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO HIST_FACE(HFCLIENTE, HFALIAS,HFRUTA,HFALMACEN) VALUES (?,?,?,?) ", Array As Object(la_cuenta.Text, I_COMPRA.Text,LA_RUTA,ALMACEN))
|
||||||
|
Panel1.Visible = False
|
||||||
|
' b_like.Visible = True
|
||||||
|
Tar.Visible = True
|
||||||
|
Tels.Visible = True
|
||||||
|
gest.Visible = True
|
||||||
|
' b_like.Visible = False
|
||||||
|
Guardar.Visible = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_venta_Click
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
' s=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_ENCUESTA where HE_CLIE In (Select cuenta from cuentaa)")
|
||||||
|
' s.Position= 0
|
||||||
|
' If s.GetString("CUANTOS") = 0 Then
|
||||||
|
' c=skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String("CUESTIONARIO"))
|
||||||
|
' c.Position =0
|
||||||
|
' If c.GetString("CAT_VA_VALOR") = "2" Then
|
||||||
|
' res = Msgbox2("El cliente maneja CAZARES ?","CAZARES", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'Ignore
|
||||||
|
' If res = DialogResponse.POSITIVE Then
|
||||||
|
' skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "SI",sDate & sTime,"TIENE"))
|
||||||
|
' Panel1.Visible =True
|
||||||
|
' I_COMPRA.Text = ""
|
||||||
|
' BT_QR.Visible= False
|
||||||
|
' Else
|
||||||
|
' skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "NO",sDate & sTime,"TIENE"))
|
||||||
|
' B4XPages.MainPage.tipo_venta = "VENTA"
|
||||||
|
' B4XPages.ShowPage("Productos")
|
||||||
|
' End If
|
||||||
|
' Else
|
||||||
|
' B4XPages.MainPage.tipo_venta = "VENTA"
|
||||||
|
' B4XPages.ShowPage("Productos")
|
||||||
|
' End If
|
||||||
|
' c.Close
|
||||||
|
' Else
|
||||||
|
' B4XPages.MainPage.tipo_venta = "VENTA"
|
||||||
|
' B4XPages.ShowPage("Productos")
|
||||||
|
' End If
|
||||||
|
' s.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B_E_NEXT_Click
|
||||||
|
If E_RES_E.Text <> "" Then
|
||||||
|
skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, E_RES_E.Text,sDate & sTime,"DONDE"))
|
||||||
|
Panel2.Visible = False
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
Else
|
||||||
|
Msgbox("SIN RESPUESTA","AVISO") 'Ignore
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub RB1_CheckedChange(Checked As Boolean)
|
||||||
|
If RB1.Checked = True Then
|
||||||
|
E_RES_E.Text = "CENTRAL DE ABASTOS"
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub RB2_CheckedChange(Checked As Boolean)
|
||||||
|
If RB2.Checked = True Then
|
||||||
|
E_RES_E.Text = "AUTOSERVICIO"
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub RB3_CheckedChange(Checked As Boolean)
|
||||||
|
If RB3.Checked = True Then
|
||||||
|
E_RES_E.Text = "CLUB DE PRECIO"
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub RB4_CheckedChange(Checked As Boolean)
|
||||||
|
If RB4.Checked = True Then
|
||||||
|
E_RES_E.Text = "DIRECTO PEDEGREE"
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_like_Click
|
||||||
|
' Panel1.Visible = True
|
||||||
|
' b_like.Visible = False
|
||||||
|
' Tar.Visible = False
|
||||||
|
' Tels.Visible = False
|
||||||
|
' gest.Visible = False
|
||||||
|
' b_venta.Visible = False
|
||||||
|
' Guardar.Visible = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B_GPS_Click
|
||||||
|
' Dim result As Int
|
||||||
|
' result = Msgbox2("Esta seguro de cambiar las coordenadas de este cliente", "Aviso GPS", "SI", "", "NO", LoadBitmap(File.DirAssets, "alerta.jpg")) 'Ignore
|
||||||
|
' If result = DialogResponse.Positive Then
|
||||||
|
' skmt.ExecNonQuery2("UPDATE kmt_info SET CAT_CL_LAT = ?, CAT_CL_LONG = ? where CAT_CL_CODIGO In (Select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
|
||||||
|
' B4XPage_Appear
|
||||||
|
' End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_cliente_Click
|
||||||
|
'Nada aqui, solo esta para que los clics no se pasen hacia atras.
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub cb_factura_CheckedChange(Checked As Boolean)
|
||||||
|
' Log(Checked)
|
||||||
|
If Checked Then p_cbFactura.Color = Colors.Green Else p_cbFactura.Color = Colors.red
|
||||||
|
End Sub
|
||||||
|
'
|
||||||
|
'Sub mandaPendientes
|
||||||
|
' Log("MandaPendientes")
|
||||||
|
' '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 FROM PEDIDO where PE_ENVIO_OK <> 1")
|
||||||
|
' 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 = "DELETE_PEDIDO_MARDS_PE"
|
||||||
|
'' cmd.Parameters = Array As Object(ALMACEN, B4XPages.MainPage.principal.l_ruta.text,c.GetString("PE_CLIENTE") )
|
||||||
|
'' reqManager.ExecuteCommand(cmd , "DEL_PE")
|
||||||
|
'
|
||||||
|
' cmd.Initialize
|
||||||
|
' cmd.Name = "insert_pedido_PRO"
|
||||||
|
' cmd.Parameters = Array As Object(C.GetString("PE_CEDIS"),ALMACEN,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"),"PREVENTA")
|
||||||
|
' reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}"$)
|
||||||
|
' Next
|
||||||
|
' End If
|
||||||
|
'
|
||||||
|
' 'PEDIDO_CLIENTE (Pendientes)
|
||||||
|
' c = 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 where PC_ENVIO_OK <> 1")
|
||||||
|
' Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$)
|
||||||
|
' If c.RowCount > 0 Then
|
||||||
|
' For i = 0 To c.RowCount - 1
|
||||||
|
' c.Position = i
|
||||||
|
' Log($"**************** PC_ENVIO_OK: ${c.GetString("PC_ENVIO_OK")} "$)
|
||||||
|
' Dim cmd As DBCommand
|
||||||
|
'' cmd.Initialize
|
||||||
|
'' cmd.Name = "DELETE_PEDIDO_MARDS_PC"
|
||||||
|
'' cmd.Parameters = Array As Object(ALMACEN, B4XPages.MainPage.principal.l_ruta.text,c.GetString("PC_CLIENTE") )
|
||||||
|
'' reqManager.ExecuteCommand(cmd , "DEL_PC")
|
||||||
|
'
|
||||||
|
' Dim cmd As DBCommand
|
||||||
|
' cmd.Initialize
|
||||||
|
' cmd.Name = "insert_pedidos_PRO"
|
||||||
|
' Log($"${c.GetString("PC_CLIENTE")}, ${ALMACEN}"$)
|
||||||
|
' 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"))
|
||||||
|
' reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_head_${c.GetString("PC_CLIENTE")}"$)
|
||||||
|
' Next
|
||||||
|
' End If
|
||||||
|
'
|
||||||
|
'' 'ABONOS
|
||||||
|
'' Dim ab As Cursor = 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_PRO"
|
||||||
|
'' 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") )
|
||||||
|
'' reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
|
||||||
|
'' Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
|
||||||
|
'' Next
|
||||||
|
'' End If
|
||||||
|
'' ab.Close
|
||||||
|
'
|
||||||
|
'' BANDERA FACTURA (Pendientes)
|
||||||
|
'' c=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
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
Sub JobDone(Job As HttpJob)
|
||||||
|
Log("JOBDONE CLIENTE . " & Job.Success)
|
||||||
|
If Job.Success = False Then
|
||||||
|
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||||
|
' LogColor("JobDone Error: '" & reqManager.HandleJob(Job).tag, Colors.red) 'Mod por CHV - 211027
|
||||||
|
Else
|
||||||
|
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If resultado.Tag.As(String).IndexOf("ins_pedidosPendientes_head_") > -1 Then
|
||||||
|
Private cliente As String= resultado.Tag
|
||||||
|
cliente = cliente.SubString(cliente.IndexOf("_")+24)
|
||||||
|
Log($"Cliente1:${cliente}"$)
|
||||||
|
For Each records() As Object In resultado.Rows
|
||||||
|
For Each k As String In resultado.Columns.Keys
|
||||||
|
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
skmt.ExecNonQuery($"UPDATE PEDIDO_CLIENTE set PC_ENVIO_OK = 1 where PC_CLIENTE = '${cliente}'"$)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If resultado.Tag.As(String).IndexOf("ins_pedidosPendientes_prods_") > -1 Then
|
||||||
|
Private cliente As String= resultado.Tag
|
||||||
|
cliente = cliente.SubString(cliente.IndexOf("_")+25)
|
||||||
|
Log($"Cliente2:${cliente}"$)
|
||||||
|
For Each records() As Object In resultado.Rows
|
||||||
|
For Each k As String In resultado.Columns.Keys
|
||||||
|
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
skmt.ExecNonQuery($"UPDATE PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${cliente}'"$)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
'ABONOS PENDIENTES
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If resultado.Tag.As(String).IndexOf("ins_abonosPendientes_") > -1 Then
|
||||||
|
Private cliente As String= resultado.Tag
|
||||||
|
cliente = cliente.SubString(cliente.IndexOf("_")+18)
|
||||||
|
Log($"Cliente2:${cliente}"$)
|
||||||
|
For Each records() As Object In resultado.Rows
|
||||||
|
For Each k As String In resultado.Columns.Keys
|
||||||
|
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
skmt.ExecNonQuery($"UPDATE ABONOS set a_enviado = 1 where a_cliente = '${cliente}'"$)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Job.Release
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_abono_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_abono_Click
|
||||||
|
p_abono.Visible = False
|
||||||
|
If et_abono.Text <> "" Then
|
||||||
|
Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
|
||||||
|
Wait For Msgbox_Result (resultado As Int)
|
||||||
|
If resultado = DialogResponse.POSITIVE Then
|
||||||
|
skmt.ExecNonQuery($"INSERT INTO ABONOS(a_usuario, a_ruta, a_cliente, a_abono, a_fecha) VALUES ('${Subs.traeUsuarioDeBD}', '${Subs.traeRuta}', '${Subs.traeCliente}' ,'${et_abono.text}', '${Subs.fechaKMT(DateTime.now)}')"$)
|
||||||
|
ToastMessageShow("Abono guardado", False)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
et_abono.Text = ""
|
||||||
|
ime.HideKeyboard
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_cancelar_Click
|
||||||
|
et_abono.Text = ""
|
||||||
|
p_abono.Visible = False
|
||||||
|
ime.HideKeyboard
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_abono1_Click
|
||||||
|
p_abono.Visible = True
|
||||||
|
End Sub
|
||||||
246
B4A/C_Clientes.bas
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Mods
|
||||||
|
'20230526 -
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
|
||||||
|
' Dim skmt As SQL
|
||||||
|
Dim c As Cursor
|
||||||
|
Dim c2 As Cursor
|
||||||
|
Dim s As Cursor
|
||||||
|
Dim ListView1 As ListView
|
||||||
|
Dim entro As String
|
||||||
|
Dim gest As Button
|
||||||
|
Dim lfila As Label
|
||||||
|
Dim busca As EditText
|
||||||
|
Dim colonia As String
|
||||||
|
Private b_qr As Button
|
||||||
|
Private qr As QRCode
|
||||||
|
' Dim sc As Zxing_scanner
|
||||||
|
Dim CODIGO As String
|
||||||
|
Dim STIME As String
|
||||||
|
|
||||||
|
Dim ruta As String
|
||||||
|
Dim q_buscar As String
|
||||||
|
Private p_clientes 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("clientes")
|
||||||
|
'Dim ruta As String
|
||||||
|
entro ="2"
|
||||||
|
' valido donde escribo el archivo de la base de datos de kmt
|
||||||
|
' If File.ExternalWritable Then
|
||||||
|
' ruta = File.DirDefaultExternal
|
||||||
|
' Else
|
||||||
|
ruta = File.DirInternal
|
||||||
|
' End If
|
||||||
|
|
||||||
|
' se crea o no el archivo de la base de ddatos de kmt
|
||||||
|
'NOTAS SI SE MODIFICA LA ESTRUCTURA SE QUITA EL IF Y SE VA DIRECTO A LA SENTENCIA FILE.COPY PARA QUE
|
||||||
|
'TOME LA NUEVA ESTRUCTURA ES MUY IMPORTANTE TENER EL IF DE LO CONTRARIO SOLO LO ESCRIBE UNA VEZ Y LO BORRA
|
||||||
|
'SI SE REGRESA A ESTE ACTIVIDAD.
|
||||||
|
If File.Exists(ruta, "kmt.db") = False Then
|
||||||
|
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||||
|
End If
|
||||||
|
qr.initialize
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
B4XPages.SetTitle(Me, $"Clientes - ${Application.VersionName}"$)
|
||||||
|
busca.Text = ""
|
||||||
|
entro ="2"
|
||||||
|
colonia = 0
|
||||||
|
c=Starter.skmt.ExecQuery("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO, CAT_CL_NOEXT, CAT_CL_CALLE1 from kmt_info where gestion = 0 ORDER BY CAT_CL_CODIGO")
|
||||||
|
ListView1.Clear
|
||||||
|
' Log("LIMPIAMOS LISTVIEW")
|
||||||
|
lfila.Text = "NOMBRE"
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = ListView1.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 14
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 14
|
||||||
|
label2.TextColor = Colors.Black
|
||||||
|
label2.Height = 50dip
|
||||||
|
label2.Width = ListView1.Width * 0.99
|
||||||
|
ListView1.TwoLinesLayout.ItemHeight = 85dip
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
c.Position=i
|
||||||
|
' Log($"${c.GetString("CAT_CL_CODIGO")}, ${c.GetString("CAT_CL_NOMBRE")}"$)
|
||||||
|
' ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO") & " - " & c.GetString("CAT_CL_SECUENCIA"), c.GetString("CAT_CL_NOMBRE") & ", " & c.GetString("CAT_CL_CALLE") & ", " & c.GetString("CAT_CL_NOEXT"))
|
||||||
|
ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO") , c.GetString("CAT_CL_NOMBRE") & CRLF & "Calle: " & c.GetString("CAT_CL_CALLE")& ", No. ext.:" & c.GetString("CAT_CL_NOEXT"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
p_clientes.Height = Root.Height
|
||||||
|
ListView1.Height = Root.Height * 0.75
|
||||||
|
entro = "4"
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub ListView1_ItemClick (Position As Int, Value As Object)
|
||||||
|
Private value2() As String = Regex.Split(" - ", Value)
|
||||||
|
|
||||||
|
If colonia = 0 Then
|
||||||
|
colonia = value2(0)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Log("-------------------------------" & value2(0))
|
||||||
|
|
||||||
|
If entro = "2" Then
|
||||||
|
c2=Starter.skmt.ExecQuery2("select CAT_CL_CALLE, CAT_CL_COLONIA, count(*) as cuantos from kmt_info where gestion = 0 and CAT_CL_COLONIA = ? GROUP BY CAT_CL_CALLE, CAT_CL_COLONIA order by CAT_CL_CALLE ", Array As String(value2(0)))
|
||||||
|
ListView1.Clear
|
||||||
|
lfila.text = "Calle"
|
||||||
|
If c2.RowCount>0 Then
|
||||||
|
For i=0 To c2.RowCount -1
|
||||||
|
c2.Position=i
|
||||||
|
ListView1.AddTwoLines(c2.GetString("CAT_CL_CALLE"),c2.GetString("cuantos") )
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
entro = "3"
|
||||||
|
Else If entro = "3" Then
|
||||||
|
c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where gestion = 0 and CAT_CL_CALLE = ? AND CAT_CL_COLONIA = ? order by CAT_CL_NOMBRE ", Array As String(value2(0), colonia))
|
||||||
|
ListView1.Clear
|
||||||
|
lfila.text = "Nombre"
|
||||||
|
If c2.RowCount>0 Then
|
||||||
|
For i=0 To c2.RowCount -1
|
||||||
|
c2.Position=i
|
||||||
|
ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
entro = "4"
|
||||||
|
Else If entro = "4" Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from CUENTAA")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(value2(0)))
|
||||||
|
DateTime.TimeFormat = "HHmmss"
|
||||||
|
STIME=DateTime.Time(DateTime.Now)
|
||||||
|
|
||||||
|
s=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_STAY_STORE WHERE HSS_IN = ? AND HSS_CODIGO In (select cuenta from cuentaa)", Array As String("0"))
|
||||||
|
s.Position = 0
|
||||||
|
If s.GetString("CUANTOS") = 1 Then
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||||
|
Else
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (value2(0)))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||||
|
End If
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_INI = ? where HSO_INI = 0 ", Array As Object(STIME))
|
||||||
|
DateTime.TimeFormat = "HH:mm:ss"
|
||||||
|
|
||||||
|
Subs.guardaClienteHoraInicio(value2(0))
|
||||||
|
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
' BACK key pressed
|
||||||
|
'Return True to close, False to cancel
|
||||||
|
' If key=KeyCodes.KEYCODE_BACK Then
|
||||||
|
' StartActivity(seleccion)
|
||||||
|
' Return False
|
||||||
|
' End If
|
||||||
|
Return True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub BUSCA_TextChanged (Old As String, New As String)
|
||||||
|
' Log($"${Old} - ${New}"$)
|
||||||
|
If Old <> "" And New <> "" Then
|
||||||
|
' Log("BUSCA_TEXTCHANGED")
|
||||||
|
q_buscar = "%" & busca.Text & "%"
|
||||||
|
c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE,CAT_CL_NOEXT, CAT_CL_CODIGO, CAT_CL_CALLE from kmt_info where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ? OR CAT_CL_CALLE LIKE ?)and gestion = 0 order by CAT_CL_NOMBRE ", Array As String(q_buscar,q_buscar,q_buscar))
|
||||||
|
ListView1.Clear
|
||||||
|
lfila.text = "Nombre y Calle"
|
||||||
|
' Log("=========================================================================")
|
||||||
|
If c2.RowCount > 0 Then
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = ListView1.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 14
|
||||||
|
label1.TextColor = Colors.DarkGray
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 14
|
||||||
|
label2.Height = 50dip
|
||||||
|
label2.Width = ListView1.Width * 0.99
|
||||||
|
label2.TextColor = Colors.DarkGray
|
||||||
|
' ListView1.TwoLinesLayout.ItemHeight = 350dip
|
||||||
|
For i=0 To c2.RowCount -1
|
||||||
|
c2.Position=i
|
||||||
|
' Log($"${c2.GetString("CAT_CL_CODIGO")} - ${c2.GetString("CAT_CL_NOMBRE")}"$)
|
||||||
|
' ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") &" CALLE: "& c2.GetString("CAT_CL_CALLE"))
|
||||||
|
' ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") & CRLF & c2.GetString("CAT_CL_CALLE"))
|
||||||
|
ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO") , c2.GetString("CAT_CL_NOMBRE") & CRLF & "Calle: " & c2.GetString("CAT_CL_CALLE")& ", No. ext.:" & c2.GetString("CAT_CL_NOEXT"))
|
||||||
|
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
entro = "4"
|
||||||
|
c2.Close
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_qr_Click
|
||||||
|
Dim scan_width As Int
|
||||||
|
Dim scan_height As Int
|
||||||
|
scan_width = 400
|
||||||
|
scan_height = 400
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub sc_result(atype As String,Values As String)
|
||||||
|
CODIGO = Values
|
||||||
|
c2=Starter.skmt.ExecQuery2("select COUNT(*) AS ENCONTRADO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO))
|
||||||
|
c2.Position =0
|
||||||
|
If c2.GetString("ENCONTRADO") > 0 Then
|
||||||
|
s=Starter.skmt.ExecQuery2("select CAT_CL_CODIGO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO))
|
||||||
|
s.Position =0
|
||||||
|
Starter.skmt.ExecNonQuery("delete from CUENTAA")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(s.GetString("CAT_CL_CODIGO")))
|
||||||
|
s.Close
|
||||||
|
' b_qr.Visible = False
|
||||||
|
B4XPages.ShowPage("clientes")
|
||||||
|
Else
|
||||||
|
Msgbox("CODIGO " & CODIGO & " NO ENCONTRADO","AVISO") 'ignore
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub sc_noScan
|
||||||
|
Log("nothing returned from the scan !!!!!")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub calc_ean_checksum(number As String) As String 'this has now become redundant as I am only interested in QR Codes
|
||||||
|
Dim i As Int
|
||||||
|
Dim cO As Char
|
||||||
|
Dim soma As Int
|
||||||
|
Dim n As Int
|
||||||
|
Dim digit As Float
|
||||||
|
soma = 0
|
||||||
|
For i=0 To number.Length - 1
|
||||||
|
digit = number.SubString2(i,i+1)
|
||||||
|
n= digit * ((i Mod 2) * 2 + 1)
|
||||||
|
soma=soma+n
|
||||||
|
Next
|
||||||
|
Return number & ( ( 10 - ( soma Mod 10 )) Mod 10 )
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Private Sub p_clientes_Click
|
||||||
|
'Nada aqui, solo esta para que los clics no se pasen hacia atras.
|
||||||
|
End Sub
|
||||||
124
B4A/C_Historico.bas
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
|
||||||
|
Dim g As GPS
|
||||||
|
Dim clie_id As String
|
||||||
|
Dim sDate,sTime As String
|
||||||
|
Dim usuario As String
|
||||||
|
|
||||||
|
Dim c As Cursor
|
||||||
|
Dim ruta As String
|
||||||
|
Dim Regresar As Button
|
||||||
|
|
||||||
|
|
||||||
|
Dim ListView1 As ListView
|
||||||
|
Dim L_CANT As Label
|
||||||
|
Dim L_TOTAL As Label
|
||||||
|
Dim borra As Button
|
||||||
|
Dim Existe As String
|
||||||
|
Dim result As String
|
||||||
|
' Dim lat_gps, lon_gps As String
|
||||||
|
|
||||||
|
Private Titulo As Label
|
||||||
|
Private b_desc As Button
|
||||||
|
Private ListView2 As ListView
|
||||||
|
Dim tgl As Toggle
|
||||||
|
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)
|
||||||
|
B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||||
|
Root = Root1
|
||||||
|
'load the layout to Root
|
||||||
|
ruta = File.DirInternal
|
||||||
|
Root.LoadLayout("nota")
|
||||||
|
borra.Visible = False
|
||||||
|
Titulo.Text = "Acumulado"
|
||||||
|
b_desc.Visible = False
|
||||||
|
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
|
||||||
|
If Not(Starter.gps.GPSEnabled) Then
|
||||||
|
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||||
|
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||||
|
End If
|
||||||
|
L_CANT.Text =""
|
||||||
|
L_TOTAL.Text=""
|
||||||
|
c=Starter.skmt.ExecQuery("select count(*) as EXISTE from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
C.Position=0
|
||||||
|
Existe = C.GetString("EXISTE")
|
||||||
|
C.Close
|
||||||
|
c=Starter.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")
|
||||||
|
ListView1.Clear
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
c.Position=i
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = ListView1.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 10
|
||||||
|
label2.TextColor = Colors.Blue
|
||||||
|
ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
If Existe <> 0 Then
|
||||||
|
c=Starter.skmt.ExecQuery("select SUM(HVD_CANT) AS PC_NOART, SUM(HVD_COSTO_TOT) AS PC_MONTO from HIST_VENTAS where HVD_CLIENTE in (Select CUENTA from cuentaa)")
|
||||||
|
C.Position=0
|
||||||
|
L_CANT.Text = c.GetString("PC_NOART")
|
||||||
|
L_TOTAL.Text = c.GetString("PC_MONTO")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub GPS_LocationChanged (Location1 As Location)
|
||||||
|
'lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
|
||||||
|
'lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Regresar_Click
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
' BACK key pressed
|
||||||
|
' Return True To close, False To cancel
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub ListView2_ItemClick (Position As Int, Value As Object)
|
||||||
|
ListView2.Visible = False
|
||||||
|
ListView1.Visible = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub ListView1_ItemClick (Position As Int, Value As Object)
|
||||||
|
ListView2.Visible = True
|
||||||
|
ListView1.Visible = False
|
||||||
|
Dim label1 As Label
|
||||||
|
For i=0 To 20
|
||||||
|
label1 = ListView2.SingleLineLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
ListView2.AddSingleLine(i)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
24
B4A/C_Mapas.bas
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
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
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
178
B4A/C_NoVenta.bas
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
|
||||||
|
Dim g As GPS
|
||||||
|
Dim ruta As String
|
||||||
|
Dim skmt As SQL
|
||||||
|
Dim c As Cursor
|
||||||
|
|
||||||
|
Dim CANCELA As Button
|
||||||
|
Dim GUARDA As Button
|
||||||
|
Dim r_1 As RadioButton
|
||||||
|
Dim r_2 As RadioButton
|
||||||
|
Dim r_3 As RadioButton
|
||||||
|
Dim e_comm As EditText
|
||||||
|
Dim motivo As String
|
||||||
|
Dim cuenta As String
|
||||||
|
Dim usuario As String
|
||||||
|
Dim sDate,sTime As String
|
||||||
|
' Dim lat_gps, lon_gps As String
|
||||||
|
Dim tgl As Toggle
|
||||||
|
Dim r_4 As RadioButton
|
||||||
|
|
||||||
|
Private stay_hh As String
|
||||||
|
Private stay_mi As String
|
||||||
|
Private stay_ss As String
|
||||||
|
Dim reqManager As DBRequestManager
|
||||||
|
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)
|
||||||
|
B4XPages.SetTitle(Me, $"${subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||||
|
Root = Root1
|
||||||
|
'load the layout to Root
|
||||||
|
Root.LoadLayout("noventa")
|
||||||
|
ruta = File.DirInternal
|
||||||
|
' End If
|
||||||
|
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
|
||||||
|
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||||
|
e_comm.Text=""
|
||||||
|
tgl.Initialize
|
||||||
|
If Not(Starter.gps.GPSEnabled) Then
|
||||||
|
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||||
|
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub GPS_LocationChanged (Location1 As Location)
|
||||||
|
'lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
|
||||||
|
'lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub CANCELA_Click
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End Sub
|
||||||
|
Sub GUARDA_Click
|
||||||
|
If r_1.Checked Then
|
||||||
|
motivo = "CERRADO"
|
||||||
|
Else If r_2.Checked Then
|
||||||
|
motivo = "NO COMPRA"
|
||||||
|
Else If r_3.Checked Then
|
||||||
|
motivo = "CON PRODUCTO"
|
||||||
|
Else
|
||||||
|
motivo = "NO ESTA EL ENCARGADO"
|
||||||
|
End If
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("select CUENTA from cuentaa")
|
||||||
|
c.Position = 0
|
||||||
|
cuenta = c.GetString("CUENTA")
|
||||||
|
c=Starter.skmt.ExecQuery("select usuario from usuarioa")
|
||||||
|
c.Position = 0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
c=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ")
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
c.Position=i
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)")
|
||||||
|
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON,NV_ENVIO) VALUES(?,?,?,?,?,?,?,0) ", Array As Object (cuenta,sDate & sTime, usuario, motivo,e_comm.text, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
DateTime.TimeFormat = "HHmmss"
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_OUT = ? where HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(sTime))
|
||||||
|
' Starter.skmt.ExecNonQuery("UPDATE HIST_STAY_STORE set HSS_TOT = HSS_OUT - HSS_IN where HSS_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
|
||||||
|
c=Starter.skmt.ExecQuery(" Select (substr(HSS_OUT,1,2) - substr(HSS_IN,1,2)) - Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then 1 Else 0 end HORAS_TOTALES, " & _
|
||||||
|
"Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then (substr(HSS_OUT,3,2) + 60 - substr(HSS_IN,3,2)) " & _
|
||||||
|
" Else (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) End - Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then 1 Else 0 end MINUTOS_TOTALES, " & _
|
||||||
|
"Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then (substr(HSS_OUT,5,2) + 60 - substr(HSS_IN,5,2)) " & _
|
||||||
|
" Else (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) end SEGUNDOS_TOTALES " & _
|
||||||
|
" from HIST_STAY_STORE where HSS_CODIGO In (Select cuenta from cuentaa) ")
|
||||||
|
c.Position = 0
|
||||||
|
stay_hh = c.GetString("HORAS_TOTALES") * 60 * 60
|
||||||
|
stay_mi = c.GetString("MINUTOS_TOTALES") * 60
|
||||||
|
stay_ss = c.GetString("SEGUNDOS_TOTALES")
|
||||||
|
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_TOT = ? where HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(stay_hh + stay_mi + stay_ss))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_FIN = ? ", Array As Object(sTime))
|
||||||
|
DateTime.TimeFormat = "HH:mm:ss"
|
||||||
|
|
||||||
|
Starter.skmt.ExecNonQuery2("update PEDIDO_INICIO_FINAL set PIF_HORA_FINAL = ? where PIF_CLIENTE = ? and PIF_HORA_FINAL = 0", Array As Object (DateTime.Now, cuenta))
|
||||||
|
LogColor($"actualizamos "${cuenta}, hora_final=${DateTime.now}"$,Colors.Red)
|
||||||
|
|
||||||
|
' mandaPendientesnoventa
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
End Sub
|
||||||
|
'
|
||||||
|
'Sub mandaPendientesnoventa
|
||||||
|
'
|
||||||
|
' c=Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_NOMBRE, NV_DIRECCION FROM NOVENTA where NV_ENVIO <> 1")
|
||||||
|
' Log($"NOVENYA_Cliente 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_noventa_PRO"
|
||||||
|
' cmd.Parameters = Array As Object(c.GetString("NV_CLIENTE"),c.GetString("NV_FECHA"),c.GetString("NV_USER"),c.GetString("NV_MOTIVO"),c.GetString("NV_COMM"),c.GetString("NV_LAT"),c.GetString("NV_LON"),B4XPages.MainPage.principal.ALMACEN, B4XPages.MainPage.principal.l_ruta.Text)
|
||||||
|
' reqManager.ExecuteCommand(cmd , $"ins_NOVENTAPendientes_head_${c.GetString("NV_CLIENTE")}"$)
|
||||||
|
' Next
|
||||||
|
' End If
|
||||||
|
' c.Close
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Sub JobDone(Job As HttpJob)
|
||||||
|
Log(Job.Success)
|
||||||
|
If Job.Success = False Then
|
||||||
|
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||||
|
Else
|
||||||
|
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If resultado.Tag.As(String).IndexOf("ins_NOVENTAPendientes_head_") > -1 Then
|
||||||
|
Private cliente As String= resultado.Tag
|
||||||
|
cliente = cliente.SubString(cliente.IndexOf("_")+24)
|
||||||
|
Log($"Cliente1:${cliente}"$)
|
||||||
|
Starter.skmt.ExecNonQuery2("update NOVENTA SET NV_ENVIO = ? WHERE NV_CLIENTE = ? AND NV_ENVIO <> 1",Array As String ("1", cliente))
|
||||||
|
For Each records() As Object In resultado.Rows
|
||||||
|
For Each k As String In resultado.Columns.Keys
|
||||||
|
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Job.Release
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
245
B4A/C_Nota.bas
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
|
||||||
|
Dim skmt As SQL
|
||||||
|
Dim g As GPS
|
||||||
|
Dim clie_id As String
|
||||||
|
Dim sDate,sTime As String
|
||||||
|
Dim usuario As String
|
||||||
|
|
||||||
|
Dim c As Cursor
|
||||||
|
Dim ruta As String
|
||||||
|
Dim Regresar As Button
|
||||||
|
|
||||||
|
Dim ListView1 As ListView
|
||||||
|
Dim L_CANT As Label
|
||||||
|
Dim L_TOTAL As Label
|
||||||
|
Dim borra As Button
|
||||||
|
Dim Existe As String
|
||||||
|
Dim result As String
|
||||||
|
' Dim lat_gps, lon_gps As String
|
||||||
|
Dim DESC As String
|
||||||
|
|
||||||
|
Private Titulo As Label
|
||||||
|
Private b_desc As Button
|
||||||
|
Dim DESCUENTO As String
|
||||||
|
Dim folio As String
|
||||||
|
Dim tgl As Toggle
|
||||||
|
Private almacen As String
|
||||||
|
Private p_nota 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)
|
||||||
|
B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||||
|
Root = Root1
|
||||||
|
ruta = File.DirInternal
|
||||||
|
Root.LoadLayout("nota")
|
||||||
|
borra.Visible = True
|
||||||
|
Titulo.Text = "Pedido Actual"
|
||||||
|
' If Existe <> 0 Then
|
||||||
|
' c=Starter.skmt.ExecQuery("select pc_noart, pc_monto from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
|
||||||
|
' C.Position=0
|
||||||
|
' L_CANT.Text = c.GetString("PC_NOART")
|
||||||
|
' L_TOTAL.Text = c.GetString("PC_MONTO")
|
||||||
|
' End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
If Not(Starter.gps.GPSEnabled) Then
|
||||||
|
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||||
|
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||||
|
End If
|
||||||
|
c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
|
||||||
|
C.Position =0
|
||||||
|
almacen = C.GetString("ID_ALMACEN")
|
||||||
|
C.Close
|
||||||
|
L_CANT.Text =""
|
||||||
|
L_TOTAL.Text=""
|
||||||
|
c=Starter.skmt.ExecQuery("select count(*) as EXISTE from pedido_cliente WHERE pc_cliente IN (Select CUENTA from cuentaa)")
|
||||||
|
C.Position=0
|
||||||
|
Existe = C.GetString("EXISTE")
|
||||||
|
C.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_CEDIS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_PRONOMBRE")
|
||||||
|
ListView1.Clear
|
||||||
|
Private cs As CSBuilder
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
cs.Initialize
|
||||||
|
c.Position=i
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = ListView1.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
label1.color = Colors.White
|
||||||
|
Private textColor As Int = Colors.black
|
||||||
|
' If c.GetString("PE_CEDIS").Contains("PRO") Then textColor = Colors.RGB(210,105,30) 'Si es promo, cambiamos el color del texto.
|
||||||
|
If Not(IsNumber(c.GetString("PE_CEDIS"))) Then textColor = Colors.RGB(210,105,30) 'Si es promo, cambiamos el color del texto.
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 10
|
||||||
|
label2.TextColor = Colors.Blue
|
||||||
|
ListView1.AddTwoLines(cs.Color(textColor).append(c.GetString("PE_PRONOMBRE")).pop,"Cantidad #"& c.GetString("PE_CANT")& " SubTotal $"& c.GetString("PE_COSTO_TOT")& " Folio "& c.GetString("PE_FOLIO"))
|
||||||
|
folio = c.GetString("PE_FOLIO")
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
If Existe <> 0 Then
|
||||||
|
c =Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) 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 ) ")
|
||||||
|
' c=Starter.skmt.ExecQuery("select pc_noart, pc_monto from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
|
||||||
|
C.Position=0
|
||||||
|
L_CANT.Text = c.GetString("PC_NOART")
|
||||||
|
L_TOTAL.Text = c.GetString("PC_MONTO")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select SUM(IFNULL(PE_DESC,0)) AS DESCUENTO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
DESC = c.GetString("DESCUENTO")
|
||||||
|
b_desc.Visible = False
|
||||||
|
End If
|
||||||
|
If Subs.pedidoGuardado Then borra.Enabled = False Else borra.Enabled = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub GPS_LocationChanged (Location1 As Location)
|
||||||
|
'lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
|
||||||
|
'lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Regresar_Click
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
' BACK key pressed
|
||||||
|
' Return True To close, False To cancel
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub borra_Click
|
||||||
|
If folio <> "" Then
|
||||||
|
result = Msgbox2("Seguro que desea borrar el pedido?","Cancelar pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||||
|
If result = DialogResponse.POSITIVE Then
|
||||||
|
c=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ")
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
c.Position=i
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (almacen,c.GetString("PE_PROID"),c.GetString("PE_CANT")* -1))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
B4XPage_Appear
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub ListView1_ItemLongClick (Position As Int, Value As Object)
|
||||||
|
If Not(Subs.pedidoGuardado) Then
|
||||||
|
result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||||
|
If result = DialogResponse.POSITIVE Then
|
||||||
|
c=Starter.skmt.ExecQuery2("select PE_PROID,PE_CANT FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value))
|
||||||
|
c.Position=0
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (almacen,c.GetString("PE_PROID"),c.GetString("PE_CANT")* -1))
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from cat_gunaprod where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)) and CAT_GP_CLASIF = 'PROMOS' AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS'", Array As String(Value))
|
||||||
|
c.Position=0
|
||||||
|
If c.GetString("CUANTOS") > 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value))
|
||||||
|
Else
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value))
|
||||||
|
End If
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
c=Starter.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
|
||||||
|
If c.GetString("CUANTOS") > 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps))
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
Else
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
End If
|
||||||
|
B4XPage_Appear
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
ToastMessageShow("El pedido ya fue guardado, no se puden borrar productos.", True)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_desc_Click
|
||||||
|
If DESCUENTO = "MENOS" Then
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
c.Close
|
||||||
|
result = Msgbox2("Seguro que desea dar descuento del 5%?","Dar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||||
|
If result = DialogResponse.POSITIVE Then
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT * .95, PE_DESC = 5 WHERE PE_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
c=Starter.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
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps))
|
||||||
|
c.Close
|
||||||
|
B4XPage_Appear
|
||||||
|
End If
|
||||||
|
ELSE IF DESCUENTO = "MAS" Then
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
c.Close
|
||||||
|
result = Msgbox2("Seguro que desea CANCELAR el descuento?","Cancelar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||||
|
If result = DialogResponse.POSITIVE Then
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT / .95, PE_DESC = 0 WHERE PE_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
c=Starter.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
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps))
|
||||||
|
c.Close
|
||||||
|
B4XPage_Appear
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_nota_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
336
B4A/C_NuevoCliente.bas
Normal file
@@ -0,0 +1,336 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@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 sDate2,sTime2 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
|
||||||
|
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
|
||||||
|
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)
|
||||||
|
B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||||
|
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)
|
||||||
|
' 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("No permission 1!!!", 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("conpermisos para escritura")
|
||||||
|
' Else
|
||||||
|
' ToastMessageShow("No permission 2!!!", 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("conpermisos para escritura")
|
||||||
|
' Else
|
||||||
|
' ToastMessageShow("No permission 3!!!", True)
|
||||||
|
' End If
|
||||||
|
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(Label2, Root.Width)
|
||||||
|
Subs.centraEtiqueta(Label3, Root.Width)
|
||||||
|
Subs.centraEtiqueta(l_sinUbicacion, Root.Width)
|
||||||
|
Subs.centraEtiqueta(b_ubicacion, Root.Width)
|
||||||
|
Subs.centraPanel(p_botones, Root.Width)
|
||||||
|
E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
|
||||||
|
et_direccion.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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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 = 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 Sub
|
||||||
|
|
||||||
|
Sub CANCELA_Click
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
CallSubDelayed(Tracker, "StartFLP")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub GUARDA_Click
|
||||||
|
If E_NOMBRE.Text = "" Then
|
||||||
|
MsgboxAsync("Por favor captura el nombre de la Tienda","Atención")
|
||||||
|
Else
|
||||||
|
If et_direccion.Text.Length > 3 Then
|
||||||
|
If lat <> 0 Then
|
||||||
|
If fototomada <> "0" Then
|
||||||
|
' If giros <> "SELECCIONA UNA OPCIÓN" Or cb_giro.SelectedItem <> "SELECCIONA UNA OPCIÓN" Then
|
||||||
|
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=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 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))
|
||||||
|
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, NOM_FOTO) VALUES(?,?,?,?)", Array As Object(no_cliente, ALMACEN, no_ruta, fototomada))
|
||||||
|
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)
|
||||||
|
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CLIENTES_NUEVOS(CN_ID, CN_FECHA, CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, CN_FOTO, CN_ALMACEN, CN_RUTA) VALUES (?,?,?,?,?,?,?,?,?,?)",Array As String(no_cliente,sDate2 &" "&sTime2, usuario, lat, lon, E_NOMBRE.Text,et_direccion.Text, fototomada, ALMACEN, no_ruta))
|
||||||
|
fototomada = "0"
|
||||||
|
B4XPages.ShowPage("Principal")
|
||||||
|
CallSubDelayed(Tracker, "StartFLP")
|
||||||
|
|
||||||
|
' Else
|
||||||
|
' MsgboxAsync("Por favor captura el giro del cliente","Atención")
|
||||||
|
' End If
|
||||||
|
|
||||||
|
Else
|
||||||
|
MsgboxAsync("Por favor captura la foto del cliente","Atención")
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
MsgboxAsync("Por favor revisa que tengas señal GPS","Atención")
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
MsgboxAsync("Por favor captura la dirección del cliente","Atención")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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("No permission 1!!!", 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("conpermisos para escritura")
|
||||||
|
' Else
|
||||||
|
' ToastMessageShow("No permission 2!!!", 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("conpermisos para escritura")
|
||||||
|
' Else
|
||||||
|
' ToastMessageShow("No permission 3!!!", 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
|
||||||
583
B4A/C_Pedidos.bas
Normal file
@@ -0,0 +1,583 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
|
||||||
|
Dim g As GPS
|
||||||
|
Dim ruta As String
|
||||||
|
Dim skmt As SQL
|
||||||
|
Private t3 As Timer
|
||||||
|
Dim p As Phone
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
|
||||||
|
Dim c As Cursor
|
||||||
|
Dim e As Cursor
|
||||||
|
Dim f As Cursor
|
||||||
|
Dim h As Cursor
|
||||||
|
Dim CC As Cursor
|
||||||
|
Dim DD As Cursor
|
||||||
|
Dim l_tipo As Label
|
||||||
|
Dim l_sub As Label
|
||||||
|
Dim l_marca As Label
|
||||||
|
Dim l_desc As Label
|
||||||
|
Dim l_precio As Label
|
||||||
|
Dim l_bodega As Label
|
||||||
|
Dim cantidad As EditText
|
||||||
|
Dim guardar As Button
|
||||||
|
Dim Terminar As Button
|
||||||
|
Dim img_prod As ImageView
|
||||||
|
Dim IMG_PASO() As Byte
|
||||||
|
Dim L_PROID As Label
|
||||||
|
Dim clie_id As String
|
||||||
|
Dim sDate,sTime As String
|
||||||
|
Dim usuario As String
|
||||||
|
' Dim lat_gps, lon_gps As String
|
||||||
|
Dim t_venta As Label
|
||||||
|
Dim PROMO_C As String
|
||||||
|
Dim i_fotol As ImageView
|
||||||
|
Private DESC_PROMO As Button
|
||||||
|
Private nopromo As Button
|
||||||
|
Dim TOT_ART_PROMO As String
|
||||||
|
Dim cambio As String
|
||||||
|
Dim COSTO_TOT As String
|
||||||
|
Dim ALMACEN As String
|
||||||
|
Dim preciosin As String
|
||||||
|
Dim cl_ruta As String
|
||||||
|
Dim d As Cursor
|
||||||
|
Dim TOT_ART_PROMOR As String
|
||||||
|
Dim PROMO_CR As String
|
||||||
|
Dim TOTAL_PROMO As String
|
||||||
|
Dim HCCP_CANT As String
|
||||||
|
Dim tgl As Toggle
|
||||||
|
Dim precio_Cero As String
|
||||||
|
Private BONSABOR As String
|
||||||
|
Private BONSABOR2 As String
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
Private p_pedido 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)
|
||||||
|
B4XPages.SetTitle(Me, $"${subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||||
|
Root = Root1
|
||||||
|
'load the layout to Root
|
||||||
|
Root.LoadLayout("pedido")
|
||||||
|
i_fotol.Visible = False
|
||||||
|
ruta = File.DirInternal
|
||||||
|
If File.Exists(ruta, "kmt.db") = False Then
|
||||||
|
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
tgl.Initialize
|
||||||
|
BONSABOR = 0
|
||||||
|
BONSABOR2 = 0
|
||||||
|
If Not(Starter.gps.GPSEnabled) Then
|
||||||
|
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
||||||
|
StartActivity(Starter.gps.LocationSettingsIntent)
|
||||||
|
End If
|
||||||
|
cantidad.Text = ""
|
||||||
|
c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
|
||||||
|
C.Position =0
|
||||||
|
ALMACEN = C.GetString("ID_ALMACEN")
|
||||||
|
C.Close
|
||||||
|
i_fotol.Visible = False
|
||||||
|
sb.Initialize
|
||||||
|
p.Shell("ping -c1 -W1 177.244.63.54",Null, sb,Null)
|
||||||
|
skmt.Initialize(ruta,"kmt.db", True)
|
||||||
|
c=Starter.skmt.ExecQuery("select 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_DEV from CAT_GUNAPROD where CAT_GP_NOMBRE In (Select PDESC from PROID)")
|
||||||
|
c.Position=0
|
||||||
|
L_PROID.Text = c.GetString("CAT_GP_ID")
|
||||||
|
l_tipo.Text = c.GetString("CAT_GP_TIPO")
|
||||||
|
l_sub.Text = c.GetString("CAT_GP_SUBTIPO")
|
||||||
|
l_marca.Text = c.GetString("CAT_GP_CLASIF")
|
||||||
|
l_desc.Text = c.GetString("CAT_GP_NOMBRE")
|
||||||
|
l_precio.Text = c.GetDouble("CAT_GP_PRECIO")
|
||||||
|
l_bodega.Text = c.GetString("CAT_GP_ALMACEN")
|
||||||
|
IMG_PASO = c.GetBlob("CAT_GP_IMG")
|
||||||
|
PROMO_C = c.GetString("CAT_GP_STS")
|
||||||
|
cambio = c.GetString("CAT_GP_DEV")
|
||||||
|
preciosin = c.GetString("CAT_GP_IMP2")
|
||||||
|
PROMO_CR = c.GetString("CAT_GP_IMP1")
|
||||||
|
cambio = "0"
|
||||||
|
|
||||||
|
e=Starter.skmt.ExecQuery2("select count(*) as CUANTOS FROM pedido WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select cuenta from cuentaa) ", Array As String(c.GetString("CAT_GP_ID")))
|
||||||
|
e.Position =0
|
||||||
|
If e.GetString("CUANTOS") = 0 Then
|
||||||
|
If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" Then
|
||||||
|
DESC_PROMO.Visible = True
|
||||||
|
CC=Starter.skmt.ExecQuery2("select count(*) as CUANTOS FROM PROMOS_COMP WHERE CAT_PA_ID = ?", Array As String(c.GetString("CAT_GP_ID")))
|
||||||
|
CC.Position =0
|
||||||
|
If CC.GetString("CUANTOS") = 0 Then
|
||||||
|
l_bodega.Text = "0" ' se modifica a cero para evitar error en la promo especial de unilever mayo
|
||||||
|
Else
|
||||||
|
CC.Close
|
||||||
|
CC=Starter.skmt.ExecQuery2("select CAT_PA_MAXPROM, CAT_PA_MAXPROMREC, CAT_PA_MAXPROMCLIE FROM PROMOS_COMP WHERE CAT_PA_ID = ?", Array As String(c.GetString("CAT_GP_ID")))
|
||||||
|
CC.Position =0
|
||||||
|
' SE MODIFICA LA APLICACION PARA QUE VEA EL HISTORIAL DE VENTA DEL CLIENTE.
|
||||||
|
DD=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO =?", Array As String(c.GetString("CAT_GP_ID")))
|
||||||
|
DD.Position =0
|
||||||
|
If DD.GetString("CUANTOS") = 0 Then
|
||||||
|
HCCP_CANT = 0
|
||||||
|
Else
|
||||||
|
DD.Close
|
||||||
|
DD=Starter.skmt.ExecQuery2("SELECT HCCP_CANT FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO =?", Array As String(c.GetString("CAT_GP_ID")))
|
||||||
|
DD.Position =0
|
||||||
|
HCCP_CANT = DD.GetString("HCCP_CANT")
|
||||||
|
DD.Close
|
||||||
|
End If
|
||||||
|
BONSABOR = HCCP_CANT
|
||||||
|
DD=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String(c.GetString("CAT_GP_NOMBRE")))
|
||||||
|
DD.Position =0
|
||||||
|
If DD.GetString("CUANTOS") = 0 Then
|
||||||
|
HCCP_CANT = 0
|
||||||
|
Else
|
||||||
|
DD.Close
|
||||||
|
DD=Starter.skmt.ExecQuery2("SELECT SUM(HVD_CANT) AS HCCP_CANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String(c.GetString("CAT_GP_NOMBRE")))
|
||||||
|
DD.Position =0
|
||||||
|
HCCP_CANT = DD.GetString("HCCP_CANT")
|
||||||
|
DD.Close
|
||||||
|
End If
|
||||||
|
DD=Starter.skmt.ExecQuery2("Select COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) AND PE_PROID IN (select CAT_GP_ID from CAT_GUNAPROD where CAT_GP_CLASIF = ?) ",Array As String(c.GetString("CAT_GP_NOMBRE")))
|
||||||
|
DD.Position =0
|
||||||
|
BONSABOR2 = DD.GetString("CUANTOS")
|
||||||
|
DD.Close
|
||||||
|
TOTAL_PROMO = CC.GetString("CAT_PA_MAXPROMCLIE") - HCCP_CANT
|
||||||
|
If HCCP_CANT = 0 Then
|
||||||
|
l_bodega.Text = CC.GetString("CAT_PA_MAXPROM")
|
||||||
|
Else IF TOTAL_PROMO > CC.GetString("CAT_PA_MAXPROMREC") Then
|
||||||
|
l_bodega.Text = CC.GetString("CAT_PA_MAXPROMREC")
|
||||||
|
Else
|
||||||
|
l_bodega.Text = TOTAL_PROMO
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
DESC_PROMO.Visible = False
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select CASE WHEN pe_costo_tot is null then 0 else sum( pe_costo_tot ) end as TOTAL_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
t_venta.Text = c.GetString("TOTAL_CLIE")
|
||||||
|
c.Close
|
||||||
|
Terminar.Visible = True
|
||||||
|
guardar.Visible = True
|
||||||
|
cantidad.Visible = True
|
||||||
|
If cambio = "1" Then
|
||||||
|
nopromo.Visible = True
|
||||||
|
Else
|
||||||
|
nopromo.Visible = False
|
||||||
|
End If
|
||||||
|
Dim out As OutputStream
|
||||||
|
out = File.OpenOutput(ruta, "1.jpg", False)
|
||||||
|
out.WriteBytes(IMG_PASO, 0, IMG_PASO.Length)
|
||||||
|
out.Close
|
||||||
|
img_prod.Bitmap = LoadBitmap(ruta,"1.jpg")
|
||||||
|
TOT_ART_PROMO = "0"
|
||||||
|
TOT_ART_PROMOR = "0"
|
||||||
|
If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And l_bodega.Text = "0" Then
|
||||||
|
Msgbox("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION") 'ignore
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
ELSE IF l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And L_PROID.Text = "PROUNI1" And BONSABOR <> "1" And BONSABOR2 = 0 Then
|
||||||
|
Msgbox("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION") 'ignore
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
Msgbox("ALERTA","EL CLIENTE YA COMPRO ESTE PRODUCTO REVISAR NOTA") 'ignore
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub guardar_Click
|
||||||
|
If cantidad.Text = "" Then
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
ELSE If cantidad.Text > l_bodega.Text Then
|
||||||
|
Msgbox("Exede la existencia", "ADVERTENCIA") 'ignore
|
||||||
|
Else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C > 0 And cantidad.Text > 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from PROIDID")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||||
|
c=Starter.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1)")
|
||||||
|
c.Position =0
|
||||||
|
If c.GetString("CUANTOSD") = 0 Then
|
||||||
|
Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") 'ignore
|
||||||
|
Else
|
||||||
|
c=Starter.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1)")
|
||||||
|
C.Position =0
|
||||||
|
TOT_ART_PROMO = C.GetString("TOT_ART_PROMO")
|
||||||
|
COSTO_TOT = C.GetString("COSTO_TOT")
|
||||||
|
C.Close
|
||||||
|
c=Starter.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
|
||||||
|
c.Position =0
|
||||||
|
If c.GetString("CUANTOSD") = 0 Then
|
||||||
|
TOT_ART_PROMOR = "0" 'Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA")
|
||||||
|
Else
|
||||||
|
c=Starter.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
|
||||||
|
C.Position =0
|
||||||
|
TOT_ART_PROMOR = C.GetString("TOT_ART_PROMO")
|
||||||
|
End If
|
||||||
|
C.Close
|
||||||
|
PROMO_C = PROMO_C * cantidad.Text
|
||||||
|
PROMO_CR = PROMO_CR * cantidad.Text
|
||||||
|
If TOT_ART_PROMO = PROMO_C And TOT_ART_PROMOR = PROMO_CR Then
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = (?) WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID))", Array As Object(L_PROID.text))
|
||||||
|
D=Starter.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1")
|
||||||
|
If D.RowCount>0 Then
|
||||||
|
For i=0 To D.RowCount -1
|
||||||
|
D.Position=i
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
D.Close
|
||||||
|
D=Starter.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1")
|
||||||
|
If D.RowCount>0 Then
|
||||||
|
For i=0 To D.RowCount -1
|
||||||
|
D.Position=i
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
D.Close
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
e=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ")
|
||||||
|
' SE LO QUITE DE CONDICION AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0)
|
||||||
|
e.Position =0
|
||||||
|
If e.GetString("CUANTOS") > 0 Then
|
||||||
|
F=Starter.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS,CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ") ' AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0)
|
||||||
|
'meter el otro
|
||||||
|
'si jala copiar para guna y el resto
|
||||||
|
If f.RowCount>0 Then
|
||||||
|
For i=0 To f.RowCount -1
|
||||||
|
f.Position=i
|
||||||
|
precio_Cero = f.GetString("CAT_DP_PRECIO")
|
||||||
|
h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
|
||||||
|
h.Position=0
|
||||||
|
'0
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,precio_Cero * f.GetString("CAT_DP_PZAS") * cantidad.text, precio_Cero, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta))
|
||||||
|
h.Close
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
f.Close
|
||||||
|
End If
|
||||||
|
e.Close
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0 , 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||||
|
Else
|
||||||
|
Msgbox("Tiene " & TOT_ART_PROMO & " " & TOT_ART_PROMOR & " y necesita " & PROMO_C & " " & PROMO_CR & " Para la Promo. " , "ADVERTENCIA") 'ignore
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
cantidad.Text = ""
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C = 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from PROIDID")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
'Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object ("COACALCO",cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario))
|
||||||
|
'para insertar la promo de ades el de regalo en 0
|
||||||
|
e=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) ")
|
||||||
|
e.Position =0
|
||||||
|
If e.GetString("CUANTOS") > 0 Then
|
||||||
|
F=Starter.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS, CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID)")
|
||||||
|
For i =0 To f.RowCount -1
|
||||||
|
F.Position =i
|
||||||
|
h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
|
||||||
|
h.Position=0
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,f.GetString("CAT_DP_PRECIO") * cantidad.text * f.GetString("CAT_DP_PZAS"), f.GetString("CAT_DP_PRECIO"), f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||||
|
h.Close
|
||||||
|
Next
|
||||||
|
f.Close
|
||||||
|
End If
|
||||||
|
e.Close
|
||||||
|
'0
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0, 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||||
|
cantidad.Text = ""
|
||||||
|
c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN")))
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
Else
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN, PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (ALMACEN,cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,preciosin, B4XPages.MainPage.tipo_venta))
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||||
|
c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN")))
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (ALMACEN,L_PROID.Text,cantidad.text))
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub GPS_LocationChanged (Location1 As Location)
|
||||||
|
'lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
|
||||||
|
'lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Terminar_Click
|
||||||
|
If cantidad.Text = "" Then
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
ELSE If cantidad.Text > l_bodega.Text Then
|
||||||
|
Msgbox("Exede la existencia", "ADVERTENCIA") 'ignore
|
||||||
|
Else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C > 0 And cantidad.Text > 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from PROIDID")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||||
|
c=Starter.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1)")
|
||||||
|
c.Position =0
|
||||||
|
If c.GetString("CUANTOSD") = 0 Then
|
||||||
|
Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") 'ignore
|
||||||
|
Else
|
||||||
|
c=Starter.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1)")
|
||||||
|
C.Position =0
|
||||||
|
TOT_ART_PROMO = C.GetString("TOT_ART_PROMO")
|
||||||
|
COSTO_TOT = C.GetString("COSTO_TOT")
|
||||||
|
C.Close
|
||||||
|
c=Starter.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
|
||||||
|
c.Position =0
|
||||||
|
If c.GetString("CUANTOSD") = 0 Then
|
||||||
|
TOT_ART_PROMOR = "0" 'Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA")
|
||||||
|
Else
|
||||||
|
c=Starter.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
|
||||||
|
C.Position =0
|
||||||
|
TOT_ART_PROMOR = C.GetString("TOT_ART_PROMO")
|
||||||
|
End If
|
||||||
|
C.Close
|
||||||
|
PROMO_C = PROMO_C * cantidad.Text
|
||||||
|
PROMO_CR = PROMO_CR * cantidad.Text
|
||||||
|
If TOT_ART_PROMO = PROMO_C And TOT_ART_PROMOR = PROMO_CR Then
|
||||||
|
' anterior a 29/06/2015
|
||||||
|
'Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID))", Array As Object(l_precio.text/(TOT_ART_PROMO/cantidad.Text),l_precio.text/(TOT_ART_PROMO/cantidad.Text)))
|
||||||
|
'en pe_cedis meto el codigo de promocion para hacer esta validacion.
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = (?) WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID))", Array As Object(L_PROID.text))
|
||||||
|
D=Starter.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1")
|
||||||
|
If D.RowCount>0 Then
|
||||||
|
For i=0 To D.RowCount -1
|
||||||
|
D.Position=i
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
D.Close
|
||||||
|
D=Starter.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1")
|
||||||
|
If D.RowCount>0 Then
|
||||||
|
For i=0 To D.RowCount -1
|
||||||
|
D.Position=i
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
D.Close
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
'para insertar la promo de ades el de regalo en 0
|
||||||
|
e=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ")
|
||||||
|
' SE LO QUITE DE CONDICION AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0)
|
||||||
|
e.Position =0
|
||||||
|
If e.GetString("CUANTOS") > 0 Then
|
||||||
|
F=Starter.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS,CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ") ' AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0)
|
||||||
|
'meter el otro
|
||||||
|
'si jala copiar para guna y el resto
|
||||||
|
If f.RowCount>0 Then
|
||||||
|
For i=0 To f.RowCount -1
|
||||||
|
f.Position=i
|
||||||
|
precio_Cero = f.GetString("CAT_DP_PRECIO")
|
||||||
|
h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
|
||||||
|
h.Position=0
|
||||||
|
Log(111)
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,precio_Cero * f.GetString("CAT_DP_PZAS") * cantidad.text, precio_Cero, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||||
|
h.Close
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
f.Close
|
||||||
|
End If
|
||||||
|
e.Close
|
||||||
|
Log(222)
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0 , 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta, b4xpages.MainPage.tipo_venta))
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||||
|
Else
|
||||||
|
Msgbox("Tiene " & TOT_ART_PROMO & " " & TOT_ART_PROMOR & " y necesita " & PROMO_C & " " & PROMO_CR & " Para la Promo. " , "ADVERTENCIA") 'ignore
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
cantidad.Text = ""
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C = 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery("delete from PROIDID")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
'para insertar la promo de ades el de regalo en 0
|
||||||
|
e=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) ")
|
||||||
|
e.Position =0
|
||||||
|
If e.GetString("CUANTOS") > 0 Then
|
||||||
|
F=Starter.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS, CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID)")
|
||||||
|
For i =0 To f.RowCount -1
|
||||||
|
F.Position =i
|
||||||
|
h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
|
||||||
|
h.Position=0
|
||||||
|
Log(333)
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,f.GetString("CAT_DP_PRECIO") * cantidad.text * f.GetString("CAT_DP_PZAS"), f.GetString("CAT_DP_PRECIO"), f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta, B4XPages.MainPage.tipo_venta))
|
||||||
|
h.Close
|
||||||
|
Next
|
||||||
|
f.Close
|
||||||
|
End If
|
||||||
|
e.Close
|
||||||
|
Log(444)
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0, 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta, b4xpages.MainPage.tipo_venta))
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||||
|
cantidad.Text = ""
|
||||||
|
c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN")))
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
Else
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
cl_ruta = c.GetString("CAT_CL_RUTA")
|
||||||
|
c.Close
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
Log(555)
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (ALMACEN,cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,preciosin, b4xpages.MainPage.tipo_venta))
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||||
|
c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||||
|
c.Position=0
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN")))
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (ALMACEN,L_PROID.Text,cantidad.text))
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
' BACK key pressed
|
||||||
|
' Return True To close, False To cancel
|
||||||
|
Msgbox("Presione Boton Terminar.","ADVERTENCIA") 'ignore
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub img_prod_Click
|
||||||
|
i_fotol.Visible = True
|
||||||
|
i_fotol.Bitmap = LoadBitmap(ruta,"1.jpg")
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
Sub i_fotol_Click
|
||||||
|
i_fotol.Visible = False
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub DESC_PROMO_Click
|
||||||
|
Starter.skmt.ExecNonQuery("delete from PROIDID")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
|
||||||
|
B4XPages.ShowPage("detalle_promo")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub nopromo_Click
|
||||||
|
If cantidad.Text = "" Then
|
||||||
|
Msgbox("Cantidad no puede ser 0","Cantidad") 'ignore
|
||||||
|
Else If cantidad.Text > l_bodega.Text Then
|
||||||
|
Msgbox("Exede la existencia", "ADVERTENCIA") 'ignore
|
||||||
|
Else
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object ("COACALCO",0,0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario, b4xpages.MainPage.tipo_venta))
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
|
||||||
|
cantidad.Text = ""
|
||||||
|
B4XPages.ShowPage("Productos")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_pedido_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
2454
B4A/C_Principal.bas
Normal file
983
B4A/C_Productos.bas
Normal file
@@ -0,0 +1,983 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
Dim ruta As String
|
||||||
|
Dim q_buscar As String
|
||||||
|
Dim forzarBusqueda As Boolean = False
|
||||||
|
Dim skmt As SQL
|
||||||
|
Dim c As Cursor
|
||||||
|
Dim c2 As Cursor
|
||||||
|
Dim C3 As Cursor
|
||||||
|
Dim s As Cursor
|
||||||
|
Dim lv_catalogos As ListView
|
||||||
|
Dim lv_promos As ListView
|
||||||
|
Dim entro As String
|
||||||
|
Dim gest As Button
|
||||||
|
Dim lfila As Label
|
||||||
|
Dim marca As String
|
||||||
|
Dim tipo As String
|
||||||
|
Dim subtipo As String
|
||||||
|
Private BUSCA As EditText
|
||||||
|
Dim ya_entro As String
|
||||||
|
Dim TIENE_PROMOS As String
|
||||||
|
Dim RES As String
|
||||||
|
Dim S1 As Cursor
|
||||||
|
Dim bmp As Bitmap
|
||||||
|
Dim ciclo As String
|
||||||
|
Private b_qr As Button
|
||||||
|
Private p_productos As Panel
|
||||||
|
Dim clv_productos As CustomListView
|
||||||
|
Private ImageView1 As ImageView
|
||||||
|
Private Panel3 As Panel
|
||||||
|
Private p_prods As Panel
|
||||||
|
Private i_prod As ImageView
|
||||||
|
Private l_prodX As Label
|
||||||
|
Private b_prodMas As Button
|
||||||
|
Private l_pCant As Label
|
||||||
|
Private et_pCant As EditText
|
||||||
|
Private b_prodMenos As Button
|
||||||
|
Dim b_terminar1 As Button
|
||||||
|
Dim b_continuar As Button
|
||||||
|
Private l_total As Label
|
||||||
|
Private l_totProds As Label
|
||||||
|
Dim totalProds As Int = 0
|
||||||
|
Dim totalCompra As Float = 0
|
||||||
|
Dim etCantHasFocus As Boolean = False
|
||||||
|
Dim prodsMap As Map
|
||||||
|
Private l_Cargando As Label
|
||||||
|
Private l_info As Label
|
||||||
|
Private b_buscar As Button
|
||||||
|
Private p_botonesVenta As Panel
|
||||||
|
Private lv_tipo As ListView
|
||||||
|
Private lv_subtipo As ListView
|
||||||
|
Private p_vistaPreviaTrans As Panel
|
||||||
|
Private lv_prodsPedido As ListView
|
||||||
|
Private b_rechazar As Button
|
||||||
|
Private b_aceptar As Button
|
||||||
|
Private p_vistaPrevia As Panel
|
||||||
|
Dim folio As String
|
||||||
|
Dim result As String
|
||||||
|
Private l_cant As Label
|
||||||
|
Private l_total2 As Label
|
||||||
|
Dim prodsPedidoActual As String
|
||||||
|
Dim montoPedidoActual As String
|
||||||
|
|
||||||
|
Private clv_prods_ll As CustomListView
|
||||||
|
Private PCLV As PreoptimizedCLV
|
||||||
|
Dim listaProds As List
|
||||||
|
' Type AirportData (Name As String, AirportID As Int, IATA As String, ICAO As String, City As String, Latitude As Float, Longitude As Float, Altitude As String)
|
||||||
|
Dim pedidoMap As Map
|
||||||
|
Private p_botMasMen As Panel
|
||||||
|
Dim reiniciarlistaProds As Boolean= False
|
||||||
|
' Dim listaRenglones As List
|
||||||
|
Dim listaTiempos As List
|
||||||
|
Dim clienteId As String
|
||||||
|
Dim rutaUsuario As String
|
||||||
|
Dim hayPedido As Boolean
|
||||||
|
Dim listaHints As List
|
||||||
|
Dim h As Cursor
|
||||||
|
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)
|
||||||
|
B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||||
|
Root = Root1
|
||||||
|
'load the layout to Root
|
||||||
|
' Activity.RemoveAllViews
|
||||||
|
Root.LoadLayout("productos")
|
||||||
|
ruta = File.DirInternal
|
||||||
|
If File.Exists(ruta, "kmt.db") = False Then
|
||||||
|
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||||
|
End If
|
||||||
|
PCLV.Initialize(Me, "PCLV", clv_prods_ll)
|
||||||
|
ciclo = 1
|
||||||
|
l_info.Width = Root.Width * 0.8
|
||||||
|
l_info.Left = (Root.Width/2) - (l_info.Width/2)
|
||||||
|
c = Starter.skmt.ExecQuery("select distinct CAT_GP_TIPO from cat_gunaprod where CAT_GP_TIPO <> 'PROMOS' order by CAT_GP_TIPO")
|
||||||
|
If c.RowCount > 0 Then
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = lv_tipo.SingleLineLayout.Label
|
||||||
|
label1.TextSize = 17
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
lv_tipo.Clear
|
||||||
|
For i=0 To c.RowCount-1
|
||||||
|
c.Position=i
|
||||||
|
lv_tipo.AddSingleLine(c.GetString("CAT_GP_TIPO"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
' llenaCatalogo(False)
|
||||||
|
' listaRenglones.Initialize
|
||||||
|
listaTiempos.Initialize
|
||||||
|
listaProds.Initialize
|
||||||
|
pedidoMap.Initialize
|
||||||
|
listaHints.Initialize
|
||||||
|
Log("Llamamos LlenaProdsLL")
|
||||||
|
LlenaProdsLL(Null)
|
||||||
|
prodsMap.Initialize
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
clienteId = Subs.traeCliente
|
||||||
|
rutaUsuario = Subs.traeRuta
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("PRIORITARIO","1"))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("ESTRATEGICO","2"))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("COMPLEMENTARIO","3"))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("CATALOGO REGULAR","0"))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_CLASIF = (?) ",Array As Object("PROMOS","PROMOS"))
|
||||||
|
clv_prods_ll.GetBase.SetLayoutAnimated(0, 5dip, 130dip, Root.Width + 10, Root.Height * 0.68) 'Cambiamos el tamaño y posición de la lista de productos
|
||||||
|
clv_prods_ll.Base_Resize(clv_prods_ll.GetBase.Width, clv_prods_ll.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño.
|
||||||
|
If B4XPages.MainPage.bTerminarClicked Then
|
||||||
|
lv_catalogos.Visible = True
|
||||||
|
lv_promos.Visible = False
|
||||||
|
lv_tipo.Visible = False
|
||||||
|
lv_subtipo.Visible = False
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
B4XPages.MainPage.bTerminarClicked = False
|
||||||
|
End If
|
||||||
|
If ya_entro <> "1" Then
|
||||||
|
If BUSCA.Text <> "" Then BUSCA.Text =""
|
||||||
|
entro ="3"
|
||||||
|
lv_catalogos.Clear
|
||||||
|
Sleep(100)
|
||||||
|
lfila.Text = "CATALOGOS"
|
||||||
|
p_productos.Height = Root.Height
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
lv_catalogos.Visible = True
|
||||||
|
p_botonesVenta.Visible = False
|
||||||
|
p_botonesVenta.Top = clv_prods_ll.AsView.top + clv_prods_ll.AsView.Height - 25
|
||||||
|
lv_promos.Visible = False
|
||||||
|
End If
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = lv_catalogos.SingleLineLayout.Label
|
||||||
|
label1.TextSize = 17
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
lv_catalogos.Clear
|
||||||
|
lv_catalogos.AddSingleLine("CATALOGO")
|
||||||
|
c = Starter.skmt.ExecQuery("select count(*) as hayPromos from cat_gunaprod where CAT_GP_TIPOPROD = 'PROMOS'")
|
||||||
|
c.Position = 0
|
||||||
|
If c.GetInt("hayPromos") > 0 Then
|
||||||
|
lv_catalogos.AddSingleLine("PROMOS")
|
||||||
|
End If
|
||||||
|
Sleep(100)
|
||||||
|
l_total.Visible = False
|
||||||
|
l_totProds.Visible = False
|
||||||
|
l_total.Left = 5dip
|
||||||
|
l_totProds.Width = Root.Width * 0.19
|
||||||
|
l_total.Left = l_totProds.Width + 20
|
||||||
|
l_total.Width = Root.Width * 0.25
|
||||||
|
' Log(Subs.traeTotalesClienteActual)
|
||||||
|
Dim m As Map = Subs.traeTotalesClienteActual
|
||||||
|
prodsPedidoActual = m.Get("productos")
|
||||||
|
montoPedidoActual = m.Get("monto")
|
||||||
|
hayPedido = Subs.hayPedido
|
||||||
|
' LogColor("Pedido ant? - "&hayPedido, Colors.Magenta)
|
||||||
|
If reiniciarlistaProds Then
|
||||||
|
Log("Llamamos LlenaProdsLL")
|
||||||
|
LlenaProdsLL(Null)
|
||||||
|
else If hayPedido Then
|
||||||
|
' LogColor("HAY PEDIDO ANTERIOR", Colors.red)
|
||||||
|
Log("Llamamos LlenaProdsLL")
|
||||||
|
LlenaProdsLL(Null)
|
||||||
|
End If
|
||||||
|
clv_prods_ll.JumpToItem(0) 'Vamos al primer artículo de la lista.
|
||||||
|
PCLV.lblHint.SetTextSizeAnimated(0,13)
|
||||||
|
PCLV.B4XSeekBar1.Color1=Colors.DarkGray
|
||||||
|
PCLV.B4XSeekBar1.Color2=Colors.DarkGray
|
||||||
|
PCLV.B4XSeekBar1.ThumbColor=Colors.red
|
||||||
|
PCLV.B4XSeekBar1.mBase.Left=Root.Width *0.91
|
||||||
|
' PCLV.B4XSeekBar1.mBase.Top=-50
|
||||||
|
PCLV.B4XSeekBar1.mBase.Height=clv_prods_ll.AsView.Height
|
||||||
|
PCLV.pnlOverlay.Height = clv_prods_ll.AsView.Height
|
||||||
|
PCLV.B4XSeekBar1.Update
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub PCLV_AddProds
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
|
||||||
|
If Value = "CATALOGO" Then
|
||||||
|
' lfila.text = "TIPO"
|
||||||
|
lfila.text = "PRODUCTOS"
|
||||||
|
lv_catalogos.Visible = False
|
||||||
|
' lv_tipo.Visible = True
|
||||||
|
clv_prods_ll.AsView.Visible = True
|
||||||
|
If hayPedido Then p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
|
||||||
|
Else
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
lv_promos.Visible = True
|
||||||
|
lfila.text = "PROMOCIONES"
|
||||||
|
lv_catalogos.Visible = False
|
||||||
|
lv_promos.Clear
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = lv_promos.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = lv_promos.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 15
|
||||||
|
label2.TextColor = Colors.Black
|
||||||
|
Dim label13 As Label
|
||||||
|
label13 = lv_promos.TwoLinesAndBitmap.Label
|
||||||
|
label13.TextSize = 15
|
||||||
|
label13.TextColor = Colors.Black
|
||||||
|
Dim label14 As Label
|
||||||
|
label14 = lv_promos.TwoLinesAndBitmap.SecondLabel
|
||||||
|
label14.TextSize = 15
|
||||||
|
label14.TextColor = Colors.Black
|
||||||
|
lfila.text = "PROMOS"
|
||||||
|
c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from cat_gunaprod 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))
|
||||||
|
Log($"res:${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$)
|
||||||
|
If c2.RowCount > 0 Then
|
||||||
|
For i=0 To c2.RowCount -1
|
||||||
|
c2.Position=i
|
||||||
|
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId)
|
||||||
|
Log(c2.GetString("CAT_GP_ID"))
|
||||||
|
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
|
||||||
|
entro = "4"
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub lv_catalogos2_ItemClick (Position As Int, Value As Object)
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
BUSCA.Text = ""
|
||||||
|
Dim cliente As C_Cliente = B4XPages.GetPage("Cliente")
|
||||||
|
Log($"value=${Value}"$)
|
||||||
|
If Value = "PROMOS" And cliente.cuenta <> "N" Then
|
||||||
|
entro = "3"
|
||||||
|
marca = "PROMOS"
|
||||||
|
tipo = "PROMOS"
|
||||||
|
Else if Value = "PROMOS" And cliente.cuenta = "N" Then
|
||||||
|
entro = "5"
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End If
|
||||||
|
If Value = "PROMOS" Then
|
||||||
|
LogColor("Promos", Colors.red)
|
||||||
|
c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from cat_gunaprod 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))
|
||||||
|
Else
|
||||||
|
LogColor("Catalogo", Colors.red)
|
||||||
|
c2=Starter.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 cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' ")
|
||||||
|
End If
|
||||||
|
If Value = "CATALOGO" Then
|
||||||
|
lv_catalogos.Visible = False
|
||||||
|
lv_promos.Visible = False
|
||||||
|
lfila.text = "CATALOGO"
|
||||||
|
Log("PGS")
|
||||||
|
ProgressDialogShow("Cargando catalogo ...")
|
||||||
|
Sleep(100)
|
||||||
|
Private inicioContador As String = DateTime.Now
|
||||||
|
llenaCatalogo(False)
|
||||||
|
clv_prods_ll.AsView.Visible = True
|
||||||
|
Log("PGH")
|
||||||
|
LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
|
||||||
|
ProgressDialogHide
|
||||||
|
c2.Close
|
||||||
|
Else
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
lv_promos.Visible = True
|
||||||
|
lv_catalogos.Visible = False
|
||||||
|
lv_promos.Clear
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = lv_promos.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = lv_promos.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 15
|
||||||
|
label2.TextColor = Colors.Black
|
||||||
|
Dim label13 As Label
|
||||||
|
label13 = lv_promos.TwoLinesAndBitmap.Label
|
||||||
|
label13.TextSize = 15
|
||||||
|
label13.TextColor = Colors.Black
|
||||||
|
Dim label14 As Label
|
||||||
|
label14 = lv_promos.TwoLinesAndBitmap.SecondLabel
|
||||||
|
label14.TextSize = 15
|
||||||
|
label14.TextColor = Colors.Black
|
||||||
|
lfila.text = "PROMOS"
|
||||||
|
If c2.RowCount > 0 Then
|
||||||
|
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
|
||||||
|
End If
|
||||||
|
c2.Close
|
||||||
|
End If
|
||||||
|
entro = "4"
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub lv_promos_ItemClick (Position As Int, Value As Object)
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
Dim cliente As C_Cliente = B4XPages.GetPage("Cliente")
|
||||||
|
' Log($"Entro=${entro}, value=${Value}, cuenta=${cliente.cuenta}"$)
|
||||||
|
If Value = "PROMOS" And cliente.cuenta <> "N" Then
|
||||||
|
entro = "3"
|
||||||
|
marca = "PROMOS"
|
||||||
|
tipo = "PROMOS"
|
||||||
|
Else if Value = "PROMOS" And cliente.cuenta = "N" Then
|
||||||
|
entro = "5"
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End If
|
||||||
|
If entro = "3" Then
|
||||||
|
'xxxxxxxxxxxxxxxxxxxxx
|
||||||
|
Else If entro = "4" Then
|
||||||
|
Log("Entro = 4")
|
||||||
|
Starter.skmt.ExecNonQuery("delete from PROID")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO PROID VALUES (?)", Array As Object(Value))
|
||||||
|
Dim promos As C_Promos = B4XPages.GetPage("Promos")
|
||||||
|
promos.laPromo = Subs.traeProdIdDeBD.Get("id")
|
||||||
|
promos.elCliente = Subs.traeUsuarioDeBD
|
||||||
|
B4XPages.ShowPage("Promos")
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Generamos la lista de productos.
|
||||||
|
Sub llenaCatalogo(subtipo1 As String)
|
||||||
|
' Log("LlenaCatalogo")
|
||||||
|
' Private c2 As Cursor
|
||||||
|
' c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' and CAT_GP_SUBTIPO = ? ", Array As String(subtipo1))
|
||||||
|
' Private bgColor, textColor As Int
|
||||||
|
' If c2.RowCount > 0 And clv_productos.Size <> c2.RowCount Then
|
||||||
|
' clv_productos.Clear : Log("limpiamos productos")
|
||||||
|
' For i=0 To c2.RowCount -1
|
||||||
|
' c2.Position=i
|
||||||
|
' If c2.GetString("CAT_GP_TIPOPROD") = "PRIORITARIO" Then
|
||||||
|
' bgColor = Colors.RGB(255, 212, 163) 'naranja
|
||||||
|
' Else If c2.GetString("CAT_GP_TIPOPROD") = "COMPLEMENTARIO" Then
|
||||||
|
' bgColor = Colors.RGB(177, 200, 249)'azul
|
||||||
|
' else If c2.GetString("CAT_GP_TIPOPROD") = "CATALOGO REGULAR" Then
|
||||||
|
' bgColor = Colors.White
|
||||||
|
' else If c2.GetString("CAT_GP_TIPOPROD") = "ESTRATEGICO" Then
|
||||||
|
' bgColor = Colors.RGB(241, 255, 163) 'amarillo
|
||||||
|
' End If
|
||||||
|
' textColor = Colors.Black
|
||||||
|
' clv_productos.Add(CreateListItem(c2.GetString("CAT_GP_NOMBRE"), c2.GetString("CAT_GP_PRECIO"), c2.GetString("CAT_GP_ALMACEN"), clv_productos.AsView.Width, 60dip, bmp, c2.GetString("CAT_GP_ID"), bgColor, textColor), c2.GetString("CAT_GP_NOMBRE"))
|
||||||
|
' Next
|
||||||
|
' End If
|
||||||
|
' c2.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
' BACK key pressed
|
||||||
|
' Return True To close, False To cancel
|
||||||
|
If l_info.Visible Then
|
||||||
|
l_info.Visible = False
|
||||||
|
Return False
|
||||||
|
else if p_vistaPreviaTrans.Visible Then
|
||||||
|
p_vistaPreviaTrans.Visible = False
|
||||||
|
Return False
|
||||||
|
else if lv_promos.visible Then
|
||||||
|
lv_promos.Visible = False
|
||||||
|
lv_catalogos.Visible = True
|
||||||
|
p_botonesVenta.Visible = False
|
||||||
|
l_total.Visible = False
|
||||||
|
l_totProds.Visible = False
|
||||||
|
Return False
|
||||||
|
else if clv_prods_ll.AsView.Visible Then
|
||||||
|
lfila.text = "CATALOGO"
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
lv_subtipo.Visible = False
|
||||||
|
p_botonesVenta.Visible = False
|
||||||
|
l_total.Visible = False
|
||||||
|
l_totProds.Visible = False
|
||||||
|
lv_catalogos.Visible = True
|
||||||
|
Return False
|
||||||
|
' else if lv_subtipo.Visible Then
|
||||||
|
' lfila.text = "TIPO"
|
||||||
|
' lv_subtipo.Visible = False
|
||||||
|
' lv_tipo.Visible = False
|
||||||
|
' Return False
|
||||||
|
' else if lv_tipo.Visible Then
|
||||||
|
' lfila.text = "CATALOGO"
|
||||||
|
' lv_tipo.Visible = False
|
||||||
|
' lv_catalogos.Visible = True
|
||||||
|
' Return False
|
||||||
|
else If entro = "4" Then
|
||||||
|
entro = "3"
|
||||||
|
B4XPage_Appear
|
||||||
|
Return True
|
||||||
|
Else If entro = "3" Then
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
Return False
|
||||||
|
Else
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Sub b_QR_Click
|
||||||
|
If ciclo = 1 Then
|
||||||
|
ciclo = 2
|
||||||
|
ya_entro = "0"
|
||||||
|
B4XPage_Appear
|
||||||
|
else if ciclo = 2 Then
|
||||||
|
ciclo = 3
|
||||||
|
ya_entro = "0"
|
||||||
|
B4XPage_Appear
|
||||||
|
else if ciclo = 3 Then
|
||||||
|
ciclo = 4
|
||||||
|
ya_entro = "0"
|
||||||
|
B4XPage_Appear
|
||||||
|
else if ciclo = 4 Then
|
||||||
|
ciclo = 5
|
||||||
|
ya_entro = "0"
|
||||||
|
B4XPage_Appear
|
||||||
|
else if ciclo = 5 Then
|
||||||
|
ciclo = 1
|
||||||
|
ya_entro = "0"
|
||||||
|
B4XPage_Appear
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'****************************************************************************
|
||||||
|
'***************** PARA EL MAS/MENOS *************************************
|
||||||
|
'****************************************************************************
|
||||||
|
Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String, bc As Int, tc As Int) As Panel
|
||||||
|
' Dim p As B4XView = xui.CreatePanel("")
|
||||||
|
' p.SetLayoutAnimated(0, 0, 0, Width, Height)
|
||||||
|
' p.LoadLayout("prodItem")
|
||||||
|
' p_prods.Color = bc
|
||||||
|
' l_prodX.TextColor = tc
|
||||||
|
' l_prodX.TextSize = 15
|
||||||
|
' p_prods.Height = Height
|
||||||
|
' l_prodX.Height = Height
|
||||||
|
' l_prodX.Text = Text&CRLF&"# " & inv & " $ " & precioU
|
||||||
|
' l_prodX.Tag = $"ID: ${prodId}${CRLF}${Text}${CRLF}Precio: $$1.2{precioU}${CRLF}Inv: ${inv} pzs"$
|
||||||
|
' l_pCant.Tag = precioU&"|"&inv&"|"&prodId
|
||||||
|
' et_pCant.Tag = precioU&"|"&inv&"|"&prodId
|
||||||
|
' et_pCant.BringToFront
|
||||||
|
' Return p
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_prodMenos_Click
|
||||||
|
etCantHasFocus = False
|
||||||
|
' LogColor("b_prodMenos_Click", Colors.Magenta)
|
||||||
|
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
|
||||||
|
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
|
||||||
|
Dim pnl As B4XView = pnl0.GetView(0)
|
||||||
|
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
|
||||||
|
' Log($"precio|stock:${laCant.tag}"$)
|
||||||
|
If laCant.Text = "" Then laCant.Text = 0
|
||||||
|
' Log("lacant.text="&laCant.text)
|
||||||
|
laCant.Text = $"${NumberFormat2(laCant.Text-1,0,0,0,False)}"$
|
||||||
|
If laCant.Text < 0 Then laCant.Text = 0
|
||||||
|
Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map)
|
||||||
|
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
|
||||||
|
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
|
||||||
|
Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen)
|
||||||
|
' Log(tmpMap)
|
||||||
|
prodsMap.Put(id, tmpMap)
|
||||||
|
If laCant.Text = 0 Then prodsMap.Remove(id)
|
||||||
|
' LogColor("prodsMap="&prodsMap, Colors.blue)
|
||||||
|
' (Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
Subs.actualizaProducto(Subs.traeAlmacen, precio, laCant.text, Subs.traeProdNombre(id), id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
cuentaProds
|
||||||
|
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_prodMas_Click
|
||||||
|
etCantHasFocus = False
|
||||||
|
' LogColor("b_prodMas_Click", Colors.Magenta)
|
||||||
|
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
|
||||||
|
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
|
||||||
|
Dim pnl As B4XView = pnl0.GetView(0)
|
||||||
|
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
|
||||||
|
' Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map)
|
||||||
|
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
|
||||||
|
Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||||
|
If laCant.Text = "" Then laCant.Text = 0
|
||||||
|
|
||||||
|
If laCant.Text + 1 <= inv Then
|
||||||
|
Log(NumberFormat2(laCant.Text+1,0,0,0,False))
|
||||||
|
laCant.Text = $"${NumberFormat2(laCant.Text+1,0,0,0,False)}"$
|
||||||
|
' Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
|
||||||
|
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
|
||||||
|
' Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen)
|
||||||
|
' Log(tmpMap)
|
||||||
|
' prodsMap.Put(id, tmpMap)
|
||||||
|
' LogColor(prodsMap, Colors.blue)
|
||||||
|
End If
|
||||||
|
' Subs.actualizaProducto(Subs.traeAlmacen, laCant.text, id, clienteId)
|
||||||
|
Subs.actualizaProducto(Subs.traeAlmacen, precio, laCant.text, Subs.traeProdNombre(id), id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
cuentaProds
|
||||||
|
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub et_pCant_TextChanged (Old As String, New As String)
|
||||||
|
'' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
|
||||||
|
' Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
|
||||||
|
' Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||||
|
' If(New = "" Or New = Null) Then New = 0
|
||||||
|
' If(New > inv) Then
|
||||||
|
' Sender.As(EditText).text = inv
|
||||||
|
' End If
|
||||||
|
'' Log($"inventario=${inv}"$)
|
||||||
|
' If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds
|
||||||
|
|
||||||
|
|
||||||
|
If etCantHasFocus = True Then
|
||||||
|
|
||||||
|
' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
|
||||||
|
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
|
||||||
|
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
|
||||||
|
Dim pnl As B4XView = pnl0.GetView(0)
|
||||||
|
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
|
||||||
|
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
|
||||||
|
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
|
||||||
|
Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||||
|
Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||||
|
If(New = "" Or New = Null) Then New = 0
|
||||||
|
If(New > inv) Then
|
||||||
|
Sender.As(EditText).text = inv
|
||||||
|
End If
|
||||||
|
' Log($"inventario=${inv}"$)
|
||||||
|
If Not(Old = "0" And New = "") And laCant.Text <> Null And laCant.Text <> 0 And laCant.Text <> "" And etCantHasFocus Then
|
||||||
|
Subs.actualizaProducto(Subs.traeAlmacen, precio, laCant.text, Subs.traeProdNombre(id), id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
cuentaProds
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub cuentaProds
|
||||||
|
' LogColor($"Productos de la orden: ${c_prods.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red)
|
||||||
|
Log("===========================")
|
||||||
|
Private c As Cursor = Starter.skmt.ExecQuery($"select sum(PE_COSTO_TOT) as total, sum(PE_CANT) as cant from PEDIDO where PE_CLIENTE = '${clienteId}'"$)
|
||||||
|
' LogColor("TIEMPO cuentaProds =" & ((DateTime.Now-inicioContador)/1000), Colors.Red)
|
||||||
|
' LogColor(prodsMap, Colors.Magenta)
|
||||||
|
p_botonesVenta.Visible = True
|
||||||
|
p_botonesVenta.BringToFront
|
||||||
|
c.Position=0
|
||||||
|
Log($"Total Prods: ${c.GetString("cant")}, Total Compra: $$1.2{c.GetString("total")}"$)
|
||||||
|
c.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
|
||||||
|
LogColor($"focus changed=${HasFocus}"$, Colors.Magenta)
|
||||||
|
etCantHasFocus = HasFocus
|
||||||
|
cuentaProds
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_terminar1_Click
|
||||||
|
' Log("b_terminar1_Click")
|
||||||
|
' ya_entro = "0" : Log("ya_entro=1")
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from PEDIDO WHERE PE_PRONOMBRE = ? ", Array As Object("N/A") )
|
||||||
|
|
||||||
|
lv_promos.Visible = False
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
lv_catalogos.Visible = True
|
||||||
|
lv_prodsPedido.Clear
|
||||||
|
' lv_prodsPedido.TwoLinesLayout.Label.Height = 50dip
|
||||||
|
Private c_prods As Cursor=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_CEDIS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_PRONOMBRE")
|
||||||
|
If c_prods.RowCount > 0 Then
|
||||||
|
Private cs As CSBuilder
|
||||||
|
For i=0 To c_prods.RowCount -1
|
||||||
|
cs.Initialize
|
||||||
|
c_prods.Position=i
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = lv_prodsPedido.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
label1.color = Colors.White
|
||||||
|
Private textColor As Int = Colors.black
|
||||||
|
If Not(IsNumber(c_prods.GetString("PE_CEDIS"))) Then textColor = Colors.RGB(210,105,30) 'Si es promo, cambiamos el color del texto.
|
||||||
|
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = lv_prodsPedido.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 15
|
||||||
|
label2.TextColor = Colors.Blue
|
||||||
|
lv_prodsPedido.AddTwoLines(cs.Color(textColor).append(c_prods.GetString("PE_PRONOMBRE")).pop,"Cantidad #"& c_prods.GetString("PE_CANT")& " SubTotal $"& c_prods.GetString("PE_COSTO_TOT")& " Folio "& c_prods.GetString("PE_FOLIO"))
|
||||||
|
folio = c_prods.GetString("PE_FOLIO")
|
||||||
|
Next
|
||||||
|
'select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_CEDIS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)
|
||||||
|
c=Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) 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 )")
|
||||||
|
C.Position=0
|
||||||
|
l_cant.Text = c.GetString("PC_NOART")
|
||||||
|
l_total2.Text = c.GetString("PC_MONTO")
|
||||||
|
c.Close
|
||||||
|
End If
|
||||||
|
c_prods.Close
|
||||||
|
p_vistaPreviaTrans.Width = Root.Width
|
||||||
|
Subs.centraPanel(p_vistaPrevia, Root.Width)
|
||||||
|
If Subs.pedidoGuardado Then b_rechazar.Enabled = False Else b_rechazar.Enabled = True
|
||||||
|
p_vistaPrevia.Visible=True
|
||||||
|
p_vistaPreviaTrans.Visible=True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_continuar_Click
|
||||||
|
Log("b_continuar_Click")
|
||||||
|
cuentaProds
|
||||||
|
Private p1 As Map
|
||||||
|
For Each p As String In prodsMap.Keys
|
||||||
|
p1 = prodsMap.Get(p)
|
||||||
|
Log(p & "|" & p1)
|
||||||
|
Private pn As String = Subs.traeProdNombre(p)
|
||||||
|
Subs.guardaProductoSinGestion(Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
Next
|
||||||
|
Log("promos-inv, prods-inv, cat-vis")
|
||||||
|
lv_promos.Visible = False
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
lv_subtipo.Visible = False
|
||||||
|
lv_tipo.Visible = False
|
||||||
|
lv_catalogos.Visible = True
|
||||||
|
Log("Continuar")
|
||||||
|
Dim m As Map = Subs.traeTotalesClienteActual
|
||||||
|
prodsPedidoActual = m.Get("productos")
|
||||||
|
montoPedidoActual = m.Get("monto")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub l_prodX_LongClick
|
||||||
|
Log("longclic = "&Sender.as(Label).tag)
|
||||||
|
l_info.Text = Sender.as(Label).tag
|
||||||
|
l_info.Visible = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub l_info_Click
|
||||||
|
l_info.Visible = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_promos_ItemLongClick (Position As Int, Value As Object)
|
||||||
|
Log("Promo longclic = "&Value)
|
||||||
|
Private id As String = ""
|
||||||
|
Dim c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID from cat_gunaprod where CAT_GP_TIPO = 'PROMOS' and CAT_GP_NOMBRE = '${Value}'"$)
|
||||||
|
If c.RowCount > 0 Then
|
||||||
|
c.Position = 0
|
||||||
|
id = c.GetString("CAT_GP_ID")
|
||||||
|
End If
|
||||||
|
l_info.Text = $"ID: ${id}${CRLF}${Value}"$
|
||||||
|
l_info.Visible = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_buscar_Click
|
||||||
|
forzarBusqueda = True
|
||||||
|
Busca_TextChanged("",BUSCA.Text)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_tipo_ItemClick (Position As Int, Value As Object)
|
||||||
|
' lfila.text = "SUB TIPO"
|
||||||
|
' lv_tipo.Visible = False
|
||||||
|
' lv_subtipo.Height = Root.Height * 0.7
|
||||||
|
' lv_subtipo.Visible = True
|
||||||
|
' Private c As Cursor = Starter.skmt.ExecQuery2("select distinct CAT_GP_SUBTIPO from cat_gunaprod where CAT_GP_TIPO = ? order by CAT_GP_SUBTIPO", Array As String(Value))
|
||||||
|
' If c.RowCount > 0 Then
|
||||||
|
' Dim label1 As Label
|
||||||
|
' label1 = lv_subtipo.SingleLineLayout.Label
|
||||||
|
' label1.TextSize = 17
|
||||||
|
' label1.TextColor = Colors.Black
|
||||||
|
' lv_subtipo.Clear
|
||||||
|
' For i=0 To c.RowCount-1
|
||||||
|
' c.Position=i
|
||||||
|
' lv_subtipo.AddSingleLine(c.GetString("CAT_GP_SUBTIPO"))
|
||||||
|
' Next
|
||||||
|
' End If
|
||||||
|
' c.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_subtipo_ItemClick (Position As Int, Value As Object)
|
||||||
|
' lfila.text = "SUB TIPO"
|
||||||
|
' LogColor("Catalogo", Colors.red)
|
||||||
|
' lv_catalogos.Visible = False
|
||||||
|
' lv_subtipo.Visible = False
|
||||||
|
' lv_promos.Visible = False
|
||||||
|
' lfila.text = "CATALOGO"
|
||||||
|
' ProgressDialogShow("Cargando catalogo ...")
|
||||||
|
' Sleep(100)
|
||||||
|
' Private inicioContador As String = DateTime.Now
|
||||||
|
' llenaCatalogo(Value)
|
||||||
|
' clv_prods_ll.AsView.Visible = True
|
||||||
|
' LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
|
||||||
|
' ProgressDialogHide
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_vistaPreviaTrans_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_rechazar_Click
|
||||||
|
If folio <> "" Then
|
||||||
|
result = Msgbox2($"Seguro que desea borrar el pedido completo?${CRLF}Haciendo clic largo sobre un producto se pueden borrar articulos independientes."$,"Rechazar Pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||||
|
If result = DialogResponse.POSITIVE Then
|
||||||
|
Subs.borraPedidoClienteActual
|
||||||
|
prodsMap.Initialize
|
||||||
|
B4XPages.MainPage.promos.promosMap.Initialize
|
||||||
|
Log("Llamamos LlenaProdsLL")
|
||||||
|
LlenaProdsLL(Null)
|
||||||
|
Log("Positivo")
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
Else
|
||||||
|
Log("NO Positivo")
|
||||||
|
p_vistaPreviaTrans.Visible = False
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore
|
||||||
|
End If
|
||||||
|
p_vistaPreviaTrans.Visible=False
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_aceptar_Click
|
||||||
|
p_vistaPreviaTrans.Visible=False
|
||||||
|
B4XPages.ShowPage("Cliente")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_prodsPedido_ItemLongClick (Position As Int, Value As Object)
|
||||||
|
Private sDate,sTime, clie_id, usuario As String
|
||||||
|
If Not(Subs.pedidoGuardado) Then
|
||||||
|
result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
|
||||||
|
If result = DialogResponse.POSITIVE Then
|
||||||
|
c=Starter.skmt.ExecQuery2("select PE_PROID,PE_CANT FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value))
|
||||||
|
c.Position=0
|
||||||
|
Log("aqui1")
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (Subs.traeAlmacen,c.GetString("PE_PROID"),c.GetString("PE_CANT")* -1))
|
||||||
|
c.Close
|
||||||
|
Log("aqui2")
|
||||||
|
c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from cat_gunaprod where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)) and CAT_GP_CLASIF = 'PROMOS' AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS'", Array As String(Value))
|
||||||
|
c.Position=0
|
||||||
|
If c.GetString("CUANTOS") > 0 Then
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value))
|
||||||
|
Log("aqui3")
|
||||||
|
Else
|
||||||
|
Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value))
|
||||||
|
Log("aqui4")
|
||||||
|
End If
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
|
sTime=DateTime.Time(DateTime.Now)
|
||||||
|
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||||
|
c.Position=0
|
||||||
|
clie_id = c.GetString("CUENTA")
|
||||||
|
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
|
||||||
|
c.Position=0
|
||||||
|
usuario = c.GetString("USUARIO")
|
||||||
|
c=Starter.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
|
||||||
|
If c.GetString("CUANTOS") > 0 Then
|
||||||
|
Log("aqui5")
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps))
|
||||||
|
' Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
h =Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) 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 )")
|
||||||
|
h.Position=0
|
||||||
|
l_cant.Text = h.GetString("PC_NOART")
|
||||||
|
l_total2.Text = h.GetString("PC_MONTO")
|
||||||
|
h.Close
|
||||||
|
Else
|
||||||
|
Log("aqui6")
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
h =Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) 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 )")
|
||||||
|
h.Position=0
|
||||||
|
l_cant.Text = 0
|
||||||
|
l_total2.Text = 0
|
||||||
|
h.Close
|
||||||
|
End If
|
||||||
|
b_terminar1_Click
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
ToastMessageShow("Esta venta ya esta guardada, no se puede editar ni borrar.", False)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub clv_prods_ll_ItemClick (Index As Int, Value As Object)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub l_prodx_click
|
||||||
|
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
|
||||||
|
Private p0 As B4XView = clv_prods_ll.GetPanel(index)
|
||||||
|
Private p As B4XView = p0.GetView(0)
|
||||||
|
Private cant1 As B4XView = p.GetView(2).GetView(2)
|
||||||
|
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
|
||||||
|
' Log(clv_prods_ll.GetValue(index))
|
||||||
|
Log(cant1.Text)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
|
||||||
|
' Private inicioContador As String = DateTime.Now
|
||||||
|
' Log($"clv_prods_ll_VisibleRangeChanged : ${FirstIndex}, ${LastIndex} "$)
|
||||||
|
Dim ExtraSize As Int = 30 'List size
|
||||||
|
For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_prods_ll.Size - 1)
|
||||||
|
Dim Pnl As B4XView = clv_prods_ll.GetPanel(i)
|
||||||
|
If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then
|
||||||
|
' Log(listaRenglones)
|
||||||
|
If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout
|
||||||
|
Pnl.LoadLayout("proditem")
|
||||||
|
p_prods.Width = Root.Width * 0.92
|
||||||
|
p_botMasMen.Left = p_prods.Width - (p_botMasMen.Width + 5)
|
||||||
|
Log("1")
|
||||||
|
p_prods.Height = 200dip
|
||||||
|
Log("2")
|
||||||
|
Pnl.Height = 300dip
|
||||||
|
' p_prods.Height = 200dip
|
||||||
|
Private cs As CSBuilder
|
||||||
|
cs.Initialize
|
||||||
|
l_prodX.SetTextSizeAnimated(0, 13)
|
||||||
|
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null And clv_prods_ll.GetValue(i).As(Map).Get("cant") > 0 Then
|
||||||
|
p_prods.Color=0xFFE2EEFF
|
||||||
|
et_pCant.TextColor=Colors.Red
|
||||||
|
If Subs.pedidoGuardado Then
|
||||||
|
Log("YA SE GUARDO")
|
||||||
|
et_pCant.Enabled = False
|
||||||
|
' b_prodMas.Enabled = False
|
||||||
|
b_prodMenos.Enabled = False
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Private precio As String=NumberFormat2(clv_prods_ll.GetValue(i).As(Map).Get("precio").As(Double),1,2,2,False)
|
||||||
|
' Log(clv_prods_ll.GetValue(i).As(Map))
|
||||||
|
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("id")).append(CRLF).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
|
||||||
|
End If
|
||||||
|
' Log($"${i}, ${FirstIndex}, ${LastIndex}, ${Pnl.NumberOfViews}. ${clv_prods_ll.Size}"$)
|
||||||
|
Else 'Not visible
|
||||||
|
' If Pnl.NumberOfViews > 0 Then
|
||||||
|
' Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout
|
||||||
|
' End If
|
||||||
|
End If
|
||||||
|
PCLV.B4XSeekBar1.Value = clv_prods_ll.Size - FirstIndex
|
||||||
|
' Log($"Bar value: ${PCLV.B4XSeekBar1.Value}"$)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Busca_TextChanged (Old As String, New As String)
|
||||||
|
' 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
|
||||||
|
forzarBusqueda = False
|
||||||
|
clv_prods_ll.Clear
|
||||||
|
listaProds.Initialize
|
||||||
|
listaHints.Initialize
|
||||||
|
Sleep(0)
|
||||||
|
' Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from CAT_GUNAPROD where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' And CAT_GP_TIPOPROD2 <> '2' order by CAT_GP_NOMBRE"$)
|
||||||
|
Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from CAT_GUNAPROD where (CAT_GP_NOMBRE like '%${New}%' or CAT_GP_ID like '%${New}%') and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
|
||||||
|
Log("Llamamos LlenaProdsLL")
|
||||||
|
LlenaProdsLL(p)
|
||||||
|
' 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"))
|
||||||
|
' listaProds.Add(tempMap)
|
||||||
|
' listaHints.Add(p.GetString("CAT_GP_NOMBRE"))
|
||||||
|
' Dim Pnl As B4XView = xui.CreatePanel("")
|
||||||
|
' Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip) 'Panel height + 4 for drop shadow
|
||||||
|
' clv_prods_ll.Add(Pnl, tempMap)
|
||||||
|
' Loop
|
||||||
|
' LogColor(clv_prods_ll.Size, Colors.red)
|
||||||
|
'' Log(listaProds)
|
||||||
|
' p.Close
|
||||||
|
' PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size
|
||||||
|
' PCLV.B4XSeekBar1.MinValue = 0
|
||||||
|
' PCLV.B4XSeekBar1.Interval = clv_prods_ll.Size/10
|
||||||
|
' PCLV.B4XSeekBar1.Value = clv_prods_ll.Size
|
||||||
|
' PCLV.B4XSeekBar1.Update
|
||||||
|
' 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)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub LlenaProdsLL(p As ResultSet)
|
||||||
|
' Log("LlenaProdsLL")
|
||||||
|
listaProds.Initialize
|
||||||
|
If hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV.
|
||||||
|
Dim cantsMap As Map
|
||||||
|
cantsMap.Initialize
|
||||||
|
Dim pe As ResultSet = Starter.skmt.ExecQuery($"select PE_PROID, PE_CANT from PEDIDO where PE_CLIENTE = '${clienteId}' and PE_CEDIS = '${Subs.traeAlmacen}'"$)
|
||||||
|
' LogColor("Ponemos productos de pedido anterior: "&pe.RowCount, Colors.red)
|
||||||
|
Do While pe.NextRow
|
||||||
|
Private cant As Int = 0
|
||||||
|
cantsMap.put(pe.GetString("PE_PROID"), pe.GetString("PE_CANT"))
|
||||||
|
Loop
|
||||||
|
pe.Close
|
||||||
|
End If
|
||||||
|
' Log(p.IsInitialized)
|
||||||
|
If p.IsInitialized Then
|
||||||
|
' Log("YA HAY RESULSET")
|
||||||
|
Else
|
||||||
|
' Log("NO HAY RESULSET")
|
||||||
|
Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from CAT_GUNAPROD where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
|
||||||
|
End If
|
||||||
|
|
||||||
|
Do While p.NextRow
|
||||||
|
Private cant As Int = 0
|
||||||
|
If hayPedido And cantsMap.ContainsKey(p.GetString("CAT_GP_ID")) Then cant = cantsMap.Get(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"), "cant":cant)
|
||||||
|
listaProds.Add(tempMap)
|
||||||
|
Loop
|
||||||
|
p.Close
|
||||||
|
' Log(listaProds)
|
||||||
|
PCLV.Commit
|
||||||
|
clv_prods_ll.Clear
|
||||||
|
Private listaProdsConCant, listaProdsConCantIndex As List
|
||||||
|
listaProdsConCant.Initialize
|
||||||
|
listaProdsConCantIndex.Initialize
|
||||||
|
listaHints.Initialize
|
||||||
|
For q=0 To listaProds.Size-1' Sacamos los productos con cantidad previa.
|
||||||
|
If listaProds.Get(q).As(Map).Get("cant").As(Int) <> 0 Then
|
||||||
|
' Log(listaProds.Get(q).As(Map).Get("cant"))
|
||||||
|
listaProdsConCant.Add(listaProds.Get(q))
|
||||||
|
listaProdsConCantIndex.Add(q)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
' Log(listaProdsConCantIndex)
|
||||||
|
Private cont As Int = 0
|
||||||
|
For pr0=0 To listaProdsConCant.Size - 1 'Agregamos los productos con cantidad previa.
|
||||||
|
Private Pnl As B4XView = xui.CreatePanel("")
|
||||||
|
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
|
||||||
|
clv_prods_ll.Add(Pnl, listaProdsConCant.Get(pr0))
|
||||||
|
listaHints.Add(listaProdsConCant.get(pr0).As(Map).Get("prod"))
|
||||||
|
cont = cont + 1
|
||||||
|
Next
|
||||||
|
' LogColor(clv_prods_ll.Size, Colors.red)
|
||||||
|
' Log(listaProds.Size)
|
||||||
|
For pr=0 To listaProds.Size-1
|
||||||
|
If listaProdsConCantIndex.IndexOf(pr) = -1 Then
|
||||||
|
Private Pnl As B4XView = xui.CreatePanel("")
|
||||||
|
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 60dip)
|
||||||
|
clv_prods_ll.Add(Pnl, listaProds.Get(pr))
|
||||||
|
listaHints.Add(listaProds.get(pr).As(Map).Get("prod"))
|
||||||
|
cont = cont + 1
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
' LogColor(clv_prods_ll.Size, Colors.red)
|
||||||
|
' PCLV.Commit
|
||||||
|
' Log("CONT=" & cont)
|
||||||
|
' Log("CLV_PRODSLL="&clv_prods_ll.Size)
|
||||||
|
PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size
|
||||||
|
PCLV.B4XSeekBar1.MinValue = 0
|
||||||
|
PCLV.B4XSeekBar1.Interval = clv_prods_ll.Size/20
|
||||||
|
PCLV.B4XSeekBar1.Value = clv_prods_ll.Size
|
||||||
|
PCLV.B4XSeekBar1.Update
|
||||||
|
' Log($"Min:0, max:${clv_prods_ll.Size}, Interval:${clv_prods_ll.Size/20}"$)
|
||||||
|
reiniciarlistaProds = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Return the hint that will be displayed when the user fast scrolls the list. It can be a string or CSBuilder.
|
||||||
|
Sub PCLV_HintRequested(Index As Int) As Object
|
||||||
|
Dim word As String = listaHints.get(Index)
|
||||||
|
Return word
|
||||||
|
End Sub
|
||||||
449
B4A/C_Promos.bas
Normal file
@@ -0,0 +1,449 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Mods 'ignore
|
||||||
|
'20230526 - Se cambió en b_terminar_click y b_continuar_click la funcion "guardaProducto" por "guardaProductoSinGestion", para que no ponga que ya esta guardada la orden y no deje borrar productos.
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI
|
||||||
|
Private l_promoDesc As Label
|
||||||
|
Private lv_prodsFijos As ListView
|
||||||
|
Private clv_prodsVariabes As CustomListView
|
||||||
|
Private l_prodsFijos As Label
|
||||||
|
Private l_prodsVariables As Label
|
||||||
|
Private i_prod As ImageView
|
||||||
|
Private l_prodX As Label
|
||||||
|
Private p_prods As Panel
|
||||||
|
Private b_prodMenos As Button
|
||||||
|
Private et_pCant As EditText
|
||||||
|
Private b_prodMas As Button
|
||||||
|
Private l_pCant As Label
|
||||||
|
Dim totalProds As Int = 0
|
||||||
|
Dim prodsVarReq As Int = 0
|
||||||
|
Dim prodsVarReq2 As Int = 0
|
||||||
|
Dim totalCompra As Float = 0
|
||||||
|
Dim prodsFijosTot As Float = 0
|
||||||
|
Dim tpf As Int = 0
|
||||||
|
Dim tpf2 As Int = 0
|
||||||
|
Dim maxCantPromos As Int = 1
|
||||||
|
Private l_totProds As Label
|
||||||
|
Private l_total As Label
|
||||||
|
Private b_terminar1 As Button
|
||||||
|
Private p_promociones As Panel
|
||||||
|
Dim prodsIds, prodsCants, prodsPrecios, prodsIds2, prodsCants2, prodsPrecios2 As List
|
||||||
|
Dim estaPromo, esteCliente As String
|
||||||
|
Private b_promoMas As Button
|
||||||
|
Private b_promoMenos As Button
|
||||||
|
Private et_promoCant As EditText
|
||||||
|
Private l_promosCant As Label
|
||||||
|
Private b_continuar As Button
|
||||||
|
Private p_prodsVariables As Panel
|
||||||
|
Dim laPromo = "", elCliente = "" As String
|
||||||
|
Dim prodsPedidoActual As String 'ignore
|
||||||
|
Dim montoPedidoActual As String 'ignore
|
||||||
|
Dim promosMap As Map
|
||||||
|
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)
|
||||||
|
B4XPages.SetTitle(Me, $"${subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
|
||||||
|
Root = Root1
|
||||||
|
'load the layout to Root
|
||||||
|
Root.LoadLayout("promociones")
|
||||||
|
promosMap.Initialize
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.blue)
|
||||||
|
p_promociones.Top=0
|
||||||
|
p_promociones.Left=0
|
||||||
|
p_promociones.Height=Root.Height
|
||||||
|
p_promociones.Width=Root.Width
|
||||||
|
b_terminar1.Left = Root.Width - (b_terminar1.Width + 10)
|
||||||
|
b_continuar.Left = Root.Width - b_terminar1.Width - (b_continuar.Width + 20)
|
||||||
|
prodsIds.Initialize
|
||||||
|
prodsCants.Initialize
|
||||||
|
prodsPrecios.Initialize
|
||||||
|
prodsIds2.Initialize
|
||||||
|
prodsCants2.Initialize
|
||||||
|
prodsPrecios2.Initialize
|
||||||
|
Dim m As Map = Subs.traeTotalesClienteActual
|
||||||
|
prodsPedidoActual = m.Get("productos")
|
||||||
|
montoPedidoActual = m.Get("monto")
|
||||||
|
' Log($"laPromo=${laPromo}, el cliente=${elCliente}"$)
|
||||||
|
If laPromo <> "" Then muestraPromo(laPromo, elCliente)
|
||||||
|
End Sub
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Sub muestraPromo(promo As String, cliente As String)
|
||||||
|
Private thisLog As Boolean = False
|
||||||
|
' If thisLog Then Log(promo)
|
||||||
|
estaPromo = promo
|
||||||
|
esteCliente = cliente
|
||||||
|
Private mp As Map = Subs.traePromo(promo, cliente)
|
||||||
|
Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción.
|
||||||
|
Private invDispPromo As Map = Subs.traemosInventarioDisponibleParaPromo(promo)
|
||||||
|
' If thisLog Then Log($"invDispPromo=${invDispPromo}"$)
|
||||||
|
If thisLog Then Log("Max promos por inv de prods FIJOS: " & Subs.revisaMaxPromosProdsFijosPorInventario(mp))
|
||||||
|
If thisLog Then Log("Max promos por inv de prods VARIABLES: " & Subs.revisaMaxPromosProdsVariablesPorInventario(mp))
|
||||||
|
maxCantPromos = Subs.revisaMaxPromosProdsVariablesPorInventario(mp)
|
||||||
|
et_promoCant.Text = 1
|
||||||
|
l_promosCant.text = "Max promos: " & maxCantPromos
|
||||||
|
Private cs As CSBuilder
|
||||||
|
cs.Initialize
|
||||||
|
If thisLog Then Log(mp)
|
||||||
|
If thisLog Then Log(prodsPromo)
|
||||||
|
'Ponemos la promo y descripción.
|
||||||
|
' Dim desc As String = $"Promoción: ${promo}${CRLF}${mp.Get("descripcion")}"$
|
||||||
|
' Dim desc As String = cs.append("Promocion: ").Color(Colors.RGB(100,149,237)).Append(promo).pop.append(CRLF).Append(mp.Get("descripcion")).Popall
|
||||||
|
l_promoDesc.Text = cs.Color(Colors.RGB(100,149,237)).append("Promocion: ").pop.append(CRLF).Append(promo).append(CRLF).Append(mp.Get("descripcion")).Popall
|
||||||
|
prodsFijosTot = 0
|
||||||
|
'Ponemos el texto en las etiquetas de la cantidad de productos.
|
||||||
|
' Dim pf As List = mp.Get("prodsFijos")
|
||||||
|
Dim pv As List = mp.Get("prodsVariables")
|
||||||
|
Private listaPreciosPV As List = mp.Get("prodsVariablesPrecios")
|
||||||
|
If thisLog Then Log(mp)
|
||||||
|
tpf = 0
|
||||||
|
For Each pfp As Int In mp.Get("prodsFijosPiezas").As(List)
|
||||||
|
tpf = tpf + pfp
|
||||||
|
Next
|
||||||
|
tpf2 = tpf
|
||||||
|
' tpf = tpf * maxCantPromos
|
||||||
|
l_prodsFijos.Text = $"Productos fijos (${tpf})"$
|
||||||
|
prodsVarReq = mp.Get("prodsVariablesRequeridos")
|
||||||
|
prodsVarReq2 = prodsVarReq
|
||||||
|
l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq}"$
|
||||||
|
If prodsVarReq = 0 Then
|
||||||
|
p_prodsVariables.Visible = False
|
||||||
|
Else
|
||||||
|
p_prodsVariables.Visible = True
|
||||||
|
End If
|
||||||
|
'Llenamos el listview con los productos fijos.
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = lv_prodsFijos.SingleLineLayout.Label
|
||||||
|
label1.TextSize = 13
|
||||||
|
label1.TextColor = Colors.black
|
||||||
|
lv_prodsFijos.SingleLineLayout.ItemHeight = 30dip
|
||||||
|
lv_prodsFijos.Clear
|
||||||
|
' If pf.Size < 1 Then pf.Add("Sin productos fijos.")
|
||||||
|
lv_prodsFijos.Clear
|
||||||
|
agregaFijosALista(mp, True)
|
||||||
|
If thisLog Then Log("Total prods fijos = " & prodsFijosTot)
|
||||||
|
' If thisLog Then Log("======="&prodsMap)
|
||||||
|
l_totProds.text = $"Productos: ${tpf}"$
|
||||||
|
l_total.Text = $"Total: $$1.2{prodsFijosTot}"$
|
||||||
|
' Dim ins As InputStream
|
||||||
|
' Dim bmp As Bitmap
|
||||||
|
' Dim jpeg() As Byte
|
||||||
|
|
||||||
|
'Llenamos el listview con los productos variables.
|
||||||
|
If thisLog Then Log(pv)
|
||||||
|
If thisLog Then Log("invDisp=" & invDispPromo)
|
||||||
|
clv_prodsVariabes.Clear
|
||||||
|
For Each p As String In pv
|
||||||
|
If invDispPromo.ContainsKey(p) Then 'Si no esta en la lista de productos con inventario no lo mostramos.
|
||||||
|
' c2.Position=i
|
||||||
|
' jpeg = c2.GetBlob("CAT_GP_IMG")
|
||||||
|
' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length)
|
||||||
|
' bmp.Initialize2(ins)
|
||||||
|
Private indicePV As String = pv.IndexOf(p)
|
||||||
|
Private estePrecio as string = listaPreciosPV.Get(indicePV)
|
||||||
|
Private thisProd As Map = prodsPromo.Get(p)
|
||||||
|
If thisLog Then Log(thisProd)
|
||||||
|
clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes.AsView.Width, 50dip, Null, p), p)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
b_terminar1.Visible = False
|
||||||
|
b_continuar.Visible = False
|
||||||
|
cuentaProds
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Agregamos los productos fijos a una lista para despues meterlos en el pedido.
|
||||||
|
Sub agregaFijosALista(mp As Map, addListItem As Boolean)
|
||||||
|
Private thisLog As Boolean = False
|
||||||
|
Private cont As Int = 0
|
||||||
|
prodsFijosTot = 0
|
||||||
|
Dim pf As List = mp.Get("prodsFijos")
|
||||||
|
If pf.Size < 1 Then pf.Add("Sin productos fijos.")
|
||||||
|
' Private m As Map
|
||||||
|
' prodsMap.Put(estaPromo, CreateMap("cant":1, "precio":0))
|
||||||
|
' prodsIds.Add(estaPromo)
|
||||||
|
prodsIds.clear
|
||||||
|
prodsCants.clear
|
||||||
|
prodsPrecios.clear
|
||||||
|
prodsIds.Add(estaPromo)
|
||||||
|
prodsCants.Add(et_promoCant.text.As(Int))
|
||||||
|
prodsPrecios.Add(0)
|
||||||
|
For Each p As String In pf
|
||||||
|
' Log($"cont=${cont}, mp=${mp}"$)
|
||||||
|
If mp.Get("prodsFijosPiezas").As(List).Size > 0 Then
|
||||||
|
Private tpi As String = mp.Get("prodsFijosPiezas").As(List).Get(cont)
|
||||||
|
Else
|
||||||
|
Private tpi As String = 0
|
||||||
|
End If
|
||||||
|
If mp.Get("prodsFijosPrecios").As(List).Size > 0 Then
|
||||||
|
Private tpr As String = mp.Get("prodsFijosPrecios").As(List).Get(cont)
|
||||||
|
Else
|
||||||
|
Private tpr As String = 0
|
||||||
|
End If
|
||||||
|
prodsFijosTot = prodsFijosTot + (tpi * tpr)
|
||||||
|
If thisLog Then Log("|"&tpi&"|"&p)
|
||||||
|
Private ntpi As Int = tpi * et_promoCant.text
|
||||||
|
If addListItem And tpi > 0 Then lv_prodsFijos.AddSingleLine(ntpi & " " & Subs.traeProdNombre(p) & " - $" & tpr)
|
||||||
|
cont = cont+1
|
||||||
|
' m=CreateMap("cant":tpi, "precio":tpr)
|
||||||
|
' prodsMap.Put(p, m)
|
||||||
|
prodsIds.Add(p)
|
||||||
|
prodsCants.Add(tpi.As(Int)*et_promoCant.text.As(Int))
|
||||||
|
prodsPrecios.Add(tpr) '*et_promoCant.text.As(Int)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String) As Panel 'ignore
|
||||||
|
Dim p As B4XView = xui.CreatePanel("")
|
||||||
|
p.SetLayoutAnimated(0, 0, 0, Width, Height)
|
||||||
|
p.LoadLayout("proditempromo")
|
||||||
|
l_prodX.TextSize = 15
|
||||||
|
l_prodX.Text = Text
|
||||||
|
l_prodX.TextSize = 15
|
||||||
|
p_prods.Height = Height
|
||||||
|
p_prods.Width = clv_prodsVariabes.GetBase.Width
|
||||||
|
l_prodX.Height = Height
|
||||||
|
' l_pCant.Text = 0
|
||||||
|
l_pCant.Tag = precioU&"|"&inv&"|"&prodId
|
||||||
|
et_pCant.Tag = precioU&"|"&inv&"|"&prodId
|
||||||
|
et_pCant.BringToFront
|
||||||
|
' i_prod.Bitmap = img
|
||||||
|
Return p
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_prodMenos_Click
|
||||||
|
Dim index As Int = clv_prodsVariabes.GetItemFromView(Sender)
|
||||||
|
Dim pnl0 As B4XView = clv_prodsVariabes.GetPanel(index)
|
||||||
|
Dim pnl As B4XView = pnl0.GetView(0)
|
||||||
|
' Dim laCant As B4XView = pnl.GetView(5)
|
||||||
|
Dim laCant As B4XView = pnl.GetView(2).GetView(4)
|
||||||
|
' Log($"precio|stock:${laCant.tag}"$)
|
||||||
|
laCant.Text = $"$1.0{laCant.Text-1}"$
|
||||||
|
If laCant.Text < 0 Then laCant.Text = 0
|
||||||
|
|
||||||
|
Log(Regex.Split("\|", laCant.tag)(0))
|
||||||
|
Private precio As String = Regex.Split("\|", laCant.tag)(0)
|
||||||
|
' Private inv As String = Regex.Split("\|", laCant.tag)(1)
|
||||||
|
Private prodId As String = Regex.Split("\|", laCant.tag)(2)
|
||||||
|
Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo)
|
||||||
|
Log(tmpMap)
|
||||||
|
promosMap.Put(prodId, tmpMap)
|
||||||
|
If laCant.Text = 0 Then promosMap.Remove(prodId)
|
||||||
|
LogColor(promosMap, Colors.Magenta)
|
||||||
|
cuentaProds
|
||||||
|
' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$
|
||||||
|
' l_totProds.text = $"Total Productos: ${totalProds}"$
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_prodMas_Click
|
||||||
|
If totalProds < prodsVarReq + tpf Then
|
||||||
|
Dim index As Int = clv_prodsVariabes.GetItemFromView(Sender)
|
||||||
|
Dim pnl0 As B4XView = clv_prodsVariabes.GetPanel(index)
|
||||||
|
Dim pnl As B4XView = pnl0.GetView(0)
|
||||||
|
' Dim laCant As B4XView = pnl.GetView(5)
|
||||||
|
Dim laCant As B4XView = pnl.GetView(2).GetView(4)
|
||||||
|
' Log($"precio|stock:${laCant.tag}"$)
|
||||||
|
' Log($"Indice: ${index}, cant:${laCant.Text+1}, precioU: ${laCant.tag}"$)
|
||||||
|
Dim esteTag As List = Regex.Split("\|", laCant.Tag)
|
||||||
|
' Log(esteTag)
|
||||||
|
If laCant.Text + 1 <= esteTag.get(1) Then
|
||||||
|
laCant.Text = $"$1.0{laCant.Text+1}"$
|
||||||
|
cuentaProds
|
||||||
|
End If
|
||||||
|
|
||||||
|
Log(Regex.Split("\|", laCant.tag)(0))
|
||||||
|
Private precio As String = Regex.Split("\|", laCant.tag)(0)
|
||||||
|
' Private inv As String = Regex.Split("\|", laCant.tag)(1)
|
||||||
|
Private prodId As String = Regex.Split("\|", laCant.tag)(2)
|
||||||
|
Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo)
|
||||||
|
Log(tmpMap)
|
||||||
|
promosMap.Put(prodId, tmpMap)
|
||||||
|
LogColor(promosMap, Colors.Magenta)
|
||||||
|
End If
|
||||||
|
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
|
||||||
|
' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$
|
||||||
|
' l_totProds.text = $"Total Productos: ${totalProds}"$
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub et_pCant_TextChanged (Old As String, New As String)
|
||||||
|
' LogColor("txt changed",Colors.Magenta)
|
||||||
|
cuentaProds
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub cuentaProds
|
||||||
|
' Log("=====================================================")
|
||||||
|
' Log("Inicia cuentaProds")
|
||||||
|
Private thisLog As Boolean = False
|
||||||
|
If thisLog Then LogColor($"ProdsFijos=${tpf}, totalProds=${totalProds}, totalCompra=${totalCompra}"$, Colors.Red)
|
||||||
|
prodsIds2.Clear
|
||||||
|
prodsCants2.Clear
|
||||||
|
prodsPrecios2.Clear
|
||||||
|
lv_prodsFijos.Clear
|
||||||
|
agregaFijosALista(Subs.traePromo(estaPromo, esteCliente), True)
|
||||||
|
' Log(prodsIds)
|
||||||
|
Private tcpf As Float = 0 'Total de compra de productos fijos.
|
||||||
|
For pf = 0 To prodsIds.Size - 1
|
||||||
|
If thisLog Then Log($"${tcpf} + ${prodsCants.Get(pf)} * ${prodsPrecios.Get(pf)} = ${(prodsPrecios.Get(pf) * prodsCants.Get(pf))}"$)
|
||||||
|
tcpf = tcpf + (prodsPrecios.Get(pf) * prodsCants.Get(pf))
|
||||||
|
Next
|
||||||
|
' Log("Total compra prodsFijos = " & tcpf)
|
||||||
|
totalCompra = tcpf
|
||||||
|
totalProds = tpf 'Cantidad total de productos fijos.
|
||||||
|
For i = 0 To clv_prodsVariabes.GetSize - 1
|
||||||
|
Private p0 As B4XView = clv_prodsVariabes.GetPanel(i)
|
||||||
|
Private p As B4XView = p0.GetView(0)
|
||||||
|
Private cant1 As B4XView = p.GetView(2).GetView(4)
|
||||||
|
' If cant1.Text = "" Then cant1.Text = 0
|
||||||
|
totalProds = totalProds + cant1.Text
|
||||||
|
Private esteTag As List = Regex.Split("\|", cant1.Tag)
|
||||||
|
If cant1.Text > esteTag.Get(1) Then cant1.Text = esteTag.Get(1)
|
||||||
|
If cant1.Text > 0 Then
|
||||||
|
Log(esteTag.Get(2) & "|" & cant1.Text)
|
||||||
|
totalCompra = totalCompra + (esteTag.get(0) * cant1.text)
|
||||||
|
If thisLog Then Log($"Cant: ${cant1.Text}, Suma: ${totalCompra}"$)
|
||||||
|
prodsIds2.Add(esteTag.Get(2))
|
||||||
|
prodsCants2.Add(cant1.Text)
|
||||||
|
prodsPrecios2.Add(esteTag.get(0))
|
||||||
|
End If
|
||||||
|
l_total.Text = $"Total: $$1.2{totalCompra}"$
|
||||||
|
l_totProds.text = $"Productos: ${totalProds}"$
|
||||||
|
Next
|
||||||
|
If thisLog Then Log($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$)
|
||||||
|
l_total.Text = $"Total: $$1.2{totalCompra}"$
|
||||||
|
l_totProds.text = $"Productos: ${totalProds}"$
|
||||||
|
If totalProds < prodsVarReq + tpf Or totalProds > prodsVarReq + tpf Then
|
||||||
|
' Log("INCOMPLETA")
|
||||||
|
b_terminar1.Visible = False
|
||||||
|
b_continuar.Visible = False
|
||||||
|
Else
|
||||||
|
' Log("COMPLETA")
|
||||||
|
b_terminar1.Visible = True
|
||||||
|
b_continuar.Visible = True
|
||||||
|
End If
|
||||||
|
If thisLog Then LogColor($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$, Colors.blue)
|
||||||
|
If thisLog Then LogColor($"${prodsIds2}${CRLF}${prodsCants2}${CRLF}${prodsPrecios2}"$, Colors.Magenta)
|
||||||
|
|
||||||
|
LogColor($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$, Colors.Blue)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
|
||||||
|
LogColor("focus changed", Colors.Magenta)
|
||||||
|
cuentaProds
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_promoMenos_Click
|
||||||
|
If et_promoCant.Text > 1 Then
|
||||||
|
et_promoCant.Text = et_promoCant.Text.As(Int) - 1
|
||||||
|
End If
|
||||||
|
l_prodsFijos.Text = $"Productos fijos (${tpf2 * et_promoCant.Text.As(Int)})"$
|
||||||
|
l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq2 * et_promoCant.Text.As(Int)}"$
|
||||||
|
tpf = tpf2 * et_promoCant.Text.As(Int)
|
||||||
|
prodsVarReq = prodsVarReq2 * et_promoCant.Text.As(Int)
|
||||||
|
Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$)
|
||||||
|
cuentaProds
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_promoMas_Click
|
||||||
|
If et_promoCant.Text < maxCantPromos Then
|
||||||
|
et_promoCant.Text = et_promoCant.Text.As(Int) + 1
|
||||||
|
l_prodsFijos.Text = $"Productos fijos (${tpf2 * et_promoCant.Text.As(Int)})"$
|
||||||
|
l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq2 * et_promoCant.Text.As(Int)}"$
|
||||||
|
tpf = tpf2 * et_promoCant.Text.As(Int)
|
||||||
|
prodsVarReq = prodsVarReq2 * et_promoCant.Text.As(Int)
|
||||||
|
Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$)
|
||||||
|
End If
|
||||||
|
If et_promoCant.text > maxCantPromos Then et_promoCant.Text = maxCantPromos
|
||||||
|
cuentaProds
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_terminar1_Click
|
||||||
|
cuentaProds
|
||||||
|
Log("====================================================================")
|
||||||
|
For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido.
|
||||||
|
Private pn As String = Subs.traeProdNombre(prodsIds.Get(t))
|
||||||
|
If prodsCants.Get(t) > 0 Then Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
Next
|
||||||
|
For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido.
|
||||||
|
Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t))
|
||||||
|
Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
Next
|
||||||
|
' Log(B4XPages.MainPage.productos.prodsMap)
|
||||||
|
' For o=0 To prodsIds.Size - 1 'Ponemos los productos fijos en el mapa de la compra.
|
||||||
|
' Private tmpMap As Map = CreateMap("precio":prodsPrecios.Get(o), "cant":prodsCants.Get(o), "almacen":estaPromo)
|
||||||
|
'' Log(tmpMap)
|
||||||
|
' If prodsCants.Get(o) > 0 Then B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds.Get(o), tmpMap)
|
||||||
|
' Next
|
||||||
|
' For o=0 To prodsIds2.Size - 1 'Ponemos los productos variables en el mapa de la compra.
|
||||||
|
' Private tmpMap As Map = CreateMap("precio":prodsPrecios2.Get(o), "cant":prodsCants2.Get(o), "almacen":estaPromo)
|
||||||
|
'' Log(tmpMap)
|
||||||
|
' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap)
|
||||||
|
' Next
|
||||||
|
' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red)
|
||||||
|
lv_prodsFijos.Clear
|
||||||
|
B4XPages.MainPage.bTerminarClicked = True
|
||||||
|
B4XPages.ShowPage("productos")
|
||||||
|
B4XPages.MainPage.productos.b_terminar1_Click
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_continuar_Click
|
||||||
|
cuentaProds
|
||||||
|
Log("====================================================================")
|
||||||
|
For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido.
|
||||||
|
Private pn As String = Subs.traeProdNombre(prodsIds.Get(t))
|
||||||
|
Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
Next
|
||||||
|
For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido.
|
||||||
|
Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t))
|
||||||
|
Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
|
||||||
|
Next
|
||||||
|
' Log(B4XPages.MainPage.productos.prodsMap)
|
||||||
|
' For o=0 To prodsIds.Size - 1 'Ponemos los productos fijos en el mapa de la compra.
|
||||||
|
' Private tmpMap As Map = CreateMap("precio":prodsPrecios.Get(o), "cant":prodsCants.Get(o), "almacen":estaPromo)
|
||||||
|
'' Log(tmpMap)
|
||||||
|
' If prodsCants.Get(o) > 0 Then B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds.Get(o), tmpMap)
|
||||||
|
' Next
|
||||||
|
' For o=0 To prodsIds2.Size - 1 'Ponemos los productos variables en el mapa de la compra.
|
||||||
|
' Private tmpMap As Map = CreateMap("precio":prodsPrecios2.Get(o), "cant":prodsCants2.Get(o), "almacen":estaPromo)
|
||||||
|
'' Log(tmpMap)
|
||||||
|
' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap)
|
||||||
|
' Next
|
||||||
|
' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red)
|
||||||
|
lv_prodsFijos.Clear
|
||||||
|
' Activity_KeyPress(KeyCodes.KEYCODE_BACK)
|
||||||
|
' CallSubDelayed2(productos, "Activity_KeyPress", KeyCodes.KEYCODE_BACK)
|
||||||
|
Private prodspage As C_Productos 'ignore
|
||||||
|
If prodspage.IsInitialized Then
|
||||||
|
prodspage.lv_catalogos.Visible = True
|
||||||
|
prodspage.lv_promos.Visible = False
|
||||||
|
prodspage.clv_productos.AsView.Visible = False
|
||||||
|
End If
|
||||||
|
B4XPages.MainPage.bTerminarClicked = True
|
||||||
|
B4XPages.ShowPage("productos")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Sub Activity_KeyPress (key As Int) As Boolean 'ignore
|
||||||
|
' ' BACK key pressed
|
||||||
|
' Log("Keypress")
|
||||||
|
' If key=KeyCodes.KEYCODE_BACK Then
|
||||||
|
' Log("BACK")
|
||||||
|
' Return False
|
||||||
|
' End If
|
||||||
|
' Return False
|
||||||
|
' ' Returning False signals the system to handle the key
|
||||||
|
'End Sub
|
||||||
186
B4A/C_RespaldoDiario.bas
Normal file
@@ -0,0 +1,186 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=12.2
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
Dim skmt, rkmt As SQL
|
||||||
|
' Dim rp As RuntimePermissions
|
||||||
|
Dim safePath As String
|
||||||
|
Dim fechaHoy As String
|
||||||
|
Dim skmtAttached As Boolean = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can add more parameters here.
|
||||||
|
Public Sub Initialize As Object
|
||||||
|
' Log("************************** " & safePath)
|
||||||
|
Dim Dirp As String = File.DirRootExternal
|
||||||
|
Dim Dir As String
|
||||||
|
' Dim Dir2 As String
|
||||||
|
Try
|
||||||
|
File.MakeDir(Dirp,"/kmts")
|
||||||
|
Dir = "/kmts"
|
||||||
|
' Log("creado en kmts " & Dirp & Dir)
|
||||||
|
Catch
|
||||||
|
Dir = ""
|
||||||
|
' Log("creado en raiz")
|
||||||
|
End Try
|
||||||
|
safePath = Dirp & Dir
|
||||||
|
rkmt.Initialize(safePath,"md.rkmt.km", True)
|
||||||
|
skmt.Initialize(File.DirInternal,"kmt.db", False)
|
||||||
|
' rkmt.ExecNonQuery($"create table if not exists pedidos (pe_folio NUMERIC, pe_desc NUMERIC, pe_costo_sin TEXT, pe_ruta TEXT, pe_cedis TEXT, pe_costo_tot NUMERIC, pe_costou NUMERIC, pe_cant NUMERIC, pe_pronombre TEXT, pe_proid TEXT, pe_cliente TEXT, pe_fecha TEXT, pe_usuario TEXT, pe_envio_ok TEXT)"$)
|
||||||
|
' rkmt.ExecNonQuery($"create table if not exists inventarios (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_tipoprod2 TEXT, fecha TEXT)"$)
|
||||||
|
'' rkmt.ExecNonQuery($"create table if not exists inventarios2 (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_tipoprod2 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)"$)
|
||||||
|
If chkIfTableExists(skmt, "PEDIDO") Then rkmt.ExecNonQuery($"create table if not exists PEDIDO (${getTableColumnList(skmt, "PEDIDO")}, FECHA TEXT)"$)
|
||||||
|
If chkIfTableExists(skmt, "CAT_DETALLES_PAQ") Then rkmt.ExecNonQuery($"create table if not exists CAT_DETALLES_PAQ (${getTableColumnList(skmt, "CAT_DETALLES_PAQ")}, FECHA TEXT)"$)
|
||||||
|
If chkIfTableExists(skmt, "CAT_GUNAPROD") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD (${getTableColumnList(skmt, "CAT_GUNAPROD")}, FECHA TEXT)"$)
|
||||||
|
If chkIfTableExists(skmt, "CAT_GUNAPROD2") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD2 (${getTableColumnList(skmt, "CAT_GUNAPROD2")}, FECHA TEXT)"$)
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
fechaHoy = DateTime.Date(DateTime.Now)
|
||||||
|
revisaSkmtAttached
|
||||||
|
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
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Revisa si esta montada "kmt.db" como "skmt1" y si no, la monta
|
||||||
|
'Para que "rkmt" vea a "skmt", es necesario montarla (attach).
|
||||||
|
Sub revisaSkmtAttached
|
||||||
|
skmtAttached = False
|
||||||
|
Dim rs As ResultSet = rkmt.ExecQuery("SELECT * FROM pragma_database_list")
|
||||||
|
Do While rs.NextRow 'Revisamos si esta montada "kmt.db" como "skmt1" y si no, la montamos.
|
||||||
|
If rs.GetString("name") = "skmt1" Then skmtAttached = True
|
||||||
|
Loop
|
||||||
|
If Not(skmtAttached) Then
|
||||||
|
rkmt.ExecNonQuery($"attach database '${File.Combine(File.DirInternal, "kmt.db")}' as skmt1;"$)
|
||||||
|
skmtAttached = True
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Copia la tabla PEDIDO a rkmt.db en la tarjeta del celular.
|
||||||
|
Sub respalda_pedido
|
||||||
|
Private inicio As String = DateTime.Now
|
||||||
|
' Log("Copiando PEDIDO ...")
|
||||||
|
Private lasCols As String = getTableColumnListName(skmt, "PEDIDO")
|
||||||
|
rkmt.BeginTransaction
|
||||||
|
rkmt.ExecNonQuery($"delete from PEDIDO where FECHA = '${fechaHoy}'"$)
|
||||||
|
rkmt.ExecNonQuery($"insert into PEDIDO (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.PEDIDO where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$)
|
||||||
|
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||||
|
rkmt.EndTransaction
|
||||||
|
Log(((DateTime.Now - inicio)/1000) & " segs")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Copia la tabla CAT_GUNAPRODS a rkmt.db en la tarjeta del celular.
|
||||||
|
Sub respalda_cat_gunaprod
|
||||||
|
Private inicio As String = DateTime.Now
|
||||||
|
' Log("Copiando CAT_GUNAPROD ...")
|
||||||
|
Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD")
|
||||||
|
lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la imagen del respaldo.
|
||||||
|
rkmt.BeginTransaction
|
||||||
|
rkmt.ExecNonQuery($"delete from CAT_GUNAPROD where FECHA = '${fechaHoy}'"$)
|
||||||
|
rkmt.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_GUNAPROD"$)
|
||||||
|
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||||
|
rkmt.EndTransaction
|
||||||
|
Log(((DateTime.Now - inicio)/1000) & " segs")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Copia la tabla CAT_DETALLE_PAQ a rkmt.db en la tarjeta del celular.
|
||||||
|
Sub respalda_cat_detalle_paq
|
||||||
|
Private inicio As String = DateTime.Now
|
||||||
|
' Log("Copiando CAT_DETALLES_PAQ ...")
|
||||||
|
Private lasCols As String = getTableColumnListName(skmt, "CAT_DETALLES_PAQ")
|
||||||
|
rkmt.BeginTransaction
|
||||||
|
rkmt.ExecNonQuery($"delete from CAT_DETALLES_PAQ where fecha = '${fechaHoy}'"$)
|
||||||
|
rkmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_DETALLES_PAQ"$)
|
||||||
|
rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||||
|
rkmt.EndTransaction
|
||||||
|
Log(((DateTime.Now - inicio)/1000) & " segs")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Realiza un "vacuum" de la base de datos "rkmt".
|
||||||
|
Sub vacuum
|
||||||
|
Log("Vacuum")
|
||||||
|
rkmt.ExecNonQuery("vacuum;")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Agrega una columna a la tabla especificada.
|
||||||
|
'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC)
|
||||||
|
'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO")
|
||||||
|
Sub agregaColumna(db As SQL, tabla As String, columna As String, tipo As String) 'ignore
|
||||||
|
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla
|
||||||
|
Private c As Cursor = db.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$)
|
||||||
|
c.Position = 0
|
||||||
|
If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos
|
||||||
|
db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
||||||
|
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$)
|
||||||
|
End If
|
||||||
|
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||||
|
Try
|
||||||
|
db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
||||||
|
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$)
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa los nombres y tipos de las columnas de una tabla dada.
|
||||||
|
Sub getTableColumnList(db As SQL, table As String) As String 'ignore
|
||||||
|
Private l As String = ""
|
||||||
|
If chkIfTableExists(db, table) Then
|
||||||
|
Private c As Cursor = db.ExecQuery($"pragma table_info(${table})"$)
|
||||||
|
If c.RowCount > 0 Then
|
||||||
|
For i = 0 To c.RowCount - 1
|
||||||
|
c.Position = i
|
||||||
|
If l.Length = 0 Then
|
||||||
|
l = $"${c.GetString("name")} ${c.GetString("type")}"$
|
||||||
|
Else
|
||||||
|
l = $"${l}, ${c.GetString("name")} ${c.GetString("type")}"$
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
Return "No existe la tabla."
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
Return l
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa solo los nombres de las columnas de una tabla dada.
|
||||||
|
Sub getTableColumnListName(db As SQL, table As String) As String 'ignore
|
||||||
|
Private l As String = ""
|
||||||
|
If chkIfTableExists(db, table) Then
|
||||||
|
Private c As Cursor = db.ExecQuery($"pragma table_info(${table})"$)
|
||||||
|
If c.RowCount > 0 Then
|
||||||
|
For i = 0 To c.RowCount - 1
|
||||||
|
c.Position = i
|
||||||
|
If l.Length = 0 Then
|
||||||
|
l = $"${c.GetString("name")}"$
|
||||||
|
Else
|
||||||
|
l = $"${l}, ${c.GetString("name")}"$
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
Return "No existe la tabla."
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
Return l
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Revisa si una tabla dada existe en una base de datos dada, regresa true o false.
|
||||||
|
Sub chkIfTableExists(db As SQL, table As String) As Boolean 'ignore
|
||||||
|
Private t As Boolean = False 'ignore
|
||||||
|
Private c As Cursor = db.ExecQuery($"SELECT name FROM sqlite_master WHERE type='table' AND name='${table}'"$)
|
||||||
|
If c.RowCount > 0 Then t = True
|
||||||
|
c.Close
|
||||||
|
Return t
|
||||||
|
End Sub
|
||||||
607
B4A/C_Subs.bas
Normal file
@@ -0,0 +1,607 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=12.2
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
'These global variables will be declared once when the application starts.
|
||||||
|
'These variables can be accessed from all modules.
|
||||||
|
' Public GZip As GZipStrings 'Usa la libreria CompressStrings
|
||||||
|
' Private su As StringUtils 'Usa la libreria StringUtils
|
||||||
|
Dim reqManager As DBRequestManager
|
||||||
|
Private EventName As String 'ignore
|
||||||
|
Private CallBack As Object 'ignore
|
||||||
|
Dim phn As Phone
|
||||||
|
Dim devModel As String
|
||||||
|
Dim db, kmt, errorLog As SQL 'Requiere la libreria "SQL" 'ignore
|
||||||
|
Dim ssid As String 'ignore
|
||||||
|
Dim reqsList As List
|
||||||
|
Dim reqError As Boolean = False
|
||||||
|
Private subsLogs As Boolean = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can add more parameters here.
|
||||||
|
Public Sub Initialize (vCallback As Object, vEventName As String) As Object
|
||||||
|
reqsList.Initialize
|
||||||
|
EventName = vEventName
|
||||||
|
CallBack = vCallback
|
||||||
|
db = dbInit
|
||||||
|
reqManager = reqManagerInit
|
||||||
|
Return Me
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Inicializa la BD con "kmt.db" en File.DirInternal, si el archivo no existe, lo copia desde File.DirAssets.
|
||||||
|
'Dispara el evento "dbOk" cuando termina.
|
||||||
|
Sub dbInit As SQL
|
||||||
|
If File.Exists(File.DirInternal, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db")
|
||||||
|
db.Initialize(File.DirInternal,"kmt.db", True)
|
||||||
|
dbOk(True)
|
||||||
|
' Log(db.IsInitialized)
|
||||||
|
Return db
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub dbOk(Success As Boolean)
|
||||||
|
If SubExists(CallBack, EventName & "_dbOk") Then
|
||||||
|
CallSub2(CallBack, EventName & "_dbOk", Success)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Inicializamos el DBReqServer.
|
||||||
|
Sub reqManagerInit As DBRequestManager
|
||||||
|
Private rm As DBRequestManager
|
||||||
|
rm.Initialize(Me, traeDBReqServerDeBD(db))
|
||||||
|
Log($"Inicializamos reqManager con ${traeDBReqServerDeBD(db)}"$)
|
||||||
|
Return rm
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Reinicializamos el DBReqServer de C_Subs.
|
||||||
|
Sub reqManagerReInit
|
||||||
|
Log("reqManager ReInit")
|
||||||
|
reqManager = reqManagerInit
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub envioTest
|
||||||
|
reqsList.Initialize ' Ponemos la lista de DBRequests en cero.
|
||||||
|
Private cmd As DBCommand
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "select_fecha"
|
||||||
|
For i = 0 To 50
|
||||||
|
' Sleep(200)
|
||||||
|
reqManager.ExecuteQuery(cmd, 0, $"select_fecha_${i}"$)
|
||||||
|
reqsList.Add($"select_fecha_${i}"$)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Dispara el evento "_envioOk" del caller.
|
||||||
|
Sub envioOk(Success As Boolean)
|
||||||
|
' Log($"_ENVIOOK_"$)
|
||||||
|
If SubExists(CallBack, EventName & "_envioOk") Then
|
||||||
|
CallSub2(CallBack, EventName & "_envioOk", Success)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub JobDone(Job As HttpJob)
|
||||||
|
LogColor("C_SUBS JOBDONE - " & Job.Success, Colors.Red)
|
||||||
|
If Job.Success = False Then
|
||||||
|
Log($"Error en el request ${Job.Tag}"$)
|
||||||
|
LogColor("** " & Job.Tag & " Error: " & Job.ErrorMessage, Colors.Red)
|
||||||
|
If reqsList.IndexOf(Job.Tag) > -1 Then reqsList.RemoveAt(reqsList.IndexOf(Job.Tag))
|
||||||
|
reqError = True
|
||||||
|
Else
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim resultado As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If reqsList.IndexOf(resultado.Tag) > -1 Then reqsList.RemoveAt(reqsList.IndexOf(resultado.Tag))
|
||||||
|
If resultado.Tag = "select_fecha" Then
|
||||||
|
For Each records() As Object In resultado.Rows
|
||||||
|
For Each k As String In resultado.Columns.Keys
|
||||||
|
Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k)))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Log(reqsList.Size)
|
||||||
|
If reqsList.Size = 0 Then 'Ya no hay DBReqs pendientes.
|
||||||
|
Log(reqError)
|
||||||
|
If Not(reqError) Then
|
||||||
|
envioOk(True)
|
||||||
|
Else
|
||||||
|
envioOk(False)
|
||||||
|
End If
|
||||||
|
reqError = False
|
||||||
|
Log("-= FIN =-")
|
||||||
|
End If
|
||||||
|
Job.Release
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Pone el valor de phn.Model en la variable global "devModel"
|
||||||
|
Sub getPhnId As String 'ignore
|
||||||
|
'Requiere la libreria "Phone"
|
||||||
|
devModel = phn.Model
|
||||||
|
If devModel.Length <= 3 Then 'Si phn.Model esta en blanco ...
|
||||||
|
Dim t As String = phn.GetSettings("android_id") 'Intentamos con "android_id"
|
||||||
|
devModel = t
|
||||||
|
End If
|
||||||
|
If devModel.Length >= 3 Then 'Si tenemos valor para phn.Model
|
||||||
|
File.WriteString(File.DirInternal, "phnId.txt", devModel) 'Sobreescribimos archivo phnId.txt with deviceId
|
||||||
|
' Log("Tenemos phnId: "&devModel&" "&File.DirInternal&"/phn.txt sobreescrito")
|
||||||
|
Else If devModel.Length < 3 Then ' Si no tenemos valor, lo leemos de phnId.txt
|
||||||
|
Dim s As String = File.ReadString(File.DirInternal, "phnId.txt")
|
||||||
|
devModel = s
|
||||||
|
' Log("Leemos id de "&File.DirInternal&"/phnId.txt")
|
||||||
|
' Log(devModel)
|
||||||
|
End If
|
||||||
|
Return devModel
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Convierte una fecha al formato yyMMddHHmmss
|
||||||
|
Sub fechaKMT(fecha As String) As String 'ignore
|
||||||
|
' Log(fecha)
|
||||||
|
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
|
||||||
|
DateTime.DateFormat="yyMMddHHmmss"
|
||||||
|
Dim nuevaFecha As String=DateTime.Date(fecha)
|
||||||
|
DateTime.DateFormat=OrigFormat 'return to orig date format
|
||||||
|
' Log(nuevaFecha)
|
||||||
|
Return nuevaFecha
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Escribimos las coordenadas y fecha a un archivo de texto
|
||||||
|
Sub guardaInfoEnArchivo(coords As String) 'ignore
|
||||||
|
' Cambiamos el formato de la hora
|
||||||
|
Dim OrigFormat As String=DateTime.DateFormat 'save orig date format
|
||||||
|
DateTime.DateFormat="MMM-dd HH:mm:ss"
|
||||||
|
Dim lastUpdate As String=DateTime.Date(DateTime.Now)
|
||||||
|
DateTime.DateFormat=OrigFormat 'return to orig date format
|
||||||
|
|
||||||
|
Dim ubic As String = coords&","&lastUpdate
|
||||||
|
Dim out As OutputStream = File.OpenOutput(File.DirRootExternal, "gps.txt", True)
|
||||||
|
Dim s As String = ubic & CRLF
|
||||||
|
Dim t() As Byte = s.GetBytes("UTF-8")
|
||||||
|
out.WriteBytes(t, 0, t.Length)
|
||||||
|
out.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Escribimos las coordenadas (latitud, longitud, fecha) y fecha a una BD
|
||||||
|
Sub guardaInfoEnBD(coords As String) 'ignore
|
||||||
|
Log("Guardamos ubicacion en BD - "&coords)
|
||||||
|
Try
|
||||||
|
Dim latlon() As String = Regex.Split("\|", coords)
|
||||||
|
If latlon.Length < 2 Then latlon = Regex.Split(",", coords) 'Si son menos de 2, entonces estan separadas por comas y no por "|"
|
||||||
|
If subsLogs Then Log("LatLon="&latlon)
|
||||||
|
kmt.ExecNonQuery2("INSERT INTO RUTA_GPS(FECHA, LAT, LON) VALUES (?,?,?)", Array As Object (latlon(2),latlon(0),latlon(1)))
|
||||||
|
Catch
|
||||||
|
LogColor(LastException, Colors.red)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Limpiamos la tabla RUTA_GPS de la BD
|
||||||
|
Sub deleteGPS_DB 'ignore
|
||||||
|
kmt.ExecNonQuery("delete from RUTA_GPS")
|
||||||
|
kmt.ExecNonQuery("vacuum;")
|
||||||
|
ToastMessageShow("Borramos BD Coords GPS", False)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Limpiamos la tabla errorLog de la BD
|
||||||
|
Sub deleteErrorLog_DB 'ignore
|
||||||
|
errorLog.ExecNonQuery("delete from errores")
|
||||||
|
errorLog.ExecNonQuery("vacuum;")
|
||||||
|
ToastMessageShow("BD Errores Borrada", False)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Mandamos "coords" en un mensaje a "Sprvsr"
|
||||||
|
'Sub mandamosLoc(coords As String) 'ignore
|
||||||
|
'' Log("Iniciamos mandamosLoc "&coords)
|
||||||
|
'' Log("locRequest="&Tracker.locRequest)
|
||||||
|
' guardaInfoEnBD(coords)'Escribimos coordenadas y fecha a una bd
|
||||||
|
' Dim t As String
|
||||||
|
' If Tracker.locRequest="Activa" Then
|
||||||
|
' If PushService.au = 1 Then
|
||||||
|
' t = "au" ' es una actualizacion
|
||||||
|
' Else
|
||||||
|
' t = "u" ' es una peticion
|
||||||
|
' End If
|
||||||
|
' Dim params As Map = CreateMap("topic":"Sprvsr", "coords":coords, "t":t, "b":PushService.battery, "mt":Main.montoActual)
|
||||||
|
' CallSub2(PushService, "mandaMensaje",params)
|
||||||
|
' Tracker.locRequest="Enviada"
|
||||||
|
' CallSubDelayed(Tracker,"CreateLocationRequest")
|
||||||
|
' End If
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
'Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS"
|
||||||
|
Sub fechaInicioHoy As String 'ignore
|
||||||
|
Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
|
||||||
|
DateTime.DateFormat="yyMMdd"
|
||||||
|
Private h As String = DateTime.Date(DateTime.Now)&"000000"
|
||||||
|
DateTime.DateFormat=OrigFormat 'return to orig date format
|
||||||
|
Log("Hoy="&h)
|
||||||
|
Return h
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Guardamos "texto" a la bitacora
|
||||||
|
Sub log2DB(texto As String) 'ignore
|
||||||
|
LogColor(fechaKMT(DateTime.Now)&" - log2BD: '"&texto&"'", Colors.LightGray)
|
||||||
|
kmt.ExecNonQuery2("INSERT INTO bitacora(fecha, texto) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), texto))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa verdadero si ya pasaron XX minutos de la fecha dada
|
||||||
|
Sub masDeXXMins(hora As Int, mins As Int) As Boolean 'ignore
|
||||||
|
If (hora + mins * DateTime.TicksPerMinute) < DateTime.Now Then
|
||||||
|
Return True
|
||||||
|
Else
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada
|
||||||
|
Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore
|
||||||
|
Try
|
||||||
|
' LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red)
|
||||||
|
If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then
|
||||||
|
' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now))
|
||||||
|
Return True
|
||||||
|
Else
|
||||||
|
' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now))
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Limpiamos la tabla "bitacora" de la BD
|
||||||
|
Sub borraLogDB 'ignore
|
||||||
|
LogColor("Borramos BD de log", Colors.Magenta)
|
||||||
|
kmt.ExecNonQuery("delete from bitacora")
|
||||||
|
kmt.ExecNonQuery("vacuum;")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Monitoreamos los servicios para ver si estan activos (No pausados), y si no, los reniciamos
|
||||||
|
'Sub Monitor 'ignore
|
||||||
|
' Private monitorStatus As Boolean = True
|
||||||
|
' LogColor("Corriendo Subs.Monitor", Colors.RGB(161,150,0))
|
||||||
|
' If IsPaused(Tracker) Then
|
||||||
|
' log2DB("Reiniciando 'Tracker Pausado' desde Subs.Monitor")
|
||||||
|
' StartService(Tracker)
|
||||||
|
' monitorStatus = False
|
||||||
|
' Else
|
||||||
|
' CallSubDelayed(Tracker, "revisaFLP")
|
||||||
|
' End If
|
||||||
|
' If IsPaused(PushService) Then
|
||||||
|
' log2DB("Reiniciando 'PushService Pausado' desde Subs.Monitor")
|
||||||
|
' StartService(PushService)
|
||||||
|
' monitorStatus = False
|
||||||
|
' Else
|
||||||
|
' revisaPushService
|
||||||
|
' End If
|
||||||
|
' If monitorStatus Then LogColor(" +++ +++ Servicios Activos", Colors.Green)
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
'Convierte una fecha en formato YYMMDDHHMMSS a Ticks
|
||||||
|
Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore
|
||||||
|
Try
|
||||||
|
If fKMT.Length = 12 Then
|
||||||
|
Private parteFecha As String = fKMT.SubString2(0,6)
|
||||||
|
Private parteHora As String = fKMT.SubString(6)
|
||||||
|
Private OrigFormat As String = DateTime.DateFormat 'save original date format
|
||||||
|
DateTime.DateFormat="yymmdd"
|
||||||
|
DateTime.TimeFormat="HHmmss"
|
||||||
|
Private ticks As Long = DateTime.DateTimeParse(parteFecha,parteHora)
|
||||||
|
DateTime.DateFormat=OrigFormat 'return to original date format
|
||||||
|
Return ticks
|
||||||
|
Else
|
||||||
|
Log("Formato de fecha incorrecto, debe de ser 'YYMMDDHHMMSS', no '"&fKMT&"' largo="&fKMT.Length)
|
||||||
|
Return 0
|
||||||
|
End If
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
LogColor($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$, Colors.Red)
|
||||||
|
Return 0
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub InstallAPK(dir As String, apk As String) 'ignore
|
||||||
|
If File.Exists(dir, apk) Then
|
||||||
|
Dim i As Intent
|
||||||
|
i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(dir, apk))
|
||||||
|
i.SetType("application/vnd.android.package-archive")
|
||||||
|
StartActivity(i)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Copia la base de datos del almacenamiento interno al externo en el directorio kmts.
|
||||||
|
Sub copiaDB(result As Boolean) 'ignore
|
||||||
|
ToastMessageShow("copiaDB", False)
|
||||||
|
If result Then
|
||||||
|
Dim p As String
|
||||||
|
If File.ExternalWritable Then
|
||||||
|
p = File.DirRootExternal
|
||||||
|
' Log("Externo")
|
||||||
|
Else
|
||||||
|
p = File.DirInternal
|
||||||
|
' Log("Interno")
|
||||||
|
End If
|
||||||
|
Dim theDir As String
|
||||||
|
Try
|
||||||
|
File.MakeDir(File.DirRootExternal,"kmts")
|
||||||
|
theDir = "/kmts"
|
||||||
|
Catch
|
||||||
|
theDir = ""
|
||||||
|
End Try
|
||||||
|
Try
|
||||||
|
File.Copy(File.DirInternal,"kmt.db",File.DirRootExternal&theDir,"cedex_kmt.db")
|
||||||
|
File.Copy(File.DirInternal,"errorLog.db",File.DirRootExternal&theDir,"cedex_errorLog.db")
|
||||||
|
ToastMessageShow("BD copiada!", False)
|
||||||
|
Catch
|
||||||
|
ToastMessageShow("No se pudo hacer la copia: "&LastException, True)
|
||||||
|
End Try
|
||||||
|
Log("rootExternal="&p)
|
||||||
|
Log("File.DirInternal="&File.DirInternal)
|
||||||
|
Log("File.DirRootExternal="&File.DirRootExternal)
|
||||||
|
Else
|
||||||
|
ToastMessageShow("Sin permisos", False)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Hace visible y trae al frente el panel con los parametros "Top" y "Left" dados.
|
||||||
|
Sub panelVisible(panel As Panel, top As Int, left As Int) 'ignore
|
||||||
|
panel.BringToFront
|
||||||
|
panel.Visible = True
|
||||||
|
panel.Top = top
|
||||||
|
panel.Left = left
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Centra una etiqueta dentro de un elemento superior.
|
||||||
|
Sub centraEtiqueta(elemento As Label, anchoElementoSuperior As Int) 'ignore
|
||||||
|
elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Centra un panel horizontalmente dentro de un elemento superior.
|
||||||
|
Sub centraPanel(elemento As Panel, anchoElementoSuperior As Int) 'ignore
|
||||||
|
elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Centra un panel verticalmente dentro de un elemento superior.
|
||||||
|
Sub centraPanelV(elemento As Panel, altoElementoSuperior As Int) 'ignore
|
||||||
|
elemento.Top = Round(altoElementoSuperior/2)-(elemento.Height/2)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Centra una barra de progreso dentro de un elemento superior.
|
||||||
|
Sub centraProgressBar(elemento As ProgressBar, anchoElementoSuperior As Int) 'ignore
|
||||||
|
elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa la fecha en el formato "MM/dd/yyyy"
|
||||||
|
Sub traeFecha As String 'ignore
|
||||||
|
DateTime.DateFormat = "MM/dd/yyyy"
|
||||||
|
Private sDate As String = DateTime.Date(DateTime.Now)
|
||||||
|
Private sTime As String = DateTime.Time(DateTime.Now)
|
||||||
|
Return sDate & sTime
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Guarda el nombre y version de la app en CAT_VARIABLES.
|
||||||
|
Sub guardaAppInfo(skmt As SQL) 'ignore
|
||||||
|
skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_NAME' or CAT_VA_DESCRIPCION = 'APP_VERSION'")
|
||||||
|
skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$)
|
||||||
|
skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Muestra en el Log los campos y valores que regresan en el JobDone.
|
||||||
|
Sub logJobDoneResultados(resultado As DBResult) 'ignore
|
||||||
|
For Each records() As Object In resultado.Rows
|
||||||
|
LogColor($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$, Colors.RGB(215,37,0))
|
||||||
|
For Each k As String In resultado.Columns.Keys
|
||||||
|
LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa la base de datos especificada ya inicializada.
|
||||||
|
Sub inicializaBD(ruta As String, BDName As String) As SQL 'ignore
|
||||||
|
Dim skmt As SQL
|
||||||
|
If File.Exists(ruta, BDName) = False Then
|
||||||
|
File.Copy(File.DirAssets, BDName, ruta, BDName)
|
||||||
|
LogColor($"Copiamos ${BDName} de ${File.DirAssets} a ${ruta}"$,Colors.Green)
|
||||||
|
End If
|
||||||
|
skmt.Initialize(ruta, BDName, True)
|
||||||
|
Return skmt
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Agrega una columna a la tabla especificada.
|
||||||
|
'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC)
|
||||||
|
'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO")
|
||||||
|
Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore
|
||||||
|
Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla
|
||||||
|
Private c As Cursor = db.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$)
|
||||||
|
c.Position = 0
|
||||||
|
If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos
|
||||||
|
db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
||||||
|
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$)
|
||||||
|
End If
|
||||||
|
Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
|
||||||
|
Try
|
||||||
|
db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$)
|
||||||
|
Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$)
|
||||||
|
Catch
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el DBReqServer desde CAT_VARIABLES o "N/A" si no existe.
|
||||||
|
Sub traeDBReqServerDeBD(dbx As SQL) As String 'ignore
|
||||||
|
Dim srvr As String = "N/A"
|
||||||
|
Dim rs As ResultSet = dbx.ExecQuery("select CAT_VA_VALOR from cat_variables where CAT_VA_DESCRIPCION = 'SERVER'")
|
||||||
|
If rs.RowCount > 0 Then
|
||||||
|
rs.NextRow
|
||||||
|
srvr = rs.GetString("CAT_VA_VALOR")
|
||||||
|
End If
|
||||||
|
Return srvr
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el valor de intervalo desde CAT_VARIABLES o "30" si no existe.
|
||||||
|
Sub traeIntervaloDeBD As String 'ignore
|
||||||
|
Dim intrvl As String = "30"
|
||||||
|
Dim rs As ResultSet = db.ExecQuery("select valor from cat_variables where nombre = 'intervalo'")
|
||||||
|
If rs.RowCount > 0 Then
|
||||||
|
rs.NextRow
|
||||||
|
intrvl = rs.GetString("valor")
|
||||||
|
End If
|
||||||
|
Return intrvl
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el valor timeout desde CAT_VARIABLES o "9000" si no existe.
|
||||||
|
Sub traeTimeoutDeBD As String 'ignore
|
||||||
|
Dim tmout As String = "9000"
|
||||||
|
Dim rs As ResultSet = db.ExecQuery("select valor from cat_variables where nombre = 'timeout'")
|
||||||
|
If rs.RowCount > 0 Then
|
||||||
|
rs.NextRow
|
||||||
|
tmout = rs.GetString("valor")
|
||||||
|
End If
|
||||||
|
Return tmout
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Crea una notificación con el "body" dado y regresa el objeto.
|
||||||
|
Sub CreateNotification (Body As String) As Notification 'ignore
|
||||||
|
Dim notification As Notification
|
||||||
|
notification.Initialize2(notification.IMPORTANCE_LOW)
|
||||||
|
notification.Icon = "icon"
|
||||||
|
notification.SetInfo("Tester", Body, Main)
|
||||||
|
Return notification
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Genera una notificacion con importancia alta
|
||||||
|
Sub notiHigh(title As String, body As String, id As String, activity As Object) 'ignore
|
||||||
|
activity = Main
|
||||||
|
Private notif As Notification
|
||||||
|
notif.Initialize2(notif.IMPORTANCE_HIGH)
|
||||||
|
notif.Icon = "icon"
|
||||||
|
notif.Vibrate = False
|
||||||
|
notif.Sound = False
|
||||||
|
notif.AutoCancel = True
|
||||||
|
' If logger Then Log("notiHigh: "&title)
|
||||||
|
notif.SetInfo(title, body, activity)
|
||||||
|
' Log("notiHigh SetInfo")
|
||||||
|
notif.Notify(id)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el objeto de una notificacion con importancia baja
|
||||||
|
Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore
|
||||||
|
Private notification As Notification
|
||||||
|
notification.Initialize2(notification.IMPORTANCE_LOW)
|
||||||
|
' Log("notiLowReturn: "&title)
|
||||||
|
notification.Icon = "icon"
|
||||||
|
notification.Sound = False
|
||||||
|
notification.Vibrate = False
|
||||||
|
notification.SetInfo(title, Body, Main)
|
||||||
|
notification.Notify(id)
|
||||||
|
' Log("notiLowReturn SetInfo")
|
||||||
|
Return notification
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa el almacen actual de la base de datos.
|
||||||
|
Sub traeAlmacen As String 'ignore
|
||||||
|
Private c As Cursor
|
||||||
|
Private a As String
|
||||||
|
c = db.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
|
||||||
|
c.Position = 0
|
||||||
|
a = C.GetString("ID_ALMACEN")
|
||||||
|
c.Close
|
||||||
|
Return a
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa la ruta actual de la base de datos.
|
||||||
|
Sub traeRuta As String 'ignore
|
||||||
|
Private c As Cursor
|
||||||
|
Private r As String
|
||||||
|
c = db.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
||||||
|
r = "0"
|
||||||
|
If c.RowCount > 0 Then
|
||||||
|
c.Position=0
|
||||||
|
r = c.GetString("CAT_CL_RUTA")
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
Return r
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Mandamos los pedidos pendientes (pc_envio_ok <> 1).
|
||||||
|
'Sub mandaPendientes 'ignore
|
||||||
|
' Private logger As Boolean = False
|
||||||
|
' 'PEDIDO_CLIENTE (Pendientes)
|
||||||
|
' Private c As Cursor = db.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA FROM PEDIDO_CLIENTE where pc_envio_ok <> 1")
|
||||||
|
' If logger Then Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$)
|
||||||
|
' Private almacen As String = traeAlmacen
|
||||||
|
' Private ruta As String = traeRuta
|
||||||
|
' If c.RowCount>0 Then
|
||||||
|
' For i = 0 To c.RowCount - 1
|
||||||
|
' c.Position = i
|
||||||
|
' Dim cmd As DBCommand
|
||||||
|
'' cmd.Initialize
|
||||||
|
'' cmd.Name = "DELETE_PEDIDO_MARDS_PC"
|
||||||
|
'' cmd.Parameters = Array As Object(almacen, ruta, c.GetString("PC_CLIENTE") )
|
||||||
|
'' reqManager.ExecuteCommand(cmd , "DEL_PC")
|
||||||
|
'
|
||||||
|
' Dim cmd As DBCommand
|
||||||
|
' cmd.Initialize
|
||||||
|
' cmd.Name = "insert_pedidos_PRO"
|
||||||
|
' If logger Then Log($"${c.GetString("PC_CLIENTE")}, ${almacen}"$)
|
||||||
|
' 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, ruta, C.GetString("PC_COSTO_SIN"))
|
||||||
|
' reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_head_${c.GetString("PC_CLIENTE")}"$)
|
||||||
|
' Next
|
||||||
|
' End If
|
||||||
|
'
|
||||||
|
' 'PEDIDO (Pendientes)
|
||||||
|
' c=Starter.skmt.ExecQuery("SELECT PC_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 FROM pedido_cliente left join PEDIDO where pc_cliente = pe_cliente and pc_envio_ok <> 1")
|
||||||
|
' If logger Then 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 = "DELETE_PEDIDO_MARDS_PE"
|
||||||
|
'' cmd.Parameters = Array As Object(almacen, ruta,c.GetString("PE_CLIENTE") )
|
||||||
|
'' reqManager.ExecuteCommand(cmd , "DEL_PE")
|
||||||
|
'
|
||||||
|
' cmd.Initialize
|
||||||
|
' cmd.Name = "insert_pedido_PRO"
|
||||||
|
' cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"), almacen, c.GetString("PE_COSTO_TOT"), c.GetString("PE_COSTOU"), c.GetString("PE_CANT"), c.GetString("PE_PRONOMBRE"), c.GetString("PE_PROID"), c.GetString("PE_CLIENTE"), c.GetString("PE_FECHA"), c.GetString("PE_USUARIO"), c.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"), c.GetString("PE_DESC"), c.GetString("PE_FOLIO"),"PREVENTA")
|
||||||
|
' reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}"$)
|
||||||
|
' Next
|
||||||
|
' End If
|
||||||
|
'
|
||||||
|
'' 'ABONOS
|
||||||
|
'' Dim ab As Cursor = db.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$)
|
||||||
|
'' If logger Then 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_PRO"
|
||||||
|
'' 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") )
|
||||||
|
'' reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
|
||||||
|
'' If logger Then Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$)
|
||||||
|
'' Next
|
||||||
|
'' End If
|
||||||
|
'' ab.Close
|
||||||
|
'End Sub
|
||||||
|
|
||||||
|
'Borra el pedido del cliente actual.
|
||||||
|
'Borra los registros de la tabla "pedido" y "pedido_cliente"
|
||||||
|
'Actualiza las tablas "cat_gunaprod" y "kmt_info".
|
||||||
|
Sub borraPedidoClienteActual As String
|
||||||
|
Private thisC As Cursor
|
||||||
|
thisC=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ")
|
||||||
|
If thisC.RowCount>0 Then
|
||||||
|
For i=0 To thisC.RowCount -1
|
||||||
|
thisC.Position=i
|
||||||
|
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(thisC.GetString("PE_CANT"),thisC.GetString("PE_PROID")))
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (traeAlmacen, thisC.GetString("PE_PROID"),thisC.GetString("PE_CANT")* -1))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)")
|
||||||
|
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
Return 1
|
||||||
|
End Sub
|
||||||
158
B4A/C_TicketsDia.bas
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
Private p_ticketsdia As Panel
|
||||||
|
|
||||||
|
Dim c As Cursor
|
||||||
|
Dim S As Cursor
|
||||||
|
Dim ruta As String
|
||||||
|
Dim ListView1 As ListView
|
||||||
|
Dim b_noventa As Button
|
||||||
|
Dim nombre_boton As String
|
||||||
|
Dim STIME As String
|
||||||
|
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)
|
||||||
|
B4XPages.SetTitle(Me, $"Tickets Día - ${Application.VersionName}"$)
|
||||||
|
Root = Root1
|
||||||
|
'load the layout to Root
|
||||||
|
ruta = File.DirInternal
|
||||||
|
Root.LoadLayout("ticketsdia")
|
||||||
|
If File.Exists(ruta, "kmt.db") = False Then
|
||||||
|
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
|
||||||
|
End If
|
||||||
|
c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc")
|
||||||
|
ListView1.Clear
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
c.Position=i
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = ListView1.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 10
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 15
|
||||||
|
label2.TextColor = Colors.Blue
|
||||||
|
label2.Height = 60dip
|
||||||
|
label2.Width = ListView1.Width * 0.99
|
||||||
|
ListView1.TwoLinesLayout.ItemHeight = 80dip
|
||||||
|
ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),"Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
nombre_boton = "NOVENTA"
|
||||||
|
c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc")
|
||||||
|
ListView1.Clear
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
c.Position=i
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = ListView1.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 10
|
||||||
|
label2.TextColor = Colors.Blue
|
||||||
|
ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub Regresar_Click
|
||||||
|
B4XPages.ShowPage("cliente")
|
||||||
|
End Sub
|
||||||
|
Sub Activity_KeyPress (key As Int) As Boolean
|
||||||
|
' BACK key pressed
|
||||||
|
If key=KeyCodes.KEYCODE_BACK Then
|
||||||
|
' I want to capture the key here so I return True
|
||||||
|
B4XPages.ShowPage("principal")
|
||||||
|
'Return True
|
||||||
|
End If
|
||||||
|
' Returning False signals the system to handle the key
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
Sub ListView1_ItemLongClick (Position As Int, Value As Object)
|
||||||
|
Starter.skmt.ExecNonQuery("delete from CUENTAA")
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Value))
|
||||||
|
DateTime.TimeFormat = "HHmmss"
|
||||||
|
STIME=DateTime.Time(DateTime.Now)
|
||||||
|
s=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_STAY_STORE WHERE HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)")
|
||||||
|
s.Position = 0
|
||||||
|
If s.GetString("CUANTOS") = 1 Then
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||||
|
Else
|
||||||
|
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (Value))
|
||||||
|
Starter.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_IN = ? where HSS_IN = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(STIME))
|
||||||
|
End If
|
||||||
|
DateTime.TimeFormat = "HH:mm:ss"
|
||||||
|
Subs.guardaClienteHoraInicio(Value)
|
||||||
|
B4XPages.MainPage.cliente.venimosDeTicketsDia = True
|
||||||
|
B4XPages.ShowPage("cliente")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub b_noventa_Click
|
||||||
|
If nombre_boton = "NOVENTA" Then
|
||||||
|
nombre_boton = "VENTA"
|
||||||
|
b_noventa.Text ="VENTA"
|
||||||
|
c=Starter.skmt.ExecQuery("select NV_CLIENTE,NV_MOTIVO,NV_COMM, (select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = NV_CLIENTE ) as NOMBRE FROM NOVENTA ORDER BY NV_CLIENTE asc")
|
||||||
|
ListView1.Clear
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
c.Position=i
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = ListView1.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 10
|
||||||
|
label2.TextColor = Colors.Blue
|
||||||
|
ListView1.AddTwoLines(c.GetString("NV_CLIENTE"),c.GetString("NOMBRE") &" Motivo #"& c.GetString("NV_MOTIVO")& " Comentario $"& c.GetString("NV_COMM"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
nombre_boton = "NOVENTA"
|
||||||
|
b_noventa.Text ="NO VENTA"
|
||||||
|
c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc")
|
||||||
|
ListView1.Clear
|
||||||
|
|
||||||
|
If c.RowCount>0 Then
|
||||||
|
For i=0 To c.RowCount -1
|
||||||
|
c.Position=i
|
||||||
|
Dim label1 As Label
|
||||||
|
label1 = ListView1.TwoLinesLayout.Label
|
||||||
|
label1.TextSize = 15
|
||||||
|
label1.TextColor = Colors.Black
|
||||||
|
Dim label2 As Label
|
||||||
|
label2 = ListView1.TwoLinesLayout.SecondLabel
|
||||||
|
label2.TextSize = 10
|
||||||
|
label2.TextColor = Colors.Blue
|
||||||
|
ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO"))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
c.Close
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub p_ticketsdia_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
74
B4A/C_UpdateAvailable.bas
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
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.Color = Colors.Transparent
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B4XPage_Appear
|
||||||
|
Try
|
||||||
|
Do While Not(CanRequestPackageInstalls)
|
||||||
|
MsgboxAsync($"Por favor permita que ${Application.PackageName} instale actualizaciones"$, "Instalar actualización")
|
||||||
|
Wait For Msgbox_Result(Result As Int)
|
||||||
|
Dim in As Intent
|
||||||
|
in.Initialize("android.settings.", "package:" & Application.PackageName)
|
||||||
|
StartActivity(in)
|
||||||
|
Loop
|
||||||
|
Catch
|
||||||
|
Log("updateAvailable() Error - " & LastException.Message)
|
||||||
|
End Try
|
||||||
|
If appUpdater.newApp.update Then
|
||||||
|
ofreceActualizacion
|
||||||
|
Else
|
||||||
|
sinActualizacion
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
'//// Esta es una actividad usada por el servicio appUpdater para mostrar notificaciones
|
||||||
|
'//// cuando hay alguna actualizacion de apk.
|
||||||
|
'////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
public Sub CanRequestPackageInstalls As Boolean
|
||||||
|
' // https://www.b4x.com/android/forum/threads/version-safe-apk-installation.87667/#content
|
||||||
|
Dim ctxt As JavaObject
|
||||||
|
ctxt.InitializeContext
|
||||||
|
Dim PackageManager As JavaObject = ctxt.RunMethod("getPackageManager", Null)
|
||||||
|
Return PackageManager.RunMethod("canRequestPackageInstalls", Null)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub ofreceActualizacion
|
||||||
|
If Msgbox2(appUpdater.newApp.newMsg,"Actualización disponible","Si","","No",Null) = DialogResponse.Positive Then 'ignore
|
||||||
|
' StartService(DownloadService)
|
||||||
|
CallSubDelayed(appUpdater, "download_newApk")
|
||||||
|
' ToastMessageShow("Descargando actualización", True)
|
||||||
|
End If
|
||||||
|
B4XPages.MainPage.ocultaProgreso
|
||||||
|
StartActivity(Main)
|
||||||
|
' Activity.Finish
|
||||||
|
B4XPages.ShowPage("Login")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub sinActualizacion
|
||||||
|
Msgbox(appUpdater.newApp.okMsg, "Aplicación al corriente") 'ignore
|
||||||
|
' StartActivity(Main)
|
||||||
|
B4XPages.MainPage.ocultaProgreso
|
||||||
|
B4XPages.ShowPage("Login")
|
||||||
|
End Sub
|
||||||
@@ -2,11 +2,10 @@
|
|||||||
Group=Default Group
|
Group=Default Group
|
||||||
ModulesStructureVersion=1
|
ModulesStructureVersion=1
|
||||||
Type=Class
|
Type=Class
|
||||||
Version=7.01
|
Version=6
|
||||||
@EndOfDesignText@
|
@EndOfDesignText@
|
||||||
|
|
||||||
'Class module
|
'Class module
|
||||||
'version 1.20
|
'version 1.30
|
||||||
'See this page for the list of constants:
|
'See this page for the list of constants:
|
||||||
'http://developer.android.com/intl/fr/reference/android/hardware/Camera.Parameters.html
|
'http://developer.android.com/intl/fr/reference/android/hardware/Camera.Parameters.html
|
||||||
'Note that you should use the constant values instead of the names.
|
'Note that you should use the constant values instead of the names.
|
||||||
@@ -17,8 +16,6 @@ Sub Class_Globals
|
|||||||
Private target As Object
|
Private target As Object
|
||||||
Private event As String
|
Private event As String
|
||||||
Public Front As Boolean
|
Public Front As Boolean
|
||||||
Type CameraInfoAndId (CameraInfo As Object, Id As Int)
|
|
||||||
Type CameraSize (Width As Int, Height As Int)
|
|
||||||
Private parameters As Object
|
Private parameters As Object
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -43,14 +40,18 @@ Private Sub FindCamera (frontCamera As Boolean) As CameraInfoAndId
|
|||||||
Dim ci As CameraInfoAndId
|
Dim ci As CameraInfoAndId
|
||||||
Dim cameraInfo As Object
|
Dim cameraInfo As Object
|
||||||
Dim cameraValue As Int
|
Dim cameraValue As Int
|
||||||
|
Log("findCamera")
|
||||||
If frontCamera Then cameraValue = 1 Else cameraValue = 0
|
If frontCamera Then cameraValue = 1 Else cameraValue = 0
|
||||||
cameraInfo = r.CreateObject("android.hardware.Camera$CameraInfo")
|
cameraInfo = r.CreateObject("android.hardware.Camera$CameraInfo")
|
||||||
Dim numberOfCameras As Int = r.RunStaticMethod("android.hardware.Camera", "getNumberOfCameras", Null, Null)
|
Dim numberOfCameras As Int = r.RunStaticMethod("android.hardware.Camera", "getNumberOfCameras", Null, Null)
|
||||||
|
Log(r.target)
|
||||||
|
Log(numberOfCameras)
|
||||||
For i = 0 To numberOfCameras - 1
|
For i = 0 To numberOfCameras - 1
|
||||||
r.RunStaticMethod("android.hardware.Camera", "getCameraInfo", Array As Object(i, cameraInfo), _
|
r.RunStaticMethod("android.hardware.Camera", "getCameraInfo", Array As Object(i, cameraInfo), _
|
||||||
Array As String("java.lang.int", "android.hardware.Camera$CameraInfo"))
|
Array As String("java.lang.int", "android.hardware.Camera$CameraInfo"))
|
||||||
r.target = cameraInfo
|
r.target = cameraInfo
|
||||||
If r.GetField("facing") = cameraValue Then
|
Log("facing: " & r.GetField("facing") & ", " & cameraValue)
|
||||||
|
If r.GetField("facing") = cameraValue Then
|
||||||
ci.cameraInfo = r.target
|
ci.cameraInfo = r.target
|
||||||
ci.Id = i
|
ci.Id = i
|
||||||
Return ci
|
Return ci
|
||||||
@@ -97,12 +98,13 @@ Private Sub Camera_Ready (Success As Boolean)
|
|||||||
End If
|
End If
|
||||||
CallSub2(target, event & "_ready", Success)
|
CallSub2(target, event & "_ready", Success)
|
||||||
End Sub
|
End Sub
|
||||||
|
'Uncomment this sub if you need to handle the Preview event
|
||||||
|
'Sub Camera_Preview (Data() As Byte)
|
||||||
|
' If SubExists(target, event & "_preview") Then
|
||||||
|
' CallSub2(target, event & "_preview", Data)
|
||||||
|
' End If
|
||||||
|
'End Sub
|
||||||
|
|
||||||
Sub Camera_Preview (Data() As Byte)
|
|
||||||
If SubExists(target, event & "_preview") Then
|
|
||||||
CallSub2(target, event & "_preview", Data)
|
|
||||||
End If
|
|
||||||
End Sub
|
|
||||||
Public Sub TakePicture
|
Public Sub TakePicture
|
||||||
cam.TakePicture
|
cam.TakePicture
|
||||||
End Sub
|
End Sub
|
||||||
@@ -141,13 +143,13 @@ Public Sub GetParameter(Key As String) As String
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub CommitParameters
|
Public Sub CommitParameters
|
||||||
Try
|
'Try
|
||||||
r.target = nativeCam
|
r.target = nativeCam
|
||||||
r.RunMethod4("setParameters", Array As Object(parameters), Array As String("android.hardware.Camera$Parameters"))
|
r.RunMethod4("setParameters", Array As Object(parameters), Array As String("android.hardware.Camera$Parameters"))
|
||||||
Catch
|
'Catch
|
||||||
ToastMessageShow("Error setting parameters.", True)
|
' ToastMessageShow("Error setting parameters.", True)
|
||||||
Log(LastException)
|
' Log(LastException)
|
||||||
End Try
|
' End Try
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub GetColorEffect As String
|
Public Sub GetColorEffect As String
|
||||||
@@ -158,12 +160,28 @@ Public Sub SetColorEffect(Effect As String)
|
|||||||
SetParameter("effect", Effect)
|
SetParameter("effect", Effect)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Public Sub GetSupportedPreviewSizes As CameraSize()
|
||||||
|
r.target = parameters
|
||||||
|
Dim list1 As List = r.RunMethod("getSupportedPreviewSizes")
|
||||||
|
Dim cs(list1.Size) As CameraSize
|
||||||
|
For i = 0 To list1.Size - 1
|
||||||
|
r.target = list1.get(i)
|
||||||
|
cs(i).Width = r.GetField("width")
|
||||||
|
cs(i).Height = r.GetField("height")
|
||||||
|
Next
|
||||||
|
Return cs
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub SetPreviewSize(Width As Int, Height As Int)
|
||||||
|
r.target = parameters
|
||||||
|
r.RunMethod3("setPreviewSize", Width, "java.lang.int", Height, "java.lang.int")
|
||||||
|
End Sub
|
||||||
Public Sub GetSupportedPicturesSizes As CameraSize()
|
Public Sub GetSupportedPicturesSizes As CameraSize()
|
||||||
r.target = parameters
|
r.target = parameters
|
||||||
Dim list1 As List = r.RunMethod("getSupportedPictureSizes")
|
Dim list1 As List = r.RunMethod("getSupportedPictureSizes")
|
||||||
Dim cs(list1.Size) As CameraSize
|
Dim cs(list1.Size) As CameraSize
|
||||||
For i = 0 To list1.Size - 1
|
For i = 0 To list1.Size - 1
|
||||||
r.target = list1.Get(i)
|
r.target = list1.get(i)
|
||||||
cs(i).Width = r.GetField("width")
|
cs(i).Width = r.GetField("width")
|
||||||
cs(i).Height = r.GetField("height")
|
cs(i).Height = r.GetField("height")
|
||||||
Next
|
Next
|
||||||
@@ -200,6 +218,24 @@ Public Sub GetSupportedColorEffects As List
|
|||||||
Return r.RunMethod("getSupportedColorEffects")
|
Return r.RunMethod("getSupportedColorEffects")
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
'Returns a list with the supported preview fps. Each item in the list is an array of two ints (minimum value and maximum value).
|
||||||
|
Public Sub GetSupportedPreviewFpsRange As List
|
||||||
|
r.target = parameters
|
||||||
|
Return r.RunMethod("getSupportedPreviewFpsRange")
|
||||||
|
End Sub
|
||||||
|
'Returns the current preview fps range.
|
||||||
|
'Range is a two elements array. The minimum value and maximum value will be stored in this array.
|
||||||
|
Public Sub GetPreviewFpsRange(Range() As Int)
|
||||||
|
r.target = parameters
|
||||||
|
r.RunMethod4("getPreviewFpsRange", Array As Object(Range), Array As String("[I"))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub SetPreviewFpsRange(MinValue As Int, MaxValue As Int)
|
||||||
|
r.target = parameters
|
||||||
|
r.RunMethod4("setPreviewFpsRange", Array As Object(MinValue, MaxValue), _
|
||||||
|
Array As String("java.lang.int", "java.lang.int"))
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Sub GetPreviewSize As CameraSize
|
Public Sub GetPreviewSize As CameraSize
|
||||||
r.target = parameters
|
r.target = parameters
|
||||||
r.target = r.RunMethod("getPreviewSize")
|
r.target = r.RunMethod("getPreviewSize")
|
||||||
@@ -241,24 +277,24 @@ Public Sub PreviewImageToJpeg(data() As Byte, quality As Int) As Byte()
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub GetSupportedFocusModes As List
|
Public Sub GetSupportedFocusModes As List
|
||||||
r.target = parameters
|
r.target = parameters
|
||||||
Return r.RunMethod("getSupportedFocusModes")
|
Return r.RunMethod("getSupportedFocusModes")
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub SetContinuousAutoFocus
|
Public Sub SetContinuousAutoFocus
|
||||||
Dim modes As List = GetSupportedFocusModes
|
Dim modes As List = GetSupportedFocusModes
|
||||||
If modes.IndexOf("continuous-picture") > -1 Then
|
If modes.IndexOf("continuous-picture") > -1 Then
|
||||||
SetFocusMode("continuous-picture")
|
SetFocusMode("continuous-picture")
|
||||||
Else If modes.IndexOf("continuous-video") > -1 Then
|
Else If modes.IndexOf("continuous-video") > -1 Then
|
||||||
SetFocusMode("continuous-video")
|
SetFocusMode("continuous-video")
|
||||||
Else
|
Else
|
||||||
Log("Continuous focus mode is not available")
|
Log("Continuous focus mode is not available")
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub SetFocusMode(Mode As String)
|
Public Sub SetFocusMode(Mode As String)
|
||||||
r.target = parameters
|
r.target = parameters
|
||||||
r.RunMethod2("setFocusMode", Mode, "java.lang.String")
|
r.RunMethod2("setFocusMode", Mode, "java.lang.String")
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub GetFocusDistances As Float()
|
Public Sub GetFocusDistances As Float()
|
||||||
@@ -267,6 +303,11 @@ Public Sub GetFocusDistances As Float()
|
|||||||
r.RunMethod4("getFocusDistances", Array As Object(F), Array As String("[F"))
|
r.RunMethod4("getFocusDistances", Array As Object(F), Array As String("[F"))
|
||||||
Return F
|
Return F
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Public Sub GetSupportedPictureFormats As List
|
||||||
|
r.target = parameters
|
||||||
|
Return r.RunMethod("getSupportedPictureFormats")
|
||||||
|
End Sub
|
||||||
'This method should only be called if you need to immediately release the camera.
|
'This method should only be called if you need to immediately release the camera.
|
||||||
'For example if you need to start another application that depends on the camera.
|
'For example if you need to start another application that depends on the camera.
|
||||||
Public Sub CloseNow
|
Public Sub CloseNow
|
||||||
@@ -278,6 +319,8 @@ End Sub
|
|||||||
Public Sub FocusAndTakePicture
|
Public Sub FocusAndTakePicture
|
||||||
cam.AutoFocus
|
cam.AutoFocus
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
Private Sub Camera_FocusDone (Success As Boolean)
|
Private Sub Camera_FocusDone (Success As Boolean)
|
||||||
If Success Then
|
If Success Then
|
||||||
TakePicture
|
TakePicture
|
||||||
@@ -286,5 +329,71 @@ Private Sub Camera_FocusDone (Success As Boolean)
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Public Sub IsZoomSupported As Boolean
|
||||||
|
r.target = parameters
|
||||||
|
Return r.RunMethod("isZoomSupported")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub GetMaxZoom As Int
|
||||||
|
r.target = parameters
|
||||||
|
Return r.RunMethod("getMaxZoom")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub getZoom() As Int
|
||||||
|
r.target = parameters
|
||||||
|
Return r.RunMethod("getZoom")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub setZoom(ZoomValue As Int)
|
||||||
|
r.target = parameters
|
||||||
|
r.RunMethod2("setZoom", ZoomValue, "java.lang.int")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub getExposureCompensation As Int
|
||||||
|
r.target = parameters
|
||||||
|
Return r.RunMethod("getExposureCompensation")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub setExposureCompensation(v As Int)
|
||||||
|
r.target = parameters
|
||||||
|
r.RunMethod2("setExposureCompensation", v, "java.lang.int")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub getMinExposureCompensation As Int
|
||||||
|
r.target = parameters
|
||||||
|
Return r.RunMethod("getMinExposureCompensation")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub getMaxExposureCompensation As Int
|
||||||
|
r.target = parameters
|
||||||
|
Return r.RunMethod("getMaxExposureCompensation")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub SetFaceDetectionListener
|
||||||
|
Dim jo As JavaObject = nativeCam
|
||||||
|
Dim e As Object = jo.CreateEvent("android.hardware.Camera.FaceDetectionListener", "FaceDetection", Null)
|
||||||
|
jo.RunMethod("setFaceDetectionListener", Array(e))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub FaceDetection_Event (MethodName As String, Args() As Object) As Object
|
||||||
|
Dim faces() As Object = Args(0)
|
||||||
|
For Each f As Object In faces
|
||||||
|
Dim jo As JavaObject = f
|
||||||
|
Dim faceRect As Rect = jo.GetField("rect")
|
||||||
|
Log(faceRect)
|
||||||
|
Next
|
||||||
|
Return Null
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Public Sub StartFaceDetection
|
||||||
|
Dim jo As JavaObject = nativeCam
|
||||||
|
jo.RunMethod("startFaceDetection", Null)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub StopFaceDetection
|
||||||
|
Dim jo As JavaObject = nativeCam
|
||||||
|
jo.RunMethod("stopFaceDetection", Null)
|
||||||
|
End Sub
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
Group=Default Group
|
Group=Default Group
|
||||||
ModulesStructureVersion=1
|
ModulesStructureVersion=1
|
||||||
Type=Class
|
Type=Class
|
||||||
Version=7.01
|
Version=6.8
|
||||||
@EndOfDesignText@
|
@EndOfDesignText@
|
||||||
''Class module
|
''Class module
|
||||||
Sub Class_Globals
|
Sub Class_Globals
|
||||||
@@ -15,6 +15,8 @@ Sub Class_Globals
|
|||||||
,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte
|
,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte
|
||||||
Private VERSION As Float = 0.9
|
Private VERSION As Float = 0.9
|
||||||
Private tempArray(1) As Object
|
Private tempArray(1) As Object
|
||||||
|
Dim jobTagAnterior As String = "" 'Mod por CHV - 211109
|
||||||
|
Dim reqsList As List
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'Target - The module that handles JobDone (usually Me).
|
'Target - The module that handles JobDone (usually Me).
|
||||||
@@ -22,6 +24,7 @@ End Sub
|
|||||||
Public Sub Initialize (Target As Object, ConnectorLink As String)
|
Public Sub Initialize (Target As Object, ConnectorLink As String)
|
||||||
mTarget = Target
|
mTarget = Target
|
||||||
link = ConnectorLink
|
link = ConnectorLink
|
||||||
|
reqsList.Initialize
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'Sends a query request.
|
'Sends a query request.
|
||||||
@@ -32,7 +35,8 @@ Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object)
|
|||||||
Dim j As HttpJob
|
Dim j As HttpJob
|
||||||
Dim ms As OutputStream
|
Dim ms As OutputStream
|
||||||
Dim out2 As OutputStream = StartJob(j,ms, Tag)
|
Dim out2 As OutputStream = StartJob(j,ms, Tag)
|
||||||
|
If reqsList.IsInitialized Then reqsList.Add(Tag)
|
||||||
|
|
||||||
WriteObject(Command.Name, out2)
|
WriteObject(Command.Name, out2)
|
||||||
WriteInt(Limit, out2)
|
WriteInt(Limit, out2)
|
||||||
WriteList(Command.Parameters, out2)
|
WriteList(Command.Parameters, out2)
|
||||||
@@ -58,6 +62,7 @@ End Sub
|
|||||||
|
|
||||||
'Similar to ExecuteBatch. Sends a single command.
|
'Similar to ExecuteBatch. Sends a single command.
|
||||||
Public Sub ExecuteCommand(Command As DBCommand, Tag As Object)
|
Public Sub ExecuteCommand(Command As DBCommand, Tag As Object)
|
||||||
|
If reqsList.IsInitialized Then reqsList.Add(Tag)
|
||||||
ExecuteBatch(Array As DBCommand(Command), Tag)
|
ExecuteBatch(Array As DBCommand(Command), Tag)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -112,7 +117,7 @@ Private Sub WriteObject(o As Object, out As OutputStream)
|
|||||||
Else If GetType(tempArray(0)) = "[B" Then
|
Else If GetType(tempArray(0)) = "[B" Then
|
||||||
data = o
|
data = o
|
||||||
out.WriteBytes(Array As Byte(T_BLOB), 0, 1)
|
out.WriteBytes(Array As Byte(T_BLOB), 0, 1)
|
||||||
WriteInt(data.Length, out)
|
WriteInt(data.Length, out)
|
||||||
Else 'If o Is String Then (treat all other values as string)
|
Else 'If o Is String Then (treat all other values as string)
|
||||||
out.WriteBytes(Array As Byte(T_STRING), 0, 1)
|
out.WriteBytes(Array As Byte(T_STRING), 0, 1)
|
||||||
data = bc.StringToBytes(o, "UTF8")
|
data = bc.StringToBytes(o, "UTF8")
|
||||||
@@ -185,7 +190,7 @@ End Sub
|
|||||||
|
|
||||||
'Handles the Job result and returns a DBResult.
|
'Handles the Job result and returns a DBResult.
|
||||||
Public Sub HandleJob(Job As HttpJob) As DBResult
|
Public Sub HandleJob(Job As HttpJob) As DBResult
|
||||||
Dim start As Long = DateTime.Now
|
Dim start As Long = DateTime.Now 'ignore
|
||||||
Dim In As InputStream = Job.GetInputStream
|
Dim In As InputStream = Job.GetInputStream
|
||||||
Dim cs As CompressedStreams
|
Dim cs As CompressedStreams
|
||||||
In = cs.WrapInputStream(In, "gzip")
|
In = cs.WrapInputStream(In, "gzip")
|
||||||
@@ -196,6 +201,8 @@ Public Sub HandleJob(Job As HttpJob) As DBResult
|
|||||||
table.Columns.Initialize
|
table.Columns.Initialize
|
||||||
table.rows.Initialize
|
table.rows.Initialize
|
||||||
table.Tag = Job.Tag
|
table.Tag = Job.Tag
|
||||||
|
If jobTagAnterior <> Job.Tag Then LogColor("HandleJob: '"&Job.Tag&"'", Colors.Blue) 'Mod por CHV - 211109
|
||||||
|
jobTagAnterior = Job.Tag 'Mod por CHV - 211109
|
||||||
If method = "query" Then
|
If method = "query" Then
|
||||||
Dim numberOfColumns As Int = ReadInt(In)
|
Dim numberOfColumns As Int = ReadInt(In)
|
||||||
For i = 0 To numberOfColumns - 1
|
For i = 0 To numberOfColumns - 1
|
||||||
@@ -217,7 +224,7 @@ Public Sub HandleJob(Job As HttpJob) As DBResult
|
|||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
In.Close
|
In.Close
|
||||||
Log("HandleJob: " & (DateTime.Now - start))
|
' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112
|
||||||
Return table
|
Return table
|
||||||
End Sub
|
End Sub
|
||||||
'Reads a file and returns the file as a bytes array.
|
'Reads a file and returns the file as a bytes array.
|
||||||
162
B4A/FileHandler.bas
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=11
|
||||||
|
@EndOfDesignText@
|
||||||
|
'Requiere la librería "ContentResolver" y "FileProvider" o "AppUpdating"
|
||||||
|
'
|
||||||
|
'Copiar este codigo al boton_Click que se quiere que importe la base de datos.
|
||||||
|
'
|
||||||
|
' Private Sub b_importarBD_Click
|
||||||
|
' Private FH As FileHandler
|
||||||
|
' FH.Initialize
|
||||||
|
' Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar.
|
||||||
|
' File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno.
|
||||||
|
' Starter.skmt.Initialize(Starter.ruta,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada.
|
||||||
|
' ToastMessageShow("¡BD importada!", False)
|
||||||
|
' End Sub
|
||||||
|
|
||||||
|
Sub Class_Globals
|
||||||
|
#if B4A
|
||||||
|
Private ion As Object
|
||||||
|
Private OldIntent As Intent
|
||||||
|
#end if
|
||||||
|
Type LoadResult (Success As Boolean, Dir As String, FileName As String, RealName As String, Size As Long, Modified As Long, MimeType As String)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub Initialize
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#if B4A
|
||||||
|
Public Sub SaveAs (Source As InputStream, MimeType As String, Title As String) As ResumableSub
|
||||||
|
Dim intent As Intent
|
||||||
|
intent.Initialize("android.intent.action.CREATE_DOCUMENT", "")
|
||||||
|
intent.AddCategory("android.intent.category.OPENABLE")
|
||||||
|
intent.PutExtra("android.intent.extra.TITLE", Title)
|
||||||
|
intent.SetType(MimeType)
|
||||||
|
StartActivityForResult(intent)
|
||||||
|
Wait For ion_Event (MethodName As String, Args() As Object)
|
||||||
|
If -1 = Args(0) Then 'resultCode = RESULT_OK
|
||||||
|
Dim result As Intent = Args(1)
|
||||||
|
Dim jo As JavaObject = result
|
||||||
|
Dim ctxt As JavaObject
|
||||||
|
Dim out As OutputStream = ctxt.InitializeContext.RunMethodJO("getContentResolver", Null).RunMethod("openOutputStream", Array(jo.RunMethod("getData", Null)))
|
||||||
|
File.Copy2(Source, out)
|
||||||
|
out.Close
|
||||||
|
Return True
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub Load As ResumableSub
|
||||||
|
Dim cc As ContentChooser
|
||||||
|
cc.Initialize("cc")
|
||||||
|
cc.Show("application/octet-stream", "Choose text file")
|
||||||
|
Wait For CC_Result (Success As Boolean, Dir As String, FileName As String)
|
||||||
|
Log($"***************************${CRLF}${Dir}${CRLF} ${FileName}"$)
|
||||||
|
Dim res As LoadResult = CreateLoadResult(Success, Dir, FileName)
|
||||||
|
Log($"***************************${CRLF}${res.FileName}${CRLF} ${res}"$)
|
||||||
|
If res.Success Then ExtractInformationFromURI(res.FileName, res)
|
||||||
|
Return res
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub StartActivityForResult(i As Intent)
|
||||||
|
Dim jo As JavaObject = GetBA
|
||||||
|
ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null)
|
||||||
|
jo.RunMethod("startActivityForResult", Array(ion, i))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub GetBA As Object
|
||||||
|
Return Me.As(JavaObject).RunMethod("getBA", Null)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ExtractInformationFromURI (Uri As String, res As LoadResult)
|
||||||
|
Try
|
||||||
|
|
||||||
|
Dim resolver As ContentResolver
|
||||||
|
resolver.Initialize("")
|
||||||
|
Dim u As Uri
|
||||||
|
u.Parse(Uri)
|
||||||
|
Dim rs As ResultSet = resolver.Query(u, Null, "", Null, "")
|
||||||
|
If rs.NextRow Then
|
||||||
|
Dim columns As B4XSet = B4XCollections.CreateSet
|
||||||
|
For i = 0 To rs.ColumnCount - 1
|
||||||
|
columns.Add(rs.GetColumnName(i))
|
||||||
|
Next
|
||||||
|
If columns.Contains("_display_name") Then res.RealName = rs.GetString("_display_name")
|
||||||
|
If columns.Contains("_size") Then res.Size = rs.GetLong("_size")
|
||||||
|
If columns.Contains("last_modified") Then res.Modified = rs.GetLong("last_modified")
|
||||||
|
If columns.Contains("mime_type") Then res.MimeType = rs.GetString("mime_type")
|
||||||
|
End If
|
||||||
|
rs.Close
|
||||||
|
|
||||||
|
Catch
|
||||||
|
Log("error extracting information from file provider")
|
||||||
|
Log(LastException)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub CheckForReceivedFiles As LoadResult
|
||||||
|
Dim Activity As Activity = B4XPages.GetNativeParent(B4XPages.MainPage)
|
||||||
|
If IsRelevantIntent(Activity.GetStartingIntent) Then
|
||||||
|
Dim in As Intent = Activity.GetStartingIntent
|
||||||
|
Dim uri As String
|
||||||
|
If in.HasExtra("android.intent.extra.STREAM") Then
|
||||||
|
uri = in.As(JavaObject).RunMethod("getParcelableExtra", Array("android.intent.extra.STREAM"))
|
||||||
|
Else
|
||||||
|
uri = in.GetData
|
||||||
|
End If
|
||||||
|
Dim res As LoadResult = CreateLoadResult(True, "ContentDir", uri)
|
||||||
|
ExtractInformationFromURI(res.FileName, res)
|
||||||
|
Return res
|
||||||
|
End If
|
||||||
|
Return CreateLoadResult(False, "", "")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub IsRelevantIntent(in As Intent) As Boolean
|
||||||
|
If in.IsInitialized And in <> OldIntent And in.Action = in.ACTION_VIEW Then
|
||||||
|
OldIntent = in
|
||||||
|
Return True
|
||||||
|
End If
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
#else if B4i
|
||||||
|
Public Sub SaveAs(ParentPage As Object, AnchorView As Object, Text As String) As ResumableSub
|
||||||
|
Dim avc As ActivityViewController
|
||||||
|
avc.Initialize("avc", Array(Text))
|
||||||
|
avc.Show(B4XPages.GetNativeParent(ParentPage), AnchorView)
|
||||||
|
Wait For avc_Complete (Success As Boolean, ActivityType As String)
|
||||||
|
Return Success
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub Load (ParentPage As Object, AnchorView As Object) As ResumableSub
|
||||||
|
Dim DocumentPicker As DocumentPickerViewController
|
||||||
|
DocumentPicker.InitializeImport("picker", Array("public.text"))
|
||||||
|
DocumentPicker.Show(B4XPages.GetNativeParent(ParentPage), AnchorView)
|
||||||
|
Wait For Picker_Complete (Success As Boolean, URLs As List)
|
||||||
|
If Success And URLs.Size > 0 Then
|
||||||
|
Return UrlToLoadResult(URLs.Get(0))
|
||||||
|
End If
|
||||||
|
Return CreateLoadResult(False, "", "")
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub UrlToLoadResult(url As String) As LoadResult
|
||||||
|
Dim res As LoadResult = CreateLoadResult(IIf(File.Exists(url, ""), True, False), url, "")
|
||||||
|
res.RealName = res.Dir.SubString(res.Dir.LastIndexOf("/") + 1)
|
||||||
|
res.Size = File.Size(res.Dir, "")
|
||||||
|
Return res
|
||||||
|
End Sub
|
||||||
|
#end if
|
||||||
|
|
||||||
|
Private Sub CreateLoadResult (Success As Boolean, Dir As String, FileName As String) As LoadResult
|
||||||
|
Dim t1 As LoadResult
|
||||||
|
t1.Initialize
|
||||||
|
t1.Success = Success
|
||||||
|
t1.Dir = Dir
|
||||||
|
t1.FileName = FileName
|
||||||
|
Return t1
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 632 B After Width: | Height: | Size: 632 B |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
BIN
B4A/Files/celltitle.bal
Normal file
BIN
B4A/Files/cliente.bal
Normal file
BIN
B4A/Files/clientes.bal
Normal file
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
BIN
B4A/Files/hacer pedido.jpg
Normal file
|
After Width: | Height: | Size: 595 KiB |
BIN
B4A/Files/intmex_logo_192x192.jpg
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
B4A/Files/intmex_logo_192x192_old.jpg
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/login.bal
Normal file
BIN
B4A/Files/logo_192x192.jpg
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
BIN
B4A/Files/logo_mariana1.jpeg
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
B4A/Files/mainpage.bal
Normal file
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
BIN
B4A/Files/mapa_rutas.bal
Normal file
BIN
B4A/Files/mariana_ico.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
B4A/Files/marker-azul-0.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
B4A/Files/marker-azul-1.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
B4A/Files/marker-azul-10.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-100.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-101.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-102.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-103.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-104.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-105.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-106.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-107.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-108.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-109.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-11.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
B4A/Files/marker-azul-110.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-111.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
B4A/Files/marker-azul-112.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-113.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-114.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/marker-azul-115.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
B4A/Files/marker-azul-116.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-117.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
B4A/Files/marker-azul-118.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-119.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-12.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4A/Files/marker-azul-120.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-121.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-122.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-123.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-124.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
B4A/Files/marker-azul-125.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-126.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-127.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-128.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-129.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-13.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-130.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-131.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
B4A/Files/marker-azul-132.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
B4A/Files/marker-azul-133.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-134.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-135.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-136.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-137.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-138.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-139.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
B4A/Files/marker-azul-14.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
B4A/Files/marker-azul-140.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-141.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/marker-azul-142.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-143.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-144.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
B4A/Files/marker-azul-145.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
B4A/Files/marker-azul-146.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
B4A/Files/marker-azul-147.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
B4A/Files/marker-azul-148.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |