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