B4A=true Group=Default Group ModulesStructureVersion=1 Type=Class Version=11.5 @EndOfDesignText@ Sub MODS 'ignore 'V3.04.10 - Se agregó código para el registro de abonos, en B4XMainPage se genera la tabla y aquí se agregó el panel p_abonos para ralizar el abono, y el codigo en el sub "mandaPendientes" para cambiar la bandera de enviado en el abono. End Sub Sub Class_Globals Private Root As B4XView 'ignore Dim rp As RuntimePermissions Private xui As XUI 'ignore Private p_cliente As Panel Dim reqManager As DBRequestManager Dim cmd As DBCommand Dim ime As IME Dim g As GPS Dim ruta As String Dim skmt As SQL Dim clie_id As String Dim sDate,sTime As String Dim usuario As String Dim total_cliente As String Dim m_lat, m_lon As String ' Dim btAdmin As BluetoothAdmin Dim cmp20 As Serial Dim printer As TextWriter Dim PairedDevices As Map Dim L As List Dim TAMANO As Int Dim ESPACIO As Int Dim BLANCO As String Dim cuenta As String Dim tipo_venta As String = "PREVENTA" Dim MAC_IMPRESORA As String Dim c As Cursor Dim s As Cursor Dim DD As Cursor Dim c2 As Cursor Dim ListView1 As ListView Dim la_cuenta As Label Dim La_nombre As Label Dim la_Calle As Label Dim la_numero As Label Dim la_nint As Label Dim la_edo As Label Dim la_pob As Label Dim la_col As Label Dim la_cp As Label Dim la_zona As Label Dim gest As Button Dim la_saldotot As Label Dim la_saldooper As Label Dim Tels As Button Dim Label10 As Label Dim Label11 As Label Dim Tar As Button Dim la_comm As Label Dim la_actdte As Label Dim la_usuario As Label Dim la_resultado As Label Dim l_entre1 As Label Dim l_entre2 As Label Dim l_atiende As Label Dim l_atiende2 As Label Dim DATOS As Button Dim NUEVO As Button ' Dim lat_gps, lon_gps As String Dim l_total As Label Dim c2 As Cursor Dim S2 As Cursor Private s As Cursor Dim res As String Private HIST As Button Private MONTO_COMPRA As String Private META As String Private META2 As String Private VERIFICA As String Private L_QR As Label Private BT_QR As Button Dim CODIGO As String Private b_mapa As Button Dim CUANTOS As String Private B_IMP As Button Dim Toggla As Toggle Dim tgl As Toggle Private Panel1 As Panel Private I_COMPRA As EditText Private b_venta As Button Dim ALMACEN As String Private LA_GPS As Label Private B_E_NEXT As Button Private E_RES_E As EditText Private t_tenc As Label Private Panel2 As Panel Private CONTADOR_E As String Private HR_RES1 As String Private HR_RES2 As String Private HR_RES3 As String Private EXISTE As String Private TELEFONO As String Private RB1, RB2, RB3, RB4, RB5 As RadioButton Private stay_hh, stay_mi, stay_ss As String Dim result As Int Private LA_RUTA As String Private b_like As Button Private B_GPS As Button Dim CODIGO As String Private cb_factura As CheckBox Private p_cbFactura As Panel Dim venimosDeTicketsDia As Boolean = False Private p_abono As Panel Private et_abono As EditText Private b_abono As Button Private b_cancelar As Button Private b_abono1 As Button Private E_NOMBRE_C As EditText Private et_direccion As EditText Private E_ENTRE1 As EditText Private E_ENTRE_2 As EditText Private CH_ACTIVO As CheckBox Private CLIENTE_ACTIVO As String Private et_cp As EditText Private et_colonia As EditText Private lv_colonia As ListView Private et_estado As EditText Private et_municipio As EditText Dim desdeBD As Boolean Private b_guardaCambios As Button Private l_secuencia As Label Private l_ruta As Label Private et_diaSemana As EditText ' Private et_giro As EditText Private lv_diaSemana As ListView Private et_calle As EditText Private et_NoExt As EditText Private et_NoInt As EditText Private l_cp As Label Private l_lon As Label Private l_lat As Label Private b_actCoords As Button Private estatus As String Private cb_activo As B4XComboBox Private et_atiende As EditText Private cb_giro As B4XComboBox Dim refrescarCliente As Boolean = False Dim Timer2 As Timer Dim Interval As Int = 300 Dim turnoColor As Int = 1 Dim cd As ColorDrawable Dim camposModificados As List Dim mandarTodo As Boolean = False Private sv_clientesDatos As ScrollView ' Private bAceptarPregunta As Button ' Dim encuestaIniciada As Boolean = False Dim q As C_Cuestionario Dim su As StringUtils Dim clienteAnt As String = "" Private l_cuestionario As Label Private b_mapa2 As Button Private l_tituloCuestionaro As Label Private cb_diaSemana As B4XComboBox Dim diasDeLaSemana As List = Array As String("LUNES", "MARTES", "MIERCOLES", "JUEVES", "VIERNES", "SABADO") Private et_telefono As EditText Private et_email As EditText 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) Log("Entramos a clientes create") Root = Root1 'load the layout to Root ' Activity.RemoveAllViews Root.LoadLayout("cliente") 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) ' btAdmin.Initialize("BlueTeeth") ' cmp20.Initialize("Printer") m_lat = 0 m_lon = 0 reqManager.Initialize(Me, Starter.server) sv_clientesDatos.Width = Root.Width sv_clientesDatos.Height = Root.Height sv_clientesDatos.Panel.LoadLayout("clienteDatos") Subs.centraBoton(b_guardaCambios, p_cliente.Width) If l_cuestionario.Visible Then b_guardaCambios.Top = l_cuestionario.Top + l_cuestionario.Height + 20dip Else b_guardaCambios.Top = l_cuestionario.Top + 20dip End If Log("terminamos create") camposModificados.Initialize q.Initialize(Me, "q", Root, 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(Starter.rp.PERMISSION_CAMERA) Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean) sv_clientesDatos.Panel.Height = p_cliente.Height l_cuestionario.Visible = False l_tituloCuestionaro.Visible = False reqManager.Initialize(Me, Starter.server) lv_colonia.Visible = False Timer2.Initialize("Timer2", Interval * 1) Timer2.Enabled = True b_guardaCambios.Enabled = False b_guardaCambios.Text = "Buscando Ubicación" If Not(Starter.gps.GPSEnabled) Then ToastMessageShow("Es necesario tener el GPS encendido", True) StartActivity(Starter.gps.LocationSettingsIntent) End If CallSubDelayed(Tracker, "StartFLPSmall") If refrescarCliente Then LogColor("Cargamos cliente de BD", Colors.Magenta) skmt.Initialize(ruta,"kmt.db", True) c = B4XPages.MainPage.skmt.ExecQuery("select * from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") If c.RowCount > 0 Then c.Position=0 la_cuenta.Text = c.GetString("CAT_CL_CODIGO") l_ruta.Text = c.GetString("CAT_CL_RUTA") ' et_giro.Text = c.GetString("CAT_CL_GIRO") et_diaSemana.Text = c.GetString("CAT_CL_DIASEMANA") l_secuencia.text = c.GetString("CAT_CL_SECUENCIA") la_cuenta.Text = c.GetString("CAT_CL_CODIGO") E_NOMBRE_C.TEXT = c.GetString("CAT_CL_NOMBRE") et_direccion.Text = c.GetString("CAT_CL_CALLE1") et_colonia.Text = "" et_colonia.Text = c.GetString("CAT_CL_COLONIA") et_telefono.Text = c.GetString("CAT_CL_TELEFONO") et_email.Text = c.GetString("CAT_CL_EMAIL") et_estado.Text = c.GetString("CAT_CL_EDO") et_municipio.Text = c.GetString("CAT_CL_MUNI") desdeBD = True et_cp.Text = c.GetString("CAT_CL_CP") et_calle.Text = c.GetString("CAT_CL_CALLE") et_NoExt.Text = c.GetString("CAT_CL_NOEXT") et_NoInt.Text = c.GetString("CAT_CL_NOINT") estatus = c.GetString("CAT_CL_ESTATUS") If estatus = Null Then estatus = "" cb_activo.Tag = estatus E_ENTRE1.Text = "" E_ENTRE_2.Text = "" et_atiende.Text = "" If c.GetString("CAT_CL_CRUCE1") <> Null Then E_ENTRE1.Text = c.GetString("CAT_CL_CRUCE1") If c.GetString("CAT_CL_CALLE2") <> Null Then E_ENTRE_2.Text = c.GetString("CAT_CL_CALLE2") If c.GetString("CAT_CL_ATIENDE1") <> Null Then et_atiende.Text = c.GetString("CAT_CL_ATIENDE1") m_lat = "0" If c.GetString("CAT_CL_LAT") <> "" Then m_lat = c.GetString("CAT_CL_LAT") If m_lat.Length < 5 Then m_lat = "0" m_lon = "0" If c.GetString("CAT_CL_LONG") <> "" Then m_lon = c.GetString("CAT_CL_LONG") If m_lon.Length < 5 Then m_lon = "0" l_lat.Text = m_lat l_lon.Text = m_lon End If Private cuest As Cursor = skmt.ExecQuery($"select * from cuestionario where Q_IDCLIENTE = '${Subs.traeCliente}'"$) If cuest.RowCount > 0 Then 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 End If l_cuestionario.Height = su.MeasureMultilineTextHeight(l_cuestionario, l_cuestionario.Text) ajustaTamano ' Tracker.FLP.Connect If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude ' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) ' GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) End If desdeBD = False Dim itemsAct As List itemsAct.Initialize itemsAct.Add("Activo") itemsAct.Add("Inactivo") ' itemsAct.Add("Cerrado Permanente") cb_activo.SetItems(itemsAct) ' Log(estatus) If estatus = "Activo" Then cb_activo.SelectedIndex = 0 CLIENTE_ACTIVO = "Activo" Else If estatus = "Inactivo" Then cb_activo.SelectedIndex = 1 CLIENTE_ACTIVO = "Inactivo" Else cb_activo.SelectedIndex = 1 'Antes 2 para "Cerrado Permanente" CLIENTE_ACTIVO = "Inactivo" 'Antes "Cerrado Permanente" End If Dim losGiros As List = Subs.traeGirosLista cb_giro.SetItems(losGiros) cb_giro.SelectedIndex = losGiros.IndexOf(c.GetString("CAT_CL_GIRO").As(String).ToUpperCase) cb_giro.mBase.Width = et_diaSemana.Width cb_diaSemana.SetItems(diasDeLaSemana) cb_diaSemana.SelectedIndex = diasDeLaSemana.IndexOf(c.GetString("CAT_CL_DIASEMANA")) ' Log("|"&c.GetString("CAT_CL_GIRO")&"|") c.Close camposModificados.Clear End If refrescarCliente = False 'Revisamos si el cliente actual es diferente del anterior y si es diferente ponemos encuestaIniciada en VERDADERO. If clienteAnt <> Subs.traeCliente Then q.encuestaIniciada = False clienteAnt = Subs.traeCliente ' Log("CON ENCUESTA: " & q.clienteConCuestionario(Subs.traeCliente)) ' Log("INICIADA: " & q.encuestaIniciada) l_cuestionario.Height = su.MeasureMultilineTextHeight(l_cuestionario, l_cuestionario.Text) ajustaTamano If Not(q.encuestaIniciada) And Not(q.clienteConCuestionario(Subs.traeCliente)) 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")) End Sub Private Sub Timer2_Tick ' Log(turnoColor) If turnoColor = 1 Then cd.Initialize(Colors.RGB(125, 125, 125), 5dip) '210, 132, 79 '210, 105, 30 '125, 125, 125 b_guardaCambios.Background = cd turnoColor = 0 Else cd.Initialize(Colors.RGB(87, 87, 87), 5dip) '210, 132, 79 '210, 105, 30 '125, 125, 125 b_guardaCambios.Background = cd turnoColor = 1 End If End Sub Sub GPS_LocationChanged (Location1 As Location) ' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red) ' Log($"${Tracker.FLP.GetLastKnownLocation.Latitude}, ${Tracker.FLP.GetLastKnownLocation.Longitude}"$) If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude ' Log("Coords set to: " & B4XPages.MainPage.lat_gps & " and " & B4XPages.MainPage.lon_gps) End If Dim l1, l2 As Location l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps) ' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$) l2.Initialize2(m_lat, m_lon) ' Log($"${Location1.Latitude}, ${Location1.Longitude} - ${Tracker.FLP.GetLastKnownLocation.Latitude}, ${Tracker.FLP.GetLastKnownLocation.Longitude}"$) 'now we need the distance between our location and the target location ' Dim distance As Long ' distance = l1.DistanceTo(l2) 'the result is in meter B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS") B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & " " & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) CallSubDelayed(Tracker, "CreateLocationRequest") b_guardaCambios.Text = "Guardar" b_guardaCambios.Enabled = True Timer2.Enabled = False b_guardaCambios.Color = Colors.RGB(210, 105, 30) '210, 132, 79 '210, 105, 30 End Sub Private Sub B4XPage_CloseRequest As ResumableSub ' Log(">>>>> MODIFiCADOS: " & camposModificados) If camposModificados.Size > 0 Then res = Msgbox2("Hay campos modificados que no se han guardado, estas seguro que desas salir?", "AVISO", "Salir sin guardar", "Regresar", "", Null) 'ignore If res = DialogResponse.POSITIVE Then Log("POSITIVO") Return True Else Log("NEGATIVO") Return False End If End If ' BACK key pressed q.encuestaIniciada = False q.ocultPanelPregunta If q.panelSombra.IsInitialized Then Log(1) q.panelSombra.Visible = False End If ' Return True To close, False To cancel CallSubDelayed(Tracker, "StartFLP") If Starter.dondeestoy = "1" Then StartActivity(MAPA_RUTAS) Else Log("AQUI") B4XPages.ShowPage("Principal") End If ' Return True Return False End Sub Private Sub b_guardaCambios_Click ' dd/mm/yyyy hh24:mi:ss DateTime.DateFormat = "dd/MM/yyyy HH:mm:ss" sDate=DateTime.Date(DateTime.Now) camposModificados = Subs.RemoveDuplicates(camposModificados) Log(camposModificados) If CLIENTE_ACTIVO = "Inactivo" Or CLIENTE_ACTIVO = "Cerrado Permanente" Then l_secuencia.Text = "0" ' If CLIENTE_ACTIVO = "Cerrado Permanente" Then CLIENTE_ACTIVO = "Cerrado permanente confirmado" B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE kmt_info set CAT_CL_CODIGO = '${la_cuenta.text}', CAT_CL_CEDIS = '${Subs.traeAlmacen}', CAT_CL_LAT = '${l_lat.text}', CAT_CL_LONG = '${l_lon.text}', CAT_CL_SECUENCIA = '${l_secuencia.text}', CAT_CL_RUTA = '${l_ruta.text}', CAT_CL_DIASEMANA = '${cb_diaSemana.SelectedItem}', CAT_CL_GIRO = '${cb_giro.SelectedItem}', CAT_CL_NOMBRE = '${Subs.escapeSQLString(E_NOMBRE_C.text)}', CAT_CL_ATIENDE1 = '${et_atiende.text}', CAT_CL_CALLE = '${Subs.escapeSQLString(et_calle.text)}', CAT_CL_NOINT = '${et_NoInt.text}', CAT_CL_NOEXT = '${et_NoExt.text}', CAT_CL_CALLE1 = '${Subs.escapeSQLString(et_direccion.text)}', CAT_CL_CRUCE1 = '${E_ENTRE1.text}', CAT_CL_CALLE2 = '${E_ENTRE_2.text}', CAT_CL_CP = '${et_cp.text}', CAT_CL_COLONIA = '${et_colonia.text}', CAT_CL_MUNI = '${et_municipio.text}', CAT_CL_EDO = '${et_estado.text}', CAT_CL_ESTATUS = '${CLIENTE_ACTIVO}', gestion = 11, CAT_CL_FECHA_CAPTURA = '${sDate & " " & sTime}', CAT_CL_ENVIO_PENDIENTE = 1, LAT_CENSADOR = '${B4XPages.MainPage.lat_gps}', LON_CENSADOR = '${B4XPages.MainPage.lon_gps}', ESTATUS_ORIGINAL = '${cb_activo.tag}', CAT_CL_TELEFONO = '${et_telefono.Text}', CAT_CL_EMAIL = '${et_email.Text}', CAT_CL_EMAIL = '${et_email.Text}', CAMPOS_MODIFICADOS = '${Subs.list2string(camposModificados)}' where CAT_CL_CODIGO In (select cuenta from cuentaa)"$) Log($"CAT_CL_CODIGO = '${la_cuenta.text}', CAT_CL_CEDIS = '${Subs.traeAlmacen}', CAT_CL_LAT = '${l_lat.text}', CAT_CL_LONG = '${l_lon.text}', CAT_CL_SECUENCIA = '${l_secuencia.text}', CAT_CL_RUTA = '${l_ruta.text}', CAT_CL_DIASEMANA = '${cb_diaSemana.SelectedItem}', CAT_CL_GIRO = '${cb_giro.SelectedItem}', CAT_CL_NOMBRE = '${E_NOMBRE_C.text}', CAT_CL_ATIENDE1 = '${et_atiende.text}', CAT_CL_CALLE = '${et_calle.text}', CAT_CL_NOINT = '${et_NoInt.text}', CAT_CL_NOEXT = '${et_NoExt.text}', CAT_CL_CALLE1 = '${et_direccion.text}', CAT_CL_CRUCE1 = '${E_ENTRE1.text}', CAT_CL_CALLE2 = '${E_ENTRE_2.text}', CAT_CL_CP = '${et_cp.text}', CAT_CL_COLONIA = '${et_colonia.text}', CAT_CL_MUNI = '${et_municipio.text}', CAT_CL_EDO = '${et_estado.text}', CAT_CL_ESTATUS = '${CLIENTE_ACTIVO}', gestion = 11"$) ' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE, NV_FECHA, NV_USER, NV_MOTIVO, NV_COMM, NV_LAT, NV_LON) VALUES(?,?,?,?,?,?,?) ", Array As Object (clie_id, sDate & sTime, usuario, "CENSOS", CLIENTE_ACTIVO, l_lat.text, l_lon.text)) mandaPendientes B4XPages.ShowPage("Clientes") End Sub Sub NUEVO_Click B4XPages.ShowPage("NuevoCliente") End Sub Private Sub p_cliente_Click 'Nada aqui, solo esta para que los clics no se pasen hacia atras. End Sub Sub mandaPendientes 'Enviamos Pendientes c = B4XPages.MainPage.skmt.ExecQuery("SELECT * from kmt_info where CAT_CL_ENVIO_PENDIENTE = '1'") If mandarTodo Then c = B4XPages.MainPage.skmt.ExecQuery("SELECT * from kmt_info where gestion = 11") Log($">>>>>> Cliente PENDIENTE: ${c.RowCount}"$) If c.RowCount > 0 Then For i = 0 To c.RowCount - 1 c.Position = i ' Dim fechaCaptura As String = c.GetString("CAT_CL_FECHA_CAPTURA").As(String).SubString2(0,10) Dim fechaCaptura As String = c.GetString("CAT_CL_FECHA_CAPTURA") ' Log(fechaCaptura) Dim cmd As DBCommand Dim motivo As String = "VERIFICACION DE DATOS" Dim comentario As String = c.GetString("ESTATUS_ORIGINAL") If c.GetString("CAT_CL_CODIGO").As(String).SubString2(0,1) = "N" Then motivo = "VERIFICACION CLIENTE NUEVO PREVENTA" If c.GetString("CAT_CL_CODIGO").As(String).SubString2(0,2) = "NC" Then motivo = "CLIENTE NUEVO CENSOS" If c.GetString("CAT_CL_CODIGO").As(String).SubString2(0,1) = "N" Then comentario = "" If c.GetString("CAT_CL_CODIGO").As(String).SubString2(0,2) = "NC" Then comentario = c.GetString("CAT_CL_CALLE1") Private cuestionarioTexto As String = "" 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 cmd.Initialize cmd.Name = "guardaClienteGeocerca4_MARDS" cmd.Parameters = Array As Object(c.GetString("CAT_CL_CODIGO"), fechaCaptura, Subs.traeUsuarioDeBD, c.GetString("CAT_CL_LAT"), c.GetString("CAT_CL_LONG"), Subs.traeRuta, Subs.traeAlmacen, c.GetString("LAT_CENSADOR"), c.GetString("LON_CENSADOR"), motivo, c.GetString("CAT_CL_ESTATUS"), cuestionarioTexto, c.GetString("CAT_CL_DIASEMANA"), c.GetString("CAT_CL_SECUENCIA"), c.GetString("CAT_CL_ESTATUS")) LogColor($"${c.GetString("CAT_CL_CODIGO")}, ${fechaCaptura}, ${Subs.traeUsuarioDeBD}, ${c.GetString("CAT_CL_LAT")}, ${c.GetString("CAT_CL_LONG")}, ${Subs.traeRuta}, ${Subs.traeAlmacen}, ${c.GetString("LAT_CENSADOR")}, ${c.GetString("LON_CENSADOR")}, ${motivo}, ${comentario}, ${cuestionarioTexto}"$, Colors.magenta) reqManager.ExecuteCommand(cmd, $"guaradClienteGeocerca_${c.GetString("CAT_CL_CODIGO")}"$) cmd.Initialize cmd.Name = "sp_confirmaCliente2" ' Log("******* LARGO - " & cuestionarioTexto.Length) cmd.Parameters = Array As Object(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"), Subs.escapeSQLString(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"), Subs.escapeSQLString(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, 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")}, ${Subs.escapeSQLString(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}, ${c.GetString("CAT_CL_TELEFONO")}, ${c.GetString("CAT_CL_EMAIL")}, ${cuestionarioTexto}"$) LogColor($"MANDAMOS CIENTE ${c.GetString("CAT_CL_CODIGO")}"$, Colors.Magenta) reqManager.ExecuteCommand(cmd , $"confirmaCliente_${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")}"$) Next End If End Sub Sub JobDone(Job As HttpJob) Log(Job.Success) If Job.Success = False Then ' ToastMessageShow("Error: " & Job.ErrorMessage, True) LogColor("ERROR EN: " & Job.tag, Colors.red) LogColor("Error: " & Job.ErrorMessage, Colors.red) 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 = "confirmaCliente" Then Subs.logJobDoneResultados(resultado) End If 'Modificamos la bandera de pendiente en kmt_info If resultado.Tag.As(String).IndexOf("confirmaCliente_") > -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}'"$) Subs.logJobDoneResultados(resultado) End If If resultado.Tag = "guaradClienteGeocerca" Then Subs.logJobDoneResultados(resultado) End If End If Job.Release End If End Sub Private Sub b_cancelar_Click et_abono.Text = "" p_abono.Visible = False ime.HideKeyboard End Sub Private Sub et_cp_TextChanged (Old As String, New As String) ' Log(desdeBD) camposModificados.Add("CAT_CL_CP") If Not(desdeBD) And New.Length = 5 Then Private cc As Cursor = 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 et_estado.Text = cc.GetString("ESTADO") et_municipio.Text = cc.GetString("MUNICIPIO") Next End If End If desdeBD = False End Sub Private Sub et_cp_FocusChanged (HasFocus As Boolean) et_cp_click 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_colonia_FocusChanged (HasFocus As Boolean) If HasFocus Then Private cc As Cursor = 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 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 End If End Sub Sub et_diaSemana_Click LogColor("Clic diasemana", Colors.Red) Sender.As(EditText).InputType = 524288 If Not(lv_diaSemana.Visible) Then lv_diaSemana.Visible = True Else Log("Si visible") lv_diaSemana.Visible = False End If End Sub Private Sub et_diaSemana_FocusChanged (HasFocus As Boolean) If HasFocus And lv_diaSemana.Visible = False Then ' lv_diaSemana.Visible = True lv_diaSemana.BringToFront lv_diaSemana.Clear Private label1 As Label label1 = lv_diaSemana.SingleLineLayout.Label label1.TextColor = Colors.White label1.TextSize = 14 lv_diaSemana.AddSingleLine("LUNES") lv_diaSemana.AddSingleLine("MARTES") lv_diaSemana.AddSingleLine("MIERCOLES") lv_diaSemana.AddSingleLine("JUEVES") lv_diaSemana.AddSingleLine("VIERNES") lv_diaSemana.AddSingleLine("SABADO") lv_diaSemana.Visible = True End If If Not(HasFocus) And lv_diaSemana.Visible Then lv_diaSemana.Visible = False End If End Sub Private Sub lv_diaSemana_ItemClick (Position As Int, Value As Object) lv_diaSemana.Visible = False et_diaSemana.Text = Value End Sub Sub et_giro_Click ' If lv_giro.Visible Then ' lv_giro.Visible = False ' Else ' lv_giro.Visible = True ' End If End Sub Sub et_giro_FocusChanged (HasFocus As Boolean) ' If HasFocus Then ' Sender.As(EditText).InputType = 524288 ' Private cc As Cursor = skmt.ExecQuery($"select * from cat_giros"$) ' lv_giro.Clear ' lv_giro.BringToFront ' Private label1 As Label '' label1 = lv_giro.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 ' label1.Tag = cc.GetString("id") ' lv_giro.AddSingleLine(cc.GetString("descripcion")) ' Log(cc.GetString("descripcion")) ' Next ' End If ' lv_giro.Visible = True ' Else ' lv_giro.Visible = False ' End If End Sub Private Sub lv_giro_ItemClick (Position As Int, Value As Object) ' lv_giro.Visible = False ' et_giro.Text = Value End Sub Private Sub l_cp_LongClick et_cp_TextChanged(et_cp.Text, et_cp.Text) End Sub Private Sub b_mapa2_Click B4XPages.MainPage.mapa.Latitud = l_lat.text B4XPages.MainPage.mapa.Longitud = l_lon.text B4XPages.MainPage.mapa.NOMBRE_TIENDA = E_NOMBRE_C.text ' B4XPages.MainPage.mapa.gmap.Clear B4XPages.ShowPage("mapa") End Sub Private Sub b_actCoords_Click l_lat.Text = B4XPages.MainPage.lat_gps l_lon.Text = B4XPages.MainPage.lon_gps camposModificados.Add("CAT_CL_LAT") camposModificados.Add("CAT_CL_LONG") ToastMessageShow("¡Coordenadas actualizadas!", False) End Sub Private Sub cb_activo_SelectedIndexChanged (Index As Int) If Index = 0 Then CLIENTE_ACTIVO = "Activo" else if Index = 1 Then CLIENTE_ACTIVO = "Inactivo" ' Else ' CLIENTE_ACTIVO = "Cerrado Permanente" End If Log(CLIENTE_ACTIVO) camposModificados.Add("CAT_CL_ESTATUS") End Sub Private Sub cb_giro_SelectedIndexChanged (Index As Int) camposModificados.Add("CAT_CL_GIRO") End Sub Private Sub et_atiende_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_ATIENDE1") End Sub Private Sub E_ENTRE_2_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_CALLE2") End Sub Private Sub E_ENTRE1_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_CRUCE1") End Sub Private Sub et_NoInt_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_NOINT") End Sub Private Sub et_NoExt_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_NOEXT") End Sub Private Sub et_calle_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_CALLE") End Sub Private Sub et_direccion_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_CALLE1") End Sub Private Sub et_colonia_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_COLONIA") End Sub Private Sub et_municipio_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_MUNI") End Sub Private Sub et_estado_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_EDO") End Sub Private Sub E_NOMBRE_C_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_NOMBRE") End Sub Private Sub et_diaSemana_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_DIAS_VISITA") End Sub Private Sub et_telefono_TextChanged (Old As String, New As String) camposModificados.Add("CAT_CL_TELEFONO") End Sub Private Sub cb_diaSemana_SelectedIndexChanged (Index As Int) camposModificados.Add("CAT_CL_DIAS_VISITA") 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) ' 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" skmt.ExecNonQuery($"delete from CUESTIONARIO where Q_IDCLIENTE = '${Subs.traeCliente}' and Q_IDPREGUNTA = '${m.Get("idPregunta")}'"$) 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) refrescarCliente = True ' Log($"#### REFRESCAR CLIENTE -> ${refrescarCliente}"$) B4XPage_Appear ' 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") b_guardaCambios.Top = l_cuestionario.Top + l_cuestionario.Height + 20 Else Log("INVisible") b_guardaCambios.Top = b_mapa2.Top + b_mapa2.Height + 20 End If p_cliente.Height = b_guardaCambios.Top + 350 sv_clientesDatos.Panel.Height = p_cliente.Height ' Log("xx: " & sv_clientesDatos.Panel.Height) End Sub 'Private Sub Label9_LongClick '' Log(b_guardaCambios.Top) ' If l_cuestionario.Visible Then ' l_cuestionario.Visible = False ' l_tituloCuestionaro.Visible = False '' b_guardaCambios.Top = b_mapa2.Top + b_mapa2.Height + 20 '' Log($"${b_mapa2.Top} + ${b_mapa2.Height} + 20dip"$) ' Else ' l_cuestionario.Visible = True ' l_tituloCuestionaro.Visible = True '' b_guardaCambios.Top = l_cuestionario.Top + l_cuestionario.Height + 20 '' Log($"${l_cuestionario.Top} + ${l_cuestionario.Height} + 20"$) ' End If '' Log(b_guardaCambios.Top) ' ajustaTamano 'End Sub Private Sub l_cuestionario_LongClick Log("BORRAMOS CUESTIONARIO") res = Msgbox2("Seguro que desea borrar el cuestionario para este cliente?", "ATENCIÓN", "Borrar", "Cancelar", "", Null) If res = DialogResponse.POSITIVE Then skmt.ExecNonQuery($"delete from CUESTIONARIO where Q_IDCLIENTE = '${Subs.traeCliente}'"$) B4XPage_Appear End If End Sub