mirror of
https://github.com/KeymonSoft/Mariana_Censos.git
synced 2026-04-18 13:19:14 +00:00
- Se agregó en mandaPenddientesNuevosClientes que se envie la informacion a HIST_CENSOS_GEOCERCA. - Se quito que la direccion se envie a HC_COMENTARIO cuando se modifica un cliente, solo se manda con los clientes nuevos.
617 lines
27 KiB
QBasic
617 lines
27 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 rp As RuntimePermissions
|
|
Dim g As GPS
|
|
Dim ruta As String
|
|
Dim c As Cursor
|
|
Dim reqManager As DBRequestManager
|
|
Dim ime As IME
|
|
|
|
Dim CANCELA As Button
|
|
Dim b_guardar As Button
|
|
Dim cuenta As String
|
|
Dim usuario As String
|
|
Dim sDate,sTime As String
|
|
Dim no_cliente As String
|
|
Dim no_ruta As String
|
|
|
|
Dim r_4 As RadioButton
|
|
Dim et_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
|
|
Dim ALMACEN As String
|
|
Private Panel1 As Panel
|
|
Private Button1 As Button
|
|
Private et_direccion As EditText
|
|
Private b_ubicacion As Button
|
|
Dim elGiro As String = ""
|
|
Private lv_giro As ListView
|
|
Private l_giro As Label
|
|
Private et_giro As EditText
|
|
Private cb_giro As B4XComboBox
|
|
Dim logger As Boolean = False
|
|
Dim cargarCliente As Boolean = False
|
|
Private B_FOTO As Button
|
|
Dim elOtroCliente As String = ""
|
|
Dim camposModificados As List
|
|
Dim mandarTodo As Boolean = False
|
|
Private et_atiende As EditText
|
|
Private et_telefono As EditText
|
|
Private et_email As EditText
|
|
Private sv_nuevoClienteDatos As ScrollView
|
|
Private l_tituloCuestionaro As Label
|
|
Private l_cuestionario As Label
|
|
Dim q As C_Cuestionario
|
|
Dim su As StringUtils
|
|
Dim clienteAnt As String = ""
|
|
Dim cuestionarioTexto 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)
|
|
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
|
|
sv_nuevoClienteDatos.Width = Root.Width
|
|
sv_nuevoClienteDatos.Height = Root.Height
|
|
sv_nuevoClienteDatos.Panel.LoadLayout("nuevoClienteDatos")
|
|
' Subs.centraBoton(p_botones, p_nuevoCliente.Width)
|
|
' skmt.Initialize(ruta,"kmt.db", True)
|
|
' p_camara.Height = Root.Height
|
|
' p_camara.Width = Root.Width
|
|
q.Initialize(Me, "q", Root, Starter.skmt)
|
|
End Sub
|
|
|
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
|
|
|
Sub B4XPage_Appear
|
|
rp.CheckAndRequest(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
|
|
' If logger Then Log("inicializamos Camara")
|
|
Else
|
|
ToastMessageShow("Sin permisos de camara!!!", True)
|
|
End If
|
|
camposModificados.Initialize
|
|
l_cuestionario.Visible = False
|
|
l_tituloCuestionaro.Visible = False
|
|
et_nombre.Text = ""
|
|
et_direccion.Text = ""
|
|
et_atiende.Text = ""
|
|
et_telefono.Text = ""
|
|
et_email.Text = ""
|
|
|
|
' Log($"CargarCliente: ${cargarCliente}"$)
|
|
reqManager.Initialize(Me, Starter.server)
|
|
If Not(Starter.gps.GPSEnabled) Then
|
|
ToastMessageShow("Es necesario tener el GPS encendido", True)
|
|
StartActivity(Starter.gps.LocationSettingsIntent)
|
|
End If
|
|
' p_botones.Top = l_cuestionario.top + l_cuestionario.Height + 20dip
|
|
p_nuevoCliente.Height = p_botones.Top + p_botones.Height + 20dip
|
|
sv_nuevoClienteDatos.Panel.Height = p_nuevoCliente.Height
|
|
Dim losGiros As List = Subs.traeGirosLista
|
|
cb_giro.SetItems(losGiros)
|
|
B_FOTO.Enabled = True
|
|
If cargarCliente Then
|
|
Log("Cargamos cliente")
|
|
Private cf As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select * from HIST_FOTO_CLIENTE where codigo In (Select cuenta from cuentaa)"$)
|
|
Private cc As Cursor = B4XPages.MainPage.skmt.ExecQuery("select * from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
|
|
Log(cc.RowCount)
|
|
If cc.RowCount > 0 Then
|
|
cc.Position = 0
|
|
fototomada = ""
|
|
If cf.RowCount > 0 Then
|
|
cf.Position = 0
|
|
fototomada = cf.GetString("NOM_FOTO")
|
|
End If
|
|
Log($"${cc.GetString("CAT_CL_CODIGO")}, ${cf.RowCount}, ${fototomada}"$)
|
|
elOtroCliente = cc.GetString("CAT_CL_CODIGO")
|
|
et_nombre.Text = cc.GetString("CAT_CL_NOMBRE")
|
|
et_direccion.Text = cc.GetString("CAT_CL_CALLE1")
|
|
et_atiende.Text = cc.GetString("CAT_CL_ATIENDE1")
|
|
et_telefono.Text = cc.GetString("CAT_CL_TELEFONO")
|
|
et_email.Text = cc.GetString("CAT_CL_EMAIL")
|
|
Log($"${losGiros.IndexOf(cc.GetString("CAT_CL_GIRO"))}, ${losGiros}, ${cc.GetString("CAT_CL_GIRO")}"$)
|
|
cb_giro.SelectedIndex = losGiros.IndexOf(cc.GetString("CAT_CL_GIRO"))
|
|
End If
|
|
Else
|
|
DateTime.DateFormat = "HH:mm:ss"
|
|
sTime=DateTime.Time(DateTime.Now)
|
|
no_cliente= "NC" & sTime & ":" & Subs.traeRuta
|
|
B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
|
|
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
|
|
Log(no_cliente)
|
|
End If
|
|
b_ubicacion.Text = "Buscando ubicación ..."
|
|
b_guardar.Visible = False
|
|
' Subs.panelVisible(p_nuevoCliente, 0, 0)
|
|
' p_nuevoCliente.Height = Root.Height
|
|
' p_nuevoCliente.Width = Root.Width
|
|
' Subs.centraEtiqueta(Label1, Root.Width)
|
|
' Subs.centraEtiqueta(l_sinUbicacion, Root.Width)
|
|
Subs.centraPanel(p_botones, Root.Width)
|
|
' E_NOMBRE.Left = Round(Root.Width/2)-(E_NOMBRE.Width/2)
|
|
If B4XPages.MainPage.lat_gps <> "0.0" Then
|
|
b_guardar.Visible = True 'Si hay ubicaccion, mostramos el boton de guardar.
|
|
' l_sinUbicacion.Visible = False
|
|
End If
|
|
Subs.centraPanel(Panel1, Root.Width)
|
|
b_guardar.Enabled = False
|
|
' Log(losGiros.IndexOf("ABARROTES"))
|
|
' cb_giro.SelectedIndex = losGiros.IndexOf("ABARROTES")
|
|
' cb_giro.
|
|
' l_sinUbicacion.Visible = True
|
|
CallSubDelayed(Tracker, "StartFLPSmall")
|
|
' Log($"${B4XPages.MainPage.principal.l_dia.text}, ${Starter.dia_semana}"$)
|
|
'Revisamos si el cliente actual es diferente del anterior y si es diferente ponemos encuestaIniciada en VERDADERO.
|
|
If clienteAnt <> no_cliente Then q.encuestaIniciada = False
|
|
q.encuestaIniciada = False
|
|
q.ocultPanelPregunta
|
|
clienteAnt = no_cliente
|
|
' Log("CON ENCUESTA: " & q.clienteConCuestionario(Subs.traeCliente))
|
|
' Log("INICIADA: " & q.encuestaIniciada)
|
|
If cargarCliente Then
|
|
Log(">>>>>> " & no_cliente)
|
|
If l_cuestionario.Visible Then
|
|
p_botones.Top = l_cuestionario.Top + l_cuestionario.Height + 20dip
|
|
Else
|
|
p_botones.Top = l_tituloCuestionaro.Top + 20dip
|
|
End If
|
|
Private hayCuestionario As Boolean = False
|
|
Private cuest As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select * from cuestionario where Q_IDCLIENTE = '${Subs.traeCliente}'"$)
|
|
If cuest.RowCount > 0 Then
|
|
Log("HAY CUESTIONARIO")
|
|
hayCuestionario = True
|
|
Private cs As CSBuilder
|
|
cs.Initialize
|
|
For i = 0 To cuest.RowCount - 1
|
|
cuest.Position = i
|
|
cs.color(Colors.black).Append(cuest.GetString("Q_PREGUNTA")).popall.Append(CRLF).Append(" " & cuest.GetString("Q_RESPUESTA")).Append(CRLF).popall
|
|
Next
|
|
l_cuestionario.Text = cs
|
|
l_cuestionario.Visible = True
|
|
l_tituloCuestionaro.Visible = True
|
|
l_cuestionario.Height = su.MeasureMultilineTextHeight(l_cuestionario, l_cuestionario.Text)
|
|
End If
|
|
End If
|
|
' Log($"${(Not(q.encuestaIniciada) And Not(cargarCliente))} | ${Not(hayCuestionario)}"$)
|
|
If (Not(q.encuestaIniciada) And Not(cargarCliente)) Or (Not(hayCuestionario)) Then
|
|
Log("Mostramos encuesta")
|
|
q.agregaPregunta("1", "¿Se puede acceder al negocio o está enrejado?", Array As String("No, está enrejado o no se tiene acceso", "Si se pude acceder"))
|
|
End If
|
|
ajustaTamano
|
|
End Sub
|
|
|
|
Sub GPS_LocationChanged (Location1 As Location)
|
|
' LogColor($"LATITUD= ${B4XPages.MainPage.lat_gps}"$, Colors.Red)
|
|
b_ubicacion.TextColor = Colors.Gray
|
|
Sleep(200)
|
|
b_ubicacion.TextColor = Colors.red
|
|
If B4XPages.MainPage.lat_gps <> "0.0" Then
|
|
b_guardar.Enabled = True 'Si hay ubicaccion, mostramos el boton de guardar.
|
|
' l_sinUbicacion.Visible = True
|
|
b_ubicacion.Text = $"Precisión del GPS: ${Round2(Location1.Accuracy,1)} mts."$
|
|
End If
|
|
End Sub
|
|
|
|
Sub flp_LocationChanged (Location1 As Location)
|
|
Log("FLP LOC CHANGED")
|
|
End Sub
|
|
|
|
Sub CANCELA_Click
|
|
B4XPages.ShowPage("Principal")
|
|
fototomada = ""
|
|
et_nombre.Text = ""
|
|
et_direccion.Text = ""
|
|
et_atiende.Text = ""
|
|
et_telefono.Text = ""
|
|
et_email.Text = ""
|
|
CallSubDelayed(Tracker, "StartFLP")
|
|
End Sub
|
|
|
|
Sub b_guardar_Click
|
|
Log("|" & fototomada & "|" & et_nombre.Text & "|" & et_direccion.Text & "|" & cb_giro.SelectedItem)
|
|
If et_nombre.Text = "" Or fototomada = "null" Or fototomada = Null Or fototomada = "" Or et_direccion.Text = "" Or cb_giro.SelectedItem = "SELECCIONA UNA OPCION" Then
|
|
ToastMessageShow("Se tienen que llenar todos los campos y tomar la foto para continuar" , True)
|
|
else if B4XPages.MainPage.principal.l_ruta.Text = "0" Then
|
|
ToastMessageShow("Es necesario cargar una ruta.", False)
|
|
Else
|
|
' Log("entramos a b_guardar")
|
|
Log($"CargarCliente: ${cargarCliente}"$)
|
|
DateTime.DateFormat = "dd/MM/yyyy"
|
|
DateTime.Timeformat = "HH:mm:ss"
|
|
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")
|
|
If cargarCliente Then no_cliente = elOtroCliente
|
|
Log("++ ++ no_cliente = "&no_cliente)
|
|
c.Close
|
|
|
|
DateTime.DateFormat = "dd/MM/yyyy HH:mm:ss"
|
|
Private DateNC As String = DateTime.Date(DateTime.Now)
|
|
If cargarCliente Then
|
|
Log("###### ACTUALIZAMOS NUEVO ########")
|
|
camposModificados = Subs.RemoveDuplicates(camposModificados)
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_CODIGO = '${no_cliente}', CAT_CL_CEDIS = '${Subs.traeAlmacen}', CAT_CL_TELEFONO = '${et_telefono.text}', CAT_CL_EMAIL = '${et_email.text}', CAT_CL_ATIENDE1 = '${et_atiende.Text}', gestion = 11,
|
|
CAT_CL_LAT = '${B4XPages.MainPage.lat_gps}', CAT_CL_LONG = '${B4XPages.MainPage.lon_gps}', CAT_CL_GIRO = '${cb_giro.SelectedItem}', CAT_CL_NOMBRE = '${Subs.escapeSQLString(et_nombre.Text)}', CAT_CL_CALLE1 = '${Subs.escapeSQLString(et_direccion.text)}', CAT_CL_ENVIO_PENDIENTE = 1,
|
|
LAT_CENSADOR = '${B4XPages.MainPage.lat_gps}', LON_CENSADOR = '${B4XPages.MainPage.lon_gps}', CAMPOS_MODIFICADOS = '${Subs.list2string(camposModificados)}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$)
|
|
Else
|
|
Log("###### INSERTAMOS NUEVO ########")
|
|
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO, CAT_CL_RUTA, CAT_CL_NOMBRE, CAT_CL_CALLE1, CAT_CL_LAT, CAT_CL_LONG, CAT_CL_FECHA_CAPTURA, CAT_CL_DIAS_VISITA, LAT_CENSADOR, LON_CENSADOR, CAT_CL_ENVIO_PENDIENTE, CAT_CL_TELEFONO, CAT_CL_ATIENDE1, CAT_CL_EMAIL, CAT_CL_GIRO, gestion) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?, ?, ?, ?) ", Array As Object (no_cliente, no_ruta, et_nombre.Text, et_direccion.Text, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, DateNC, Starter.dia_semana, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, et_telefono.Text, et_atiende.Text, et_email.Text, cb_giro.SelectedItem,11))
|
|
End If
|
|
ALMACEN = Subs.traeAlmacen
|
|
|
|
' If fototomada <> "" And fototomada <> Null Then
|
|
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_FOTO_CLIENTE(CODIGO, ALMACEN, RUTA, NOM_FOTO, ENVIO_PENDIENTE) VALUES(?,?,?,?,1)", Array As Object(no_cliente, ALMACEN, no_ruta, fototomada))
|
|
Log($"${no_cliente}, ${ALMACEN}, ${no_ruta}, ${fototomada}"$)
|
|
' End If
|
|
mandaPendientesNuevosClientes
|
|
cargarCliente = False
|
|
B4XPages.ShowPage("Principal")
|
|
fototomada = ""
|
|
et_nombre.Text = ""
|
|
et_direccion.Text = ""
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub p_nuevoCliente_Click
|
|
|
|
End Sub
|
|
|
|
Private Sub b_foto_inci_Click
|
|
b_guardar.Enabled = False
|
|
camEx2.TakePicture
|
|
p_camara.Visible = False
|
|
' StopCamera2
|
|
End Sub
|
|
|
|
Private Sub InitializeCamera2
|
|
rp.CheckAndRequest(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
|
|
If logger Then Log("inicializamos Camara")
|
|
Else
|
|
ToastMessageShow("Sin permisos de camara!!!", True)
|
|
End If
|
|
' rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
|
|
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
|
' If Result Then
|
|
' Log("Con permisos para escritura")
|
|
' Else
|
|
' ToastMessageShow("Sin permisos de escritura externa.", True)
|
|
' End If
|
|
'
|
|
' rp.CheckAndRequest(rp.PERMISSION_READ_EXTERNAL_STORAGE)
|
|
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
|
' If Result Then
|
|
' Log("Con permisos de lectura")
|
|
' Else
|
|
' ToastMessageShow("Sin permisos de lectura externa!", True)
|
|
' End If
|
|
End Sub
|
|
|
|
Sub Camera1_Ready (Success As Boolean)
|
|
If logger Then Log("Camara ready")
|
|
If Success Then
|
|
camEx2.SetJpegQuality(90)
|
|
camEx2.SetContinuousAutoFocus
|
|
camEx2.CommitParameters
|
|
camEx2.StartPreview
|
|
If logger Then Log(camEx2.GetPreviewSize)
|
|
Else
|
|
ToastMessageShow("Cannot open camera.", True)
|
|
Log("Cannot open camera")
|
|
End If
|
|
End Sub
|
|
|
|
Sub Camera1_PictureTaken (Data()As Byte)
|
|
If logger Then 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"
|
|
If logger Then Log("creado en promotoria " & Dirp & Dir & Dir2)
|
|
Catch
|
|
Dir2 = ""
|
|
If logger Then Log("creado en raiz")
|
|
End Try
|
|
camEx2.SavePictureToFile(Data, Dirp&Dir, filename)
|
|
camEx2.StartPreview 'restart preview
|
|
Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 400, 550, True)
|
|
Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, False)
|
|
img.WriteToStream(out, 100, "PNG")
|
|
out.Close
|
|
' ImageView8.Bitmap = LoadBitmap(File.DirInternal & Dir & Dir2,nombrefoto7)
|
|
ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True)
|
|
If logger Then Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename)
|
|
p_camara.Visible = False
|
|
StopCamera2
|
|
b_guardar.Enabled = True
|
|
End Sub
|
|
|
|
Private Sub StopCamera2
|
|
' Capturing = False
|
|
If logger Then Log("ENTRAMOS STOPCAMERA2")
|
|
If logger Then Log(camEx2.IsInitialized)
|
|
If camEx2.IsInitialized Then
|
|
If logger Then Log("RELEASE CAMERA")
|
|
camEx2.Release
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub B_FOTO_Click
|
|
DateTime.DateFormat="ddMMyyyyHHmmss"
|
|
ime.HideKeyboard
|
|
InitializeCamera2
|
|
Subs.centraPanel(p_cam, Root.Width)
|
|
Subs.panelVisible(p_camara, 0, 0)
|
|
p_camara.Width = Root.Width
|
|
Subs.centraBoton(b_foto_inci, Root.Width)
|
|
fototomada = DateTime.Now & "_cliente.jpg"
|
|
Log(fototomada)
|
|
End Sub
|
|
|
|
Sub B4XPage_CloseRequest As ResumableSub
|
|
Log("CloseRequest NC")
|
|
StopCamera2
|
|
q.ocultPanelPregunta
|
|
CallSubDelayed(Tracker, "StartFLP")
|
|
If q.panelSombra.IsInitialized Then
|
|
Log(1)
|
|
q.panelSombra.Visible = False
|
|
End If
|
|
If p_camara.Visible Then
|
|
Log(2)
|
|
p_camara.Visible = False
|
|
Else
|
|
Log(3)
|
|
If Starter.dondeestoy = "1" Then
|
|
StartActivity(MAPA_RUTAS)
|
|
Else
|
|
Log("AQUI")
|
|
B4XPages.ShowPage("Principal")
|
|
End If
|
|
End If
|
|
Return False
|
|
End Sub
|
|
|
|
Private Sub b_ubicacion_Click
|
|
ToastMessageShow("Buscando ubicación", False)
|
|
b_ubicacion.Text = "Buscando ubicación ..."
|
|
CallSubDelayed(Tracker, "StartFLPSmall")
|
|
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)
|
|
'Modificamos la bandera de pendiente en kmt_info
|
|
If resultado.Tag.As(String).IndexOf("guardaClienteNuevo_") > -1 Then
|
|
Private cliente As String= resultado.Tag
|
|
cliente = cliente.SubString(cliente.IndexOf("_")+1)
|
|
' Log($"Cliente: ${cliente}"$)
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"update kmt_info set CAT_CL_ENVIO_PENDIENTE = 0 where CAT_CL_CODIGO = '${cliente}'"$)
|
|
Log($"Cliente: ${cliente} - PENDIENTE A CERO"$)
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"update HIST_FOTO_CLIENTE set ENVIO_PENDIENTE = 0 where CODIGO = '${cliente}'"$)
|
|
Subs.logJobDoneResultados(resultado)
|
|
End If
|
|
'Modificamos la bandera de pendiente en fotos
|
|
If resultado.Tag.As(String).IndexOf("insertFotoCN_") > -1 Then
|
|
Subs.logJobDoneResultados(resultado)
|
|
Private cliente As String= resultado.Tag
|
|
cliente = cliente.SubString(cliente.IndexOf("_")+1)
|
|
Log($"Cliente: ${cliente} - PENDIENTE A CERO"$)
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"update HIST_FOTO_CLIENTE set ENVIO_PENDIENTE = 0 where CODIGO = '${cliente}'"$)
|
|
End If
|
|
End If
|
|
Job.Release
|
|
End If
|
|
End Sub
|
|
|
|
Sub mandaPendientesNuevosClientes
|
|
'Enviamos Pendientes
|
|
DateTime.DateFormat = "dd/MM/yyyy HH:mm:ss"
|
|
reqManager.Initialize(Me, Starter.server)
|
|
Private sDateP As String = DateTime.Date(DateTime.Now)
|
|
' c = B4XPages.MainPage.skmt.ExecQuery("SELECT * from kmt_info where CAT_CL_CODIGO like 'NC%' and CAT_CL_ENVIO_PENDIENTE = '1'")
|
|
c = B4XPages.MainPage.skmt.ExecQuery("Select kmt_info.*, nom_foto from kmt_info left join HIST_FOTO_CLIENTE on cat_cl_codigo = codigo where CAT_CL_CODIGO like 'N%' and CAT_CL_ENVIO_PENDIENTE = '1'")
|
|
If mandarTodo Then c = B4XPages.MainPage.skmt.ExecQuery("Select kmt_info.*, nom_foto from kmt_info left join HIST_FOTO_CLIENTE on cat_cl_codigo = codigo where CAT_CL_CODIGO like 'N%' and gestion = 11")
|
|
Log($"Cliente Nuevo PENDIENTE: ${c.RowCount}"$)
|
|
Dim fotox() As Byte
|
|
Dim cmd As DBCommand
|
|
Dim Dirp As String = File.DirInternal
|
|
Dim Dir As String
|
|
Dim Dir2 As String
|
|
Dir = "/promotoriakmts"
|
|
If c.RowCount > 0 Then
|
|
For i = 0 To c.RowCount - 1
|
|
c.Position = i
|
|
cuestionarioTexto = ""
|
|
Private cuest As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select * from cuestionario where Q_IDCLIENTE = '${c.GetString("CAT_CL_CODIGO")}'"$)
|
|
If cuest.RowCount > 0 Then
|
|
cuest.Position = 0
|
|
cuestionarioTexto = cuest.GetString("Q_FECHA")
|
|
For cu = 0 To cuest.RowCount - 1
|
|
cuest.Position = cu
|
|
cuestionarioTexto = $"${cuestionarioTexto}|${cuest.GetString("Q_IDPREGUNTA")}|${cuest.GetString("Q_PREGUNTA")}|${cuest.GetString("Q_IDRESPUESTA")}|${cuest.GetString("Q_RESPUESTA")}"$
|
|
Next
|
|
End If
|
|
' Log(c.GetString("NOM_FOTO"))
|
|
' If c.GetString("NOM_FOTO") <> Null And c.GetString("NOM_FOTO") <> "" And c.GetString("NOM_FOTO") <> "null" Then
|
|
' Log(File.Exists(Dirp&Dir&Dir2,c.GetString("NOM_FOTO")))
|
|
' Log($"${Dirp&Dir&Dir2},${c.GetString("NOM_FOTO")}"$)
|
|
fotox = Null
|
|
' Log($"${Dirp}${Dir}${Dir2},${c.GetString("NOM_FOTO")}"$)
|
|
If c.GetString("NOM_FOTO") <> Null And c.GetString("NOM_FOTO") <> "null" And File.Exists(Dirp&Dir&Dir2,c.GetString("NOM_FOTO")) Then fotox = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("NOM_FOTO")))
|
|
Dim cmd As DBCommand
|
|
cmd.Initialize
|
|
cmd.Name = "guardaClienteNuevo2_MARDS"
|
|
' Log(">>>>>>> TMP_CLIENTES_CENSOS")
|
|
' TMP_ALMACENID, TMP_RUTA, TMP_USUARIO, TMP_ID_CLIENTE, TMP_NOMBRE, TMP_DOMICILIO, TMP_FECHA_CAPTURA_MOVIL, TMP_FECHA_SINCRONIZACION, TMP_LATITUD, TMP_LONGITUD
|
|
cmd.Parameters = Array As Object(Subs.traeAlmacen, c.GetString("CAT_CL_RUTA"), Subs.traeUsuarioDeBD, c.GetString("CAT_CL_CODIGO"), c.GetString("CAT_CL_NOMBRE"), c.GetString("CAT_CL_CALLE1"), c.GetString("CAT_CL_FECHA_CAPTURA"), sDateP, c.GetString("CAT_CL_LAT"), c.GetString("CAT_CL_LONG"), fotox, c.GetString("CAT_CL_GIRO"), Starter.dia_semana, c.GetString("CAT_CL_TELEFONO"), c.GetString("CAT_CL_EMAIL"), cuestionarioTexto, c.GetString("CAT_CL_ATIENDE1"))
|
|
Log($"${c.GetString("CAT_CL_CODIGO")}, ${Subs.traeAlmacen}, ${c.GetString("CAT_CL_LAT")}, ${c.GetString("CAT_CL_LONG")}, ${c.GetString("CAT_CL_SECUENCIA")}, ${c.GetString("CAT_CL_RUTA")}, ${c.GetString("CAT_CL_DIASEMANA")}, ${c.GetString("CAT_CL_GIRO")}, ${c.GetString("CAT_CL_NOMBRE")}, ${c.GetString("CAT_CL_ATIENDE1")}, ${c.GetString("CAT_CL_CALLE")}, ${c.GetString("CAT_CL_NOINT")}, ${c.GetString("CAT_CL_NOEXT")}, ${c.GetString("CAT_CL_CALLE1")}, ${c.GetString("CAT_CL_CRUCE1")}, ${c.GetString("CAT_CL_CALLE2")}, ${c.GetString("CAT_CL_CP")}, ${c.GetString("CAT_CL_COLONIA")}, ${c.GetString("CAT_CL_MUNI")}, ${c.GetString("CAT_CL_EDO")}, ${c.GetString("CAT_CL_ESTATUS")}, ${c.GetString("CAT_CL_FECHA_CAPTURA")}, ${sDate}, ${Subs.traeUsuarioDeBD}"$)
|
|
LogColor(c.GetString("CAT_CL_CODIGO"),Colors.DarkGray)
|
|
reqManager.ExecuteCommand(cmd , $"guardaClienteNuevo_${c.GetString("CAT_CL_CODIGO")}"$)
|
|
|
|
cmd.Initialize
|
|
cmd.Name = "guardaClientesNuevosMods_MARDS"
|
|
cmd.Parameters = Array As Object(Subs.traeUsuarioDeBD, Subs.traeAlmacen, Subs.traeAlmacen, c.GetString("CAT_CL_RUTA"), Subs.traeCliente, c.GetString("CAMPOS_MODIFICADOS"))
|
|
Log($"${Subs.traeUsuarioDeBD}, ${Subs.traeAlmacen}, ${Subs.traeAlmacen}, ${c.GetString("CAT_CL_RUTA")}, ${Subs.traeCliente}, ${c.GetString("CAMPOS_MODIFICADOS")}"$)
|
|
reqManager.ExecuteCommand(cmd , $"guardaClientesNuevosMods_${c.GetString("CAT_CL_CODIGO")}"$)
|
|
|
|
cmd.Initialize
|
|
cmd.Name = "guardaClienteGeocerca4_MARDS"
|
|
cmd.Parameters = Array As Object(c.GetString("CAT_CL_CODIGO"), sDateP, Subs.traeUsuarioDeBD, c.GetString("CAT_CL_LAT"), c.GetString("CAT_CL_LONG"), Subs.traeRuta, Subs.traeAlmacen, c.GetString("LAT_CENSADOR"), c.GetString("LON_CENSADOR"), "CLIENTE NUEVO CENSOS", c.GetString("CAT_CL_ESTATUS"), cuestionarioTexto, c.GetString("CAT_CL_DIASEMANA"), c.GetString("CAT_CL_SECUENCIA"), c.GetString("CAT_CL_CALLE1"))
|
|
LogColor($"${c.GetString("CAT_CL_CODIGO")}, ${sDateP}, ${Subs.traeUsuarioDeBD}, ${c.GetString("CAT_CL_LAT")}, ${c.GetString("CAT_CL_LONG")}, ${Subs.traeRuta}, ${Subs.traeAlmacen}, ${c.GetString("LAT_CENSADOR")}, ${c.GetString("LON_CENSADOR")}, "CLIENTE NUEVO CENSOS", ${c.GetString("CAT_CL_ESTATUS")}, ${cuestionarioTexto}, ${c.GetString("CAT_CL_DIASEMANA")}, ${c.GetString("CAT_CL_SECUENCIA")}, ${c.GetString("CAT_CL_CALLE1")}"$, Colors.magenta)
|
|
reqManager.ExecuteCommand(cmd, $"guaradClienteGeocerca_${c.GetString("CAT_CL_CODIGO")}"$)
|
|
' End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub cb_giro_SelectedIndexChanged (Index As Int)
|
|
elGiro = cb_giro.SelectedItem
|
|
camposModificados.Add("CAT_CL_GIRO")
|
|
End Sub
|
|
|
|
Private Sub et_nombre_TextChanged (Old As String, New As String)
|
|
camposModificados.Add("CAT_CL_NOMBRE")
|
|
End Sub
|
|
|
|
Private Sub et_direccion_TextChanged (Old As String, New As String)
|
|
camposModificados.Add("CAT_CL_CALLE1")
|
|
End Sub
|
|
|
|
Sub q_preguntaContestada(m As Map)
|
|
' Recibimos el id de la pregunta, el id de la respuesta, el texto de la respuesta y el objeto del panelSombra para poder ocultarlo.
|
|
Log(m)
|
|
Log($">>>>>>> PREGUNTA ${m.Get("idPregunta")}"$)
|
|
' If q.IsInitialized Then Log($"${q.encuestaIniciada}|${q.preguntaActual}"$)
|
|
' m.Get("panel").As(Panel).Visible = False 'Ocultamos el panel de la pregunta.
|
|
m.Get("panel").As(Panel).RemoveView 'Quitamos le panel de la pregunta
|
|
DateTime.DateFormat = "dd/MM/yyyy"
|
|
DateTime.TimeFormat = "HH:mm:ss"
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"delete from CUESTIONARIO where Q_IDCLIENTE = '${Subs.traeCliente}' and Q_IDPREGUNTA = '${m.Get("idPregunta")}'"$)
|
|
B4XPages.MainPage.skmt.ExecNonQuery($"insert into CUESTIONARIO (Q_RUTA, Q_ALMACEN, Q_IDCLIENTE, Q_IDPREGUNTA, Q_PREGUNTA, Q_IDRESPUESTA, Q_RESPUESTA, Q_FECHA) values ('${Subs.traeRuta}', '${Subs.traeAlmacen}', '${Subs.traeCliente}', '${m.Get("idPregunta")}', '${m.Get("pregunta")}', '${m.Get("idRespuesta")}', '${m.Get("respuesta")}', '${DateTime.Date(DateTime.now)} ${DateTime.time(DateTime.now)}')"$)
|
|
Select Case m.Get("idPregunta")
|
|
Case "1"
|
|
If m.Get("respuesta") = "No, está enrejado o no se tiene acceso" Then
|
|
Log("Tiendajon / Ventana / Kiosko")
|
|
ToastMessageShow("Tiendajon / Ventana / Kiosko", False)
|
|
q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No"))
|
|
Else if m.Get("respuesta") = "Si se pude acceder" Then
|
|
q.agregaPregunta("2", "¿Tiene al menos 2 pasillos con acceso directo a la mercancía?", Array As String("Si tiene al menos 2 pasillos con acceso directo a la mercancía", "No tiene pasillos o solo uno central"))
|
|
End If
|
|
Case "2"
|
|
If m.Get("respuesta") = "Si tiene al menos 2 pasillos con acceso directo a la mercancía" Then
|
|
Log("Mini-Super")
|
|
ToastMessageShow("Mini-Super", False)
|
|
q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No"))
|
|
else If m.Get("respuesta") = "No tiene pasillos o solo uno central" Then
|
|
q.agregaPregunta("3", "¿Cuenta con enfriador horizontal para venta de perecederos como queso, jamon, crema, etc.?", Array As String("Si", "No tiene enfriador horizontal."))
|
|
End If
|
|
Case "3"
|
|
Log("|"&m.Get("respuesta")&"|")
|
|
If m.Get("respuesta") = "Si" Then
|
|
Log("Miscelanea")
|
|
ToastMessageShow("Miscelanea", False)
|
|
q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No"))
|
|
else If m.Get("respuesta") = "No tiene enfriador horizontal." Then
|
|
q.agregaPregunta("4", "¿El local esta enfocado a venta especializada?", Array As String("No", "Si"))
|
|
End If
|
|
Case "4"
|
|
If m.Get("respuesta") = "No" Then
|
|
Log("Abarrotera")
|
|
ToastMessageShow("Abarrotera", False)
|
|
q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No"))
|
|
else If m.Get("respuesta") = "Si" Then
|
|
q.agregaPregunta("5", "¿Cual venta especializada?", Array As String("Carnicería / Pollería", "Cremería", "Depósito / Vinateria", "Dulcería", "Farmacia", "Fonda / Restaurante / Cafetería", "Verdulería"))
|
|
End If
|
|
Case "5"
|
|
Log(m.Get("respuesta"))
|
|
ToastMessageShow(m.Get("respuesta"), False)
|
|
' If m.Get("respuesta") = "No" Then
|
|
' Log("Abarrotera")
|
|
' q.agregaPregunta("5", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No"))
|
|
' else If m.Get("respuesta") = "Si" Then
|
|
q.agregaPregunta("6", "¿Cuenta con caja de salida para cobro con sistema de computo?", Array As String("Si, tiene sistema de computo para cobro", "No"))
|
|
' End If
|
|
Case "6"
|
|
Log(m.Get("respuesta"))
|
|
ToastMessageShow(m.Get("respuesta"), False)
|
|
Log(">>>>>>>>>> " & q.encuestaIniciada)
|
|
q.encuestaIniciada = False
|
|
Log(">>>>>>>>>> " & q.encuestaIniciada)
|
|
' Case 6
|
|
End Select
|
|
End Sub
|
|
|
|
'Ajusta el tamaño del panel de scroll.
|
|
Sub ajustaTamano
|
|
' Log("xx: " & sv_clientesDatos.Panel.Height)
|
|
' Log($"${b_guardaCambios.Top} + 350"$)
|
|
If l_cuestionario.Visible Then
|
|
' Log("visible")
|
|
p_botones.Top = l_cuestionario.Top + l_cuestionario.Height + 20
|
|
Else
|
|
' Log("INVisible")
|
|
p_botones.Top = b_ubicacion.Top + b_ubicacion.Height + 20
|
|
End If
|
|
p_nuevoCliente.Height = p_botones.Top + 350
|
|
sv_nuevoClienteDatos.Panel.Height = p_nuevoCliente.Height
|
|
' Log("xx: " & sv_clientesDatos.Panel.Height)
|
|
End Sub |