private async void ActualizarEstadoPedidoHCG(string estado) { _mensaje = "Ha ocurrido un error mientras se actualizaba el estado."; try { var estadoPrimeraMayus = char.ToUpper(estado[0]) + estado.Substring(1); foreach (CellEntry celda in _celdas.Entries) { if (celda.Row != _pedido.FilaPlanillaCalculo) { continue; } if (celda.Column == 7 || celda.Column == 8) { celda.InputValue = celda.Column == 7 ? estadoPrimeraMayus : CuentaUsuario.ObtenerNombreUsuarioGoogle() ?? "-"; celda.Update(); } } } catch (Exception) { // Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }
private async void ObtenerDatosClientesDesdeHCG() { try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { var linkHojaClientes = CuentaUsuario.ObtenerLinkHojaClientes(); _clientes = ObtenerListado(linkHojaClientes); var linkHojaProductos = CuentaUsuario.ObtenerLinkHojaPorNombre("Productos App"); _productos = ObtenerListado(linkHojaProductos); ConstruirVista(); } else { // Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token. var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { // Remueve el Indicador de Actividad. IsBusy = false; } }
private async Task TareaGuardarPedido(Picker comboCliente) { try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { GuardarPedidoHojaDeCalculoGoogle(comboCliente); } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } }
private async Task ObtenerYConfigurarHojas(string linkLibro) { try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { _listaHojas = new ServiciosGoogle().ObtenerListaHojas(linkLibro, _servicio); ConfigurarHojas(); } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } }
private async void IrPaginaAutenticacion() { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); }
private async void ObtenerDatosMovimientosDesdeHCG() { try { ContenedorMovimientos.Children.Add(_indicadorActividad); IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { var linkHistoricosCeldas = CuentaUsuario.ObtenerLinkHojaHistoricosCeldas(CuentaUsuario.ObtenerLinkHojaConsulta()); _celdas = _servicioGoogle.ObtenerCeldasDeUnaHoja(linkHistoricosCeldas, _servicio); } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } _nombresColumnas = new string[_celdas.ColCount.Count]; var movimientos = new List <string[]>(); var movimiento = new string[_celdas.ColCount.Count]; foreach (CellEntry celda in _celdas.Entries) { if (celda.Row != 1) { if (celda.Column == 1) { movimiento = new string[_celdas.ColCount.Count]; } movimiento.SetValue(celda.Value, (int)celda.Column - 1); if (celda.Column == _celdas.ColCount.Count) { movimientos.Add(movimiento); } } else { _nombresColumnas.SetValue(celda.Value, (int)celda.Column - 1); } } LlenarGrillaDeMovimientos(movimientos); }
private async void ObtenerDatosPedidosDesdeHCG() { try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { var linkHojaPedidos = CuentaUsuario.ObtenerLinkHojaPedidos();; _celdas = _servicioGoogle.ObtenerCeldasDeUnaHoja(linkHojaPedidos, _servicio); var pedidos = new List <string[]>(); var pedido = new string[_celdas.ColCount.Count]; foreach (CellEntry celda in _celdas.Entries) { if (celda.Row != 1) { if (celda.Column == 1) { pedido = new string[_celdas.ColCount.Count]; } pedido.SetValue(celda.Value, (int)celda.Column - 1); if (celda.Column == _celdas.ColCount.Count) { pedidos.Add(pedido); } } } LlenarGrillaDePedidos(pedidos); } else { // Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token. var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { // Remueve el Indicador de Actividad. IsBusy = false; } }
private async void EnviarPaginaSeleccionColumnas(string linkHoja) { if (!CuentaUsuario.ValidarTokenDeGoogle()) { var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } CuentaUsuario.AlmacenarLinkHojaPuntosVentaDeHoja(CuentaUsuario.ObtenerLinkHojaConsulta(), linkHoja); ContentPage pagina = new SeleccionColumnasParaVer(_servicio); await Navigation.PushAsync(pagina, true); }
private async void RefrescarLugCompVtas_RelacionInsProd() { if (CuentaUsuario.ValidarTokenDeGoogle()) { new LugaresCompraVenta().ObtenerActualizarLugares(_linkHojaConsulta, _servicio); new RelacionesInsumoProducto().ObtenerActualizarRelaciones(_linkHojaConsulta, _servicio); } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }
private async void ObtenerColumnas() { try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { _linkHojaConsulta = CuentaUsuario.ObtenerLinkHojaConsulta(); if (_celdas == null || _celdas.RowCount.Count == 0) { _celdas = new ServiciosGoogle().ObtenerCeldasDeUnaHoja(_linkHojaConsulta, _servicio); } } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } _columnas = new List <CellEntry>(); //Columnas para listar en pantalla, si hay una de nombre Usuario - Movimiento se quita. foreach (CellEntry celda in _celdas.Entries) { if (celda.Row == 1) { _columnas.Add(celda); } else { break; } } // El arreglo de columnas para ver, todas con valor inicial en 1 _listaColumnas = Enumerable.Repeat(1, _columnas.Count).ToArray(); LlenarGrillaColumnasParaVer(_columnas); }
private async Task GuardarProductoHojaDeCalculoGoogle() { _mensaje = "Ha ocurrido un error mientras se guardaba el movimiento."; var servicioGoogle = new ServiciosGoogle(); var grabo = false; foreach (var celda in _producto) { if (_listaColumnasInventario[(int)celda.Column - 1] == "1") { var multiplicador = _signoPositivo[(int)celda.Column - 1] ? 1 : -1; var cantidad = _cantidades[(int)celda.Column - 1]; var precio = _precios[(int)celda.Column - 1]; var lugar = _listaLugares != null ? _lugares[(int)celda.Column - 1] : "No tiene configurado."; if (cantidad != 0) { try { // Si no hay lugares no hay campo de PrecioTotal, entonces el precio lo toma de la cantidad if (_listaLugares == null) { precio = multiplicador * cantidad; } //Ingresa el movimiento de existencia (entrada - salida) en la tabla principal servicioGoogle.EnviarMovimiento(_servicio, celda, multiplicador * cantidad, precio, lugar, _comentario, _producto, _nombresColumnas, _listaColumnasInventario, CuentaUsuario.ObtenerLinkHojaHistoricos()); //Si es página principal y tiene las relaciones insumos - productos, ingresa los movimientos de insumos if (multiplicador == 1) //Si es ingreso positivo { servicioGoogle.InsertarMovimientosRelaciones(_servicio, cantidad, _producto); } grabo = true; } catch (Exception) { // Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } } } } _mensaje = grabo ? "El movimiento ha sido guardado correctamente." : "No se han registrado movimientos."; }
private async Task TareaActualizarEstado(string estado, bool descontarStock) { ContenedorProducto.Children.Clear(); ContenedorProducto.Children.Add(_indicadorActividad); try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { if (CuentaUsuario.ObtenerAccesoDatos() == "G") { ActualizarEstadoPedidoHCG(estado); if (descontarStock) { ActualizarInventario(); } } else { ActualizarEstadoPedidoBD(); } _mensaje = estado == "finalizado" ? "Los cambios han sido registrados correctamente." : "El pedido ha sido cancelado."; } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } }
private async void ObtenerDatosConstruirGrafica() { PlotView grafica = null; try { ContenedorMovimientos.Children.Add(_indicadorActividad); IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { // Recupera el caché desde CuentaUsuario var listaMovimientos = CuentaUsuario.ListaMovimientos ?? ObtenerDatosDesdeHG(); // Almacena en caché // Se purga cada vez que insertamos un movimiento (ServiciosGoogle: EnviarMovimiento - InsertarMovimientosRelaciones) CuentaUsuario.ListaMovimientos = listaMovimientos; grafica = ConstruirGrafica(listaMovimientos); } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } if (grafica != null) { ContenedorMovimientos.Children.Clear(); ContenedorMovimientos.Children.Add(grafica); } }
private async void GuardarPedidoHojaDeCalculoGoogle(Picker comboCliente) { _mensaje = "Ha ocurrido un error mientras se guardaba el pedido."; var servicioGoogle = new ServiciosGoogle(); var grabo = false; var idCliente = _clientes[comboCliente.SelectedIndex][0]; var cliente = _clientes[comboCliente.SelectedIndex][1]; var idPedido = _listaPedidos.OrderByDescending(p => Convert.ToInt32(p.Id)).First()?.Id ?? "0"; var pedido = new Clases.Pedido() { Id = (Convert.ToInt32(idPedido) + 1).ToString(), Fecha = DateTime.Now.ToString("dd/MM/yyyy"), IdCliente = idCliente, Cliente = cliente, Detalle = _listaProducto.ToList(), FechaEntrega = DateTime.Now.ToString("dd/MM/yyyy"), Estado = "Pendiente", Usuario = CuentaUsuario.ObtenerNombreUsuarioGoogle() ?? "-", Comentario = "-", Lugar = "-" }; try { //Ingresa el pedido en la tabla servicioGoogle.InsertarPedido(_servicio, pedido); grabo = true; } catch (Exception) { // Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } _mensaje = grabo ? "El pedido ha sido guardado correctamente." : "No se ha registrado el pedido."; }
private async void CargarListaLibros() { var listaLibros = new List <ClaseLibro>(); try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { if (_listaLibros == null || _listaLibros.Count == 0) { _listaLibros = _servicioGoogle.ObtenerListaLibros(_servicio); } foreach (var datosLibro in _listaLibros) { var libro = new ClaseLibro(datosLibro.Links.FindService(GDataSpreadsheetsNameTable.WorksheetRel, null).HRef.ToString(), datosLibro.Title.Text); listaLibros.Add(libro); } } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } var vista = new ListView { RowHeight = 60, VerticalOptions = LayoutOptions.StartAndExpand, HorizontalOptions = LayoutOptions.Fill, ItemsSource = listaLibros, ItemTemplate = new DataTemplate(() => { var nombreLibro = new Label { FontSize = 18, TextColor = Color.FromHex("#1D1D1B"), VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand }; nombreLibro.SetBinding(Label.TextProperty, "Nombre"); var celda = new ViewCell { View = new StackLayout { Orientation = StackOrientation.Horizontal, Children = { nombreLibro } } }; celda.Tapped += (sender, args) => { EnviarListaHojas(((ClaseLibro)((ViewCell)sender).BindingContext).Link); celda.View.BackgroundColor = Color.Silver; }; celda.Appearing += (sender, args) => { var viewCell = (ViewCell)sender; if (viewCell.View != null) { viewCell.View.BackgroundColor = _esTeclaPar ? Color.FromHex("#EDEDED") : Color.FromHex("#E2E2E1"); } _esTeclaPar = !_esTeclaPar; }; return(celda); }) }; ContenedorLibros.Children.Clear(); ContenedorLibros.Children.Add(vista); }
private async void ObtenerDatosProductosDesdeHCG(bool refrescarLugaresRelaciones) { try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { _celdas = _servicioGoogle.ObtenerCeldasDeUnaHoja(_linkHojaConsulta, _servicio); //Refresca los lugares (compra o venta) y relaciones (insumos - productos) sólo cuando presionamos el botón de refrescar y durante la carga inicial if (refrescarLugaresRelaciones) { RefrescarLugCompVtas_RelacionInsProd(); } } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } _nombresColumnas = new string[_celdas.ColCount.Count]; var productos = new List <string[]>(); var producto = new string[_celdas.ColCount.Count]; foreach (CellEntry celda in _celdas.Entries) { if (celda.Row != 1) { if (celda.Column == 1) { producto = new string[_celdas.ColCount.Count]; } producto.SetValue(celda.Value, (int)celda.Column - 1); if (celda.Column == _celdas.ColCount.Count) { productos.Add(producto); } } else { _nombresColumnas.SetValue(celda.Value, (int)celda.Column - 1); } } LlenarGrillaDeProductos(productos); }
private async void CargarListaHojas() { try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { if (_listaHojas == null || _listaHojas.Count == 0) { _listaHojas = new ServiciosGoogle().ObtenerListaHojas(_linkLibro, _servicio); } } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } var listaHojas = new List <ClaseHoja>(); var esTeclaPar = false; foreach (var datosHoja in _listaHojas) { //Sólo lista hojas que contengan la palabra App (es el sufijo que tendrán las hojas para carga de movimientos, las otras son para cálculos y análisis). if (!datosHoja.Title.Text.Contains("App")) { continue; } var linkHoja = datosHoja.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null).HRef.ToString(); var linkHistoricos = datosHoja.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null).HRef.ToString(); var estaUsada = CuentaUsuario.VerificarHojaUsada(linkHoja); // Tiene que haber sido seleccionada alguna vez. var esHistorico = CuentaUsuario.VerificarHojaHistoricosUsada(linkHistoricos); var esPuntosVenta = CuentaUsuario.VerificarHojaPuntosVentaUsada(linkHoja); //Agrega hoja (tecla) para potencial hoja de stock. //Si ya está siendo usada le agrega ícono. //Si en cambio es hoja de Históricos le pone el ícono correspondiente. //Nunca es hoja en uso de stock y de históricos; es una, otra o ninguna. var hoja = new ClaseHoja(linkHoja, datosHoja.Title.Text, false, estaUsada, esHistorico, esPuntosVenta, esTeclaPar); listaHojas.Add(hoja); esTeclaPar = !esTeclaPar; if (!estaUsada) { continue; } //Si la hoja está siendo usada, agrega hoja (tecla) para desvincular (con ícono). hoja = new ClaseHoja(linkHoja, "Desvincular " + datosHoja.Title.Text, true, false, false, false, esTeclaPar); listaHojas.Add(hoja); esTeclaPar = !esTeclaPar; } var vista = new ListView { RowHeight = 60, VerticalOptions = LayoutOptions.StartAndExpand, HorizontalOptions = LayoutOptions.Fill, ItemsSource = listaHojas, ItemTemplate = new DataTemplate(() => { var nombreHoja = new Label { FontSize = 18, TextColor = Color.FromHex("#1D1D1B"), VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand }; nombreHoja.SetBinding(Label.TextProperty, "Nombre"); var icono = new Image { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.End, HeightRequest = App.AnchoRetratoDePantalla * .09259 }; icono.SetBinding(Image.SourceProperty, "ArchivoIcono"); icono.SetBinding(IsVisibleProperty, "TieneImagen"); var tecla = new StackLayout { Padding = 7, Orientation = StackOrientation.Horizontal, Children = { nombreHoja, icono } }; tecla.SetBinding(BackgroundColorProperty, "ColorFondo"); var celda = new ViewCell { View = tecla }; celda.Tapped += (sender, args) => { var hoja = (ClaseHoja)((ViewCell)sender).BindingContext; EnviarPagina(hoja.Link, hoja.Nombre, hoja.Desvincular); celda.View.BackgroundColor = Color.Silver; }; return(celda); }) }; ContenedorHojas.Children.Clear(); ContenedorHojas.Children.Add(vista); }
private async Task TareaGuardarCambios() { foreach (var stackLayout in ContenedorProducto.Children) { foreach (var control in ((StackLayout)stackLayout).Children) { int columna; string valor; if (control.StyleId != null && control.StyleId.Contains("movimiento-")) { columna = Convert.ToInt32(control.StyleId.Split('-')[1]); valor = ((Entry)control).Text; valor = !string.IsNullOrEmpty(valor) ? valor.Replace('.', ',') : "0"; //Todos los decimales con coma, evita problema de cultura. _cantidades.SetValue(Convert.ToDouble(valor), columna); } if (control.StyleId != null && control.StyleId.Contains("precio-")) { columna = Convert.ToInt32(control.StyleId.Split('-')[1]); valor = ((Entry)control).Text; valor = !string.IsNullOrEmpty(valor) ? valor.Replace('.', ',') : "0"; //Todos los decimales con coma, evita problema de cultura. _precios.SetValue(Convert.ToDouble(valor), columna); } if (_listaLugares != null && control.StyleId != null && control.StyleId.Contains("punto-")) { columna = Convert.ToInt32(control.StyleId.Split('-')[1]); var combo = (Picker)control; valor = combo.SelectedIndex != -1 ? combo.Items[combo.SelectedIndex] : "-"; _lugares.SetValue(valor, columna); } if (control.StyleId != null && control.StyleId.Contains("comentario")) { valor = ((Editor)control).Text; _comentario = valor; } } } ContenedorProducto.Children.Clear(); ContenedorProducto.Children.Add(_indicadorActividad); try { IsBusy = true; await Task.Run(async() => { if (_esGoogle) { if (CuentaUsuario.ValidarTokenDeGoogle()) { await GuardarProductoHojaDeCalculoGoogle(); } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } } else { GuardarProductoBaseDeDatos(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } }
private void ConectarGoogle(object sender, EventArgs args) { var paginaAuntenticacion = new PaginaAuntenticacion(); Navigation.PushAsync(paginaAuntenticacion, true); }