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, B4XPages.MainPage.skmt)
End Sub

'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.

Sub B4XPage_Appear
	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 = ""
	sTime=DateTime.Time(DateTime.Now)
	no_cliente= "NC" & sTime & no_ruta
	B4XPages.MainPage.skmt.ExecNonQuery("delete from CUENTAA")
	B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
	Log(no_cliente)
	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
		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)")
		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_NOMBRE")
			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
	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
	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 cuest As Cursor = B4XPages.MainPage.skmt.ExecQuery($"select * from cuestionario where Q_IDCLIENTE = '${Subs.traeCliente}'"$)
		If cuest.RowCount > 0 Then
			Log("HAY CUESTIONARIO")
			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($"${q.encuestaIniciada} | ${cargarCliente}"$)
	If Not(q.encuestaIniciada) And Not(cargarCliente) Then 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"))
	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 = "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")
		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
			camposModificados = Subs.RemoveDuplicates(camposModificados)
			B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_CODIGO = '${no_cliente}', CAT_CL_CEDIS = '${Subs.traeAlmacen}', 
			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
			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) 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_atiende.Text, et_telefono.Text, et_email.Text, cb_giro.SelectedItem))
		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
	CallSubDelayed(Tracker, "StartFLP")
	If p_camara.Visible Then
		p_camara.Visible = False
	Else
		B4XPages.ShowPage("Principal")
	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 'NC%' 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 'NC%'")
	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
					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
				If 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, elGiro, Starter.dia_semana, c.GetString("CAT_CL_TELEFONO"), c.GetString("CAT_CL_EMAIL"), cuestionarioTexto)
'				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}"$)
				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")}"$)
			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 = "yyyyMMdd"
	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_IDCLIENTE, Q_IDPREGUNTA, Q_PREGUNTA, Q_IDRESPUESTA, Q_RESPUESTA, Q_FECHA) values ('${no_cliente}', '${m.Get("idPregunta")}', '${m.Get("pregunta")}', '${m.Get("idRespuesta")}', '${m.Get("respuesta")}', '${DateTime.Date(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