Files
Medicomed_Preventa/B4A/C_NuevoCliente.bas
IsR0d 7fe1d3059d Version 4.09.22
Se agrego la Bitacora que tiene Kelloggs
2024-09-23 10:36:51 -06:00

414 lines
14 KiB
QBasic

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 reqManager As DBRequestManager
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 desdeBD As Boolean
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 et_colonia As EditText
Private Label4 As Label
Private et_cp As EditText
Private lv_colonia As ListView
Dim banderasepo As Int
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
Return Me
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
'load the layout to Root
Root.LoadLayout("nuevocliente")
ruta = File.DirInternal
If File.Exists(ruta, "kmt.db") = False Then
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
End If
' skmt.Initialize(ruta,"kmt.db", True)
' p_camara.Height = Root.Height
' p_camara.Width = Root.Width
reqManager.Initialize(Me, B4XPages.MainPage.SERVER)
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 = ""
et_colonia.Text = ""
et_cp.Text = ""
et_direccion.Text = ""
lv_colonia.Visible = False
lv_colonia.Clear
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(Label4, 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)
et_colonia.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
et_cp.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")
desdeBD = False
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")
lv_colonia.Clear
End Sub
Sub et_cp_click
lv_colonia.Visible = False
End Sub
Private Sub et_colonia_Click
Sender.As(EditText).InputType = 524288
If lv_colonia.Visible = False Then
lv_colonia.Visible = True
Else
lv_colonia.Visible = False
End If
End Sub
Private Sub et_cp_TextChanged (Old As String, New As String)
If Not(desdeBD) And New.Length = 5 Then
Private cc As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select estado, municipio, colonia from sepomex where codigo = '${et_cp.text}'"$)
' LogColor(cc.RowCount, Colors.Green)
If cc.RowCount > 0 Then
For x = 0 To cc.RowCount - 1
cc.Position = x
Next
End If
else if New.Length < 5 Then
lv_colonia.Visible = False
End If
desdeBD = False
End Sub
Private Sub et_colonia_FocusChanged (HasFocus As Boolean)
If HasFocus Then
Private cc As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select colonia from sepomex where codigo = '${et_cp.text}'"$)
lv_colonia.Clear
lv_colonia.BringToFront
Private Label1 As Label
Label1 = lv_colonia.SingleLineLayout.Label
Label1.TextColor = Colors.White
Label1.TextSize = 14
' Log(cc.RowCount)
If cc.RowCount > 0 Then
For i = 0 To cc.RowCount - 1
cc.Position = i
lv_colonia.AddSingleLine(cc.GetString("COLONIA"))
' Log(cc.GetString("COLONIA"))
Next
lv_colonia.AddSingleLine("Ingrese colonia manualmente.")
Else
lv_colonia.AddSingleLine("Código no encontrado.")
lv_colonia.AddSingleLine("Ingrese colonia manualmente.")
End If
lv_colonia.Visible = True
End If
End Sub
Private Sub lv_colonia_ItemClick (Position As Int, Value As Object)
lv_colonia.Visible = False
If Value <> "Código no encontrado." And Value <> "Ingrese colonia manualmente." Then
et_colonia.Text = Value
banderasepo = 0
Else
banderasepo = 1
End If
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 et_colonia.Text.Length > 3 Then
If et_cp.Text.Length > 3 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=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
c.Position=0
no_ruta= c.GetString("CAT_CL_RUTA")
no_cliente= "N" & sTime & no_ruta
Log("++ ++ no_cliente = "&no_cliente)
c.Close
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0) ",Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,"null","null","null","null","null","null","null","null","null","null","null","null","null",B4XPages.MainPage.lon_gps,B4XPages.MainPage.lat_gps))
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_STAY_STORE(HSS_CODIGO, HSS_IN , HSS_OUT , HSS_TOT) VALUES (?,0,0,0)", Array As Object (no_cliente))
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
c=B4XPages.MainPage.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=B4XPages.MainPage.skmt.ExecQuery("select usuario from usuarioa")
c.Position = 0
usuario = c.GetString("USUARIO")
c.Close
' B4XPages.MainPage.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)
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CLIENTES_NUEVOS(CN_ID, CN_FECHA, CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, COLONIA, CP, CN_ALMACEN, CN_RUTA, CN_ENVIO,CN_BANDERA) VALUES (?,?,?,?,?,?,?,?,?,?,?,0,?)",Array As String(no_cliente,sDate2 &" "&sTime2, usuario, lat, lon, E_NOMBRE.Text,et_direccion.Text,et_colonia.Text, et_cp.Text, ALMACEN, no_ruta,banderasepo))
fototomada = "0"
B4XPages.ShowPage("cliente")
CallSubDelayed(Tracker, "StartFLP")
mandaPendientesclientesnuevos
Else
MsgboxAsync("Por favor captura el C.P. del cliente","Atención")
End If
Else
MsgboxAsync("Por favor captura la colonia 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
Sub mandaPendientesclientesnuevos
c=B4XPages.MainPage.skmt.ExecQuery("SELECT CN_ID, CN_FECHA , CN_USER, CN_LAT, CN_LON, CN_NOMBRE, CN_DIRECCION, COLONIA, CP, CN_ALMACEN, CN_RUTA, CN_BANDERA FROM CLIENTES_NUEVOS where CN_ENVIO <> 1")
If c.RowCount>0 Then
For i = 0 To c.RowCount - 1
c.Position = i
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insert_clientesnuevos2_MEDI"
cmd.Parameters = Array As Object(c.GetString("CN_ID"), c.GetString("CN_FECHA"), c.GetString("CN_USER"), c.GetString("CN_LAT"), c.GetString("CN_LON"), c.GetString("CN_NOMBRE"), c.GetString("CN_DIRECCION"),c.GetString("COLONIA"),c.GetString("CP"),c.GetString("CN_ALMACEN"), c.GetString("CN_RUTA"),c.GetString("CN_BANDERA"))
reqManager.ExecuteCommand(cmd , $"ins_CNUEVOSPendientes_head_${c.GetString("CN_ID")}"$)
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_CNUEVOSPendientes_head_") > -1 Then
Private cliente As String= resultado.Tag
cliente = cliente.SubString(cliente.IndexOf("_")+24)
Log($"Cliente1:${cliente}"$)
B4XPages.MainPage.skmt.ExecNonQuery2("update CLIENTES_NUEVOS SET CN_ENVIO = ? WHERE CN_ID = ? AND CN_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
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!!!", 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!!!", 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!!!", 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