Ejemplo n.º 1
0
 public void InputsInit()
 {
     // Se limpia el nombre de la empresa
     Labl_Empresa.Text      = "";
     Labl_Empresa.IsVisible = false;
     // Reiniciamos los contadores
     Unidades_Pistoleadas.Text = "0";
     Unidades_Faltantes.Text   = "0";
     Total_Unidades.Text       = "0";
     // Vaciamos los inputs
     Entry_CodeBars.Text = "";
     Entry_Alto.Text     = "";
     Entry_Ancho.Text    = "";
     Entry_Largo.Text    = "";
     Entry_Peso.Text     = "";
     // Desabilitamos los campos de medidas
     Entry_Alto.IsEnabled  = false;
     Entry_Ancho.IsEnabled = false;
     Entry_Largo.IsEnabled = false;
     Entry_Peso.IsEnabled  = false;
     // Se oculta el spinner
     ActivitySpinner.IsVisible = false;
     // Posicionamos el cursor
     Entry_CodeBars.Focus();
     // Cambiamos la imagen
     image_cubic.Source = "camera_icon_gray.png";
     // Mostramos la imagen de la cámara
     image_cubic.IsVisible = true;
     // Se eliminan todas las lecturas del usuario
     App.UnidadDatabase.DeleteAllUnidades();
 }
Ejemplo n.º 2
0
 public void InputsInit()
 {
     // Vaciamos los inputs
     Entry_CodeBars.Text       = "";
     Entry_Alto.Text           = "";
     Entry_Ancho.Text          = "";
     Entry_Largo.Text          = "";
     Entry_Peso.Text           = "";
     Entry_Volumen.Text        = "";
     Entry_Unidades.Text       = "1";
     Entry_UnidadesA.Text      = "0/0";
     Checked_All_Units.Checked = false;
     // Desabilitamos los campos de medidas
     Entry_Alto.IsEnabled     = false;
     Entry_Ancho.IsEnabled    = false;
     Entry_Largo.IsEnabled    = false;
     Entry_Peso.IsEnabled     = false;
     Entry_Unidades.IsEnabled = false;
     // Posicionamos el cursor
     Entry_CodeBars.Focus();
     // Ocultamos el botón de enviar datos
     ButtonsCubicacion.IsVisible = false;
     // Reiniciamos el número de unidades
     imageCubic.Unidades = 1;
     // Cambiamos la imagen
     image_cubic.Source = "camera_icon_gray.png";
 }
Ejemplo n.º 3
0
        // Método personalizado que inicializa
        // los componentes de la página
        void InitComponents()
        {
            // Posiciona el cursor
            Entry_CodeBars.Focus();
            // Seteamos las propiedades de la página
            BackgroundColor = Constants.BackgroundColor;
            // Desactivamos el spinner de carga
            ActivitySpinner.IsVisible = false;
            // Desabilitamos todas las entradas de texto menos la primera
            Entry_Alto.IsEnabled  = false;
            Entry_Ancho.IsEnabled = false;
            Entry_Largo.IsEnabled = false;
            Entry_Peso.IsEnabled  = false;
            Entry_Peso.IsEnabled  = false;
            // Verificamos la conexión a internet
            CheckConnectivity();
            // Capturamos el evento del botón de tomar la foto
            Btn_CapturePhoto.Clicked += async(sender, args) =>
            {
                // Se inicializa el plugin
                await CrossMedia.Current.Initialize();

                // Validamos que existan los permisos necesarios
                // para poder usar la cámara del dispositivo
                var hasPermission = await Utils.Utils.CheckPermissions(Permission.Camera);

                if (!hasPermission)
                {
                    return;
                }

                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("No hay Cámara", "La Cámara del dispositivo no se encuentra disponible!", "OK");

                    return;
                }
                try
                {
                    var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                    {
                        PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium,
                        Directory = "ImagesCubic",
                        Name      = "cubic_mobile_" + Entry_CodeBars.Text + ".png"
                    });

                    if (file == null)
                    {
                        return;
                    }

                    await DisplayAlert("Ubicación del archivo: ", file.Path, "OK");
                }
                catch //(Exception ex)
                {
                    // Xamarin.Insights.Report(ex);
                    // await DisplayAlert("Uh oh", "Something went wrong, but don't worry we captured it in Xamarin Insights! Thanks.", "OK");
                }
            };
            // Al oprimir enter posiciona el cursor
            // en la siguiente entrada de texto
            Entry_CodeBars.Completed += async(s, e) =>
            {
                // Validamos que haya digitado el código de barras
                if (!String.IsNullOrWhiteSpace(Entry_CodeBars.Text))
                {
                    // Verificamos que exista conexión a internet
                    if (Constants.hasInternet)
                    {
                        // Creamos un hilo de ejecución para consumir el servicio del login
                        Device.BeginInvokeOnMainThread(async() =>
                        {
                            // Mostramos el spinner de carga
                            ActivitySpinner.IsVisible = true;
                            // Consumimos el servicio de autenticación de Solex
                            var result = await App.RestClient.GetExistsBarCode(Entry_CodeBars.Text);
                            // Verificamos que el servicio haya devuelto una respuesta
                            if (result != null)
                            {
                                if (result.IsSuccess)
                                {
                                    // Habilitamos los campos de medidas
                                    Entry_Alto.IsEnabled  = true;
                                    Entry_Ancho.IsEnabled = true;
                                    Entry_Largo.IsEnabled = true;
                                    Entry_Peso.IsEnabled  = true;
                                    // Posicionamos el cursor
                                    Entry_Alto.Focus();
                                    // Verificamos el número de unidades de la guía
                                    if (result.CodError > 1)
                                    {
                                        // Mostramos la cantidad de unidades de la guía
                                        Count_Units.Text = "La guía contiene " + result.CodError + " unidades.";
                                    }
                                    else
                                    {
                                        // Mostramos el mensaje que indica que la guía solo contiene una unidad
                                        Count_Units.Text = "La guía contiene una sola unidad.";
                                    }
                                    // Mostramos el mensaje
                                    Count_Units.IsVisible = true;
                                }
                                else
                                {
                                    // Mostramos el error de Solex
                                    await DisplayAlert("Respuesta de Solex", result.Error, "OK");
                                    // Limpiamos la caja de texto
                                    Entry_CodeBars.Text = "";
                                    // Posicionamos el cursor
                                    Entry_CodeBars.Focus();
                                }
                            }
                            else
                            {
                                // Mostramos el mensaje que devuelve Solex en caso de que algo esté mal
                                // con el usuario que está intentando ingresar
                                await DisplayAlert("Mensaje Informativo", "Ocurrió un error al intentar enviar las medidas", "OK");
                                // Limpiamos la caja de texto
                                Entry_CodeBars.Text = "";
                                // Posicionamos el cursor
                                Entry_CodeBars.Focus();
                            }
                            // Desabilitamos el spinner de carga
                            ActivitySpinner.IsVisible = false;
                        });
                    }
                    else
                    {
                        await DisplayAlert("Error de conexión!", "No se encuentra una conexión estable a internet.", "OK");
                    }
                }
                else
                {
                    await DisplayAlert("Error de campos!", "Primero debe digitar el código de barras.", "OK");

                    Entry_CodeBars.Focus();
                }
            };
            Entry_Alto.Completed  += (s, e) => Entry_Ancho.Focus();
            Entry_Ancho.Completed += (s, e) => Entry_Largo.Focus();
            Entry_Largo.Completed += (s, e) => Entry_Peso.Focus();
        }
Ejemplo n.º 4
0
 // Evento de aparición de la página
 protected override void OnAppearing()
 {
     // Posicionamos el cursor
     Entry_CodeBars.Focus();
 }
Ejemplo n.º 5
0
        // Método personalizado que inicializa
        // los componentes de la página
        void InitComponents()
        {
            // Posiciona el cursor
            Entry_CodeBars.Focus();
            // Seteamos las propiedades de la página
            BackgroundColor = Constants.BackgroundColor;
            Unidades_Pistoleadas.BackgroundColor = Color.FromHex("00549F");
            Unidades_Faltantes.BackgroundColor   = Color.FromHex("00549F");
            Total_Unidades.BackgroundColor       = Color.FromHex("00549F");
            // Desactivamos el spinner de carga
            ActivitySpinner.IsVisible = false;
            // Desabilitamos todas las entradas
            // de texto menos la primera
            Entry_Alto.IsEnabled  = false;
            Entry_Ancho.IsEnabled = false;
            Entry_Largo.IsEnabled = false;
            Entry_Peso.IsEnabled  = false;
            // Verificamos la conexión a internet
            CheckConnectivity();
            // Al oprimir enter posiciona el cursor
            // en la siguiente entrada de texto
            Entry_CodeBars.Completed += async(s, e) =>
            {
                // Función que verifica que exista el código de barras
                await VerifyCodeBars();
            };
            Entry_Largo.Completed += async(s, e) =>
            {
                try
                {
                    if (Convert.ToDouble(Entry_Largo.Text) > 0)
                    {
                        // Esperamos medio segundo
                        await Task.Factory.StartNew(() => {
                            // Habilitamos el siguiente campo
                            Entry_Alto.IsEnabled = true;
                        });

                        await Task.Delay(500);

                        // Posicionamos el cursor
                        Entry_Alto.Focus();
                    }
                    else
                    {
                        var response = await DisplayAlert("Error de campos!", "Primero debe digitar el largo en centímetros.", "OK", "CANCEL");

                        // Verificamos la respuesta
                        if (response)
                        {
                            // Posicionamos el cursor
                            Entry_Largo.Focus();
                        }
                    }
                }
                catch (Exception er)
                {
                    // Imprimirmos el error
                    Debug.WriteLine(er);
                    // Limpiamos la caja de texto
                    Entry_Largo.Text = "";
                    // Posicionamos el cursor
                    Entry_Largo.Focus();
                }
            };
            Entry_Alto.Completed += async(s, e) =>
            {
                try
                {
                    if (Convert.ToDouble(Entry_Alto.Text) > 0)
                    {
                        // Esperamos medio segundo
                        await Task.Factory.StartNew(() => {
                            // Habilitamos el siguiente campo
                            Entry_Ancho.IsEnabled = true;
                        });

                        await Task.Delay(500);

                        // Posicionamos el cursor
                        Entry_Ancho.Focus();
                    }
                    else
                    {
                        var response = await DisplayAlert("Error de campos!", "Primero debe digitar la altura en centímetros.", "OK", "CANCEL");

                        // Verificamos la respuesta
                        if (response)
                        {
                            // Posicionamos el cursor
                            Entry_Alto.Focus();
                        }
                    }
                }
                catch (Exception er)
                {
                    // Imprimirmos el error
                    Debug.WriteLine(er);
                    // Limpiamos la caja de texto
                    Entry_Alto.Text = "";
                    // Posicionamos el cursor
                    Entry_Alto.Focus();
                }
            };
            Entry_Ancho.Completed += async(s, e) =>
            {
                try
                {
                    if (Convert.ToDouble(Entry_Ancho.Text) > 0)
                    {
                        // Esperamos medio segundo
                        await Task.Factory.StartNew(() => {
                            // Habilitamos el siguiente campo
                            Entry_Peso.IsEnabled = true;
                        });

                        await Task.Delay(500);

                        // Posicionamos el cursor
                        Entry_Peso.Focus();
                        // Obtenemos el valor de el largo, alto y ancho de la unidad
                        double largo_unidad = Convert.ToDouble(Entry_Largo.Text);
                        double alto_unidad  = Convert.ToDouble(Entry_Alto.Text);
                        double ancho_unidad = Convert.ToDouble(Entry_Ancho.Text);
                        // Calculamos el volumen de la unidad en base a su alto y ancho
                        double volumen_unidad = ((largo_unidad * alto_unidad * ancho_unidad) / 1000000) * 400;
                        // Asignamos el valor del volumen
                        massiveCubic.Volumen = volumen_unidad;
                    }
                    else
                    {
                        var response = await DisplayAlert("Error de campos!", "Primero debe digitar el ancho en centímetros.", "OK", "CANCEL");

                        // Verificamos la respuesta
                        if (response)
                        {
                            // Posicionamos el cursor
                            Entry_Ancho.Focus();
                        }
                    }
                }
                catch (Exception er)
                {
                    // Imprimirmos el error
                    Debug.WriteLine(er);
                    // Limpiamos la caja de texto
                    Entry_Ancho.Text = "";
                    // Posicionamos el cursor
                    Entry_Ancho.Focus();
                }
            };
            Entry_Peso.Completed += async(s, e) =>
            {
                // Abrimos la vista de la cámara del dispositivo
                await OpenCameraAsync(s, e);
            };
            Btn_ClearRows.Clicked += (s, e) =>
            {
                // Inicializamos los inputs
                InputsInit();
            };
            Btn_CaptureNewPhoto.Clicked += async(s, e) =>
            {
                // Abrimos la vista de la cámara del dispositivo
                await OpenCameraAsync(s, e);
            };
            // Evento que el escaner de código de barras
            Btn_ScannerCodeBars.Clicked += (s, e) =>
            {
                ScanningPage(s, e);
            };
        }
Ejemplo n.º 6
0
        public async Task VerifyCodeBars()
        {
            try
            {
                // Validamos que haya digitado el código de barras
                if (!string.IsNullOrWhiteSpace(Entry_CodeBars.Text))
                {
                    // Verificamos que exista conexión a internet
                    if (Constants.hasInternet)
                    {
                        // Creamos un hilo de ejecución para consumir el servicio del login
                        Device.BeginInvokeOnMainThread(async() =>
                        {
                            // Mostramos el spinner de carga
                            ActivitySpinner.IsVisible = true;
                            // Se oculta la imágen de la cámara
                            image_cubic.IsVisible = false;
                            // Consumimos el servicio de autenticación de Solex
                            var result = await App.RestClient.GetExistsBarCode(Entry_CodeBars.Text);
                            // Verificamos que el servicio haya devuelto una respuesta
                            if (result != null)
                            {
                                // Verificamos que la respuesta sea afirmativa
                                if (result.Response.IsSuccess)
                                {
                                    // Se verifica que exista información de la unidad
                                    if (result.Unidades != null)
                                    {
                                        // Verificamos si ya se pistoleo la unidad
                                        var exist_unidad = App.UnidadDatabase.GetUnidadByIdSolex(result.Unidades.IdUnidad);
                                        // Si la unidad ya fue leída
                                        if (exist_unidad != null)
                                        {
                                            // Mostramos el mensaje de alerta
                                            await DisplayAlert("Mensaje Informativo", "Unidad ya leída.", "OK");
                                            // Limpiamos el nombre de la empresa
                                            Labl_Empresa.Text = "";
                                            // Visualización del label
                                            Labl_Empresa.IsVisible = false;
                                            // Se limpia el valor de la entrada
                                            Entry_CodeBars.Text = "";
                                            // Se posiciona el cursor
                                            Entry_CodeBars.Focus();
                                            // Salimos de la función
                                            return;
                                        }
                                        // Si la unidad ya fue cubicada por sorter
                                        if (result.Unidades.Sorter)
                                        {
                                            // Mostramos el mensaje de alerta
                                            await DisplayAlert("Mensaje Informativo", "La unidad ya fue cubicada por Sorter.", "OK");
                                            // Limpiamos el nombre de la empresa
                                            Labl_Empresa.Text = "";
                                            // Visualización del label
                                            Labl_Empresa.IsVisible = false;
                                            // Se limpia el valor de la entrada
                                            Entry_CodeBars.Text = "";
                                            // Se posiciona el cursor
                                            Entry_CodeBars.Focus();
                                            // Salimos de la función
                                            return;
                                        }
                                        else
                                        {
                                            // Se verifica si la unidad ya fue cubicada
                                            if (result.Unidades.Cubicada)
                                            {
                                                // Mostramos el mensaje de alerta
                                                var response = await DisplayAlert("Mensaje Informativo", "La unidad ya fue cubicada, ¿Desea actualizar su medidas?.", "SI", "NO");
                                                // Si la respuesta es negativa
                                                if (!response)
                                                {
                                                    // Limpiamos el nombre de la empresa
                                                    Labl_Empresa.Text = "";
                                                    // Visualización del label
                                                    Labl_Empresa.IsVisible = false;
                                                    // Se limpia el valor de la entrada
                                                    Entry_CodeBars.Text = "";
                                                    // Se posiciona el cursor
                                                    Entry_CodeBars.Focus();
                                                    // Salimos de la función
                                                    return;
                                                }
                                            }
                                        }
                                        // Se verifica si es la primera lectura de la guía
                                        if (massiveCubic.Id_Guia <= 0)
                                        {
                                            // Se asignan los datos de la guía
                                            massiveCubic.Id_Guia = Convert.ToInt64(result.Unidades.IdGuia);
                                        }
                                        else
                                        {
                                            if (massiveCubic.Id_Guia != result.Unidades.IdGuia)
                                            {
                                                // Mostramos el mensaje de alerta
                                                await DisplayAlert("Mensaje Informativo", "La unidad pertenece a una guía diferente.", "OK");
                                                // Limpiamos el nombre de la empresa
                                                Labl_Empresa.Text = "";
                                                // Visualización del label
                                                Labl_Empresa.IsVisible = false;
                                                // Se limpia el valor de la entrada
                                                Entry_CodeBars.Text = "";
                                                // Se posiciona el cursor
                                                Entry_CodeBars.Focus();
                                                // Salimos de la función
                                                return;
                                            }
                                        }
                                        // Si la empresa no se ha mostrado
                                        if (string.IsNullOrWhiteSpace(Labl_Empresa.Text))
                                        {
                                            // Asignamos el nombre de la empresa
                                            Labl_Empresa.Text = result.Unidades.Empresa;
                                        }
                                        // Si no se ha mostrado
                                        if (!Labl_Empresa.IsVisible)
                                        {
                                            // Visualización del label
                                            Labl_Empresa.IsVisible = true;
                                        }
                                        // Instanciación de la unidad
                                        Unidad unidad = new Unidad
                                        {
                                            IdGuia           = massiveCubic.Id_Guia,
                                            NumeroUnidad     = result.Unidades.NumeroUnidad,
                                            IdUnidad         = result.Unidades.IdUnidad,
                                            ControlledUserId = Constants.CurrentUser.IdSolex
                                        };
                                        // Registro de la unidad
                                        App.UnidadDatabase.SaveUnidad(unidad);
                                        // Se llama a la función que actualiza los contadores
                                        UpdateCountsLabel(result);
                                    }
                                    else
                                    {
                                        // Limpiamos el nombre de la empresa
                                        Labl_Empresa.Text = "";
                                        // Visualización del label
                                        Labl_Empresa.IsVisible = false;
                                        // Mostramos el error de Solex
                                        await DisplayAlert("Respuesta de Solex", "No se pudo obtener infromación de la unidad.", "OK");
                                    }
                                    // Se limpia el valor de la entrada
                                    Entry_CodeBars.Text = "";
                                    // Se posiciona el cursor
                                    Entry_CodeBars.Focus();
                                    // Se habilitada la entrada para empezar a digitar las medidas
                                    Entry_Largo.IsEnabled = true;
                                }
                                else
                                {
                                    // Limpiamos el nombre de la empresa
                                    Labl_Empresa.Text = "";
                                    // Visualización del label
                                    Labl_Empresa.IsVisible = false;
                                    // Se limpia el valor de la entrada
                                    Entry_CodeBars.Text = "";
                                    // Se posiciona el cursor
                                    Entry_CodeBars.Focus();
                                    // Mostramos el error de Solex
                                    await DisplayAlert("Respuesta de Solex", result.Response.Error, "OK");
                                }
                            }
                            else
                            {
                                // Limpiamos el nombre de la empresa
                                Labl_Empresa.Text = "";
                                // Visualización del label
                                Labl_Empresa.IsVisible = false;
                                // Se limpia el valor de la entrada
                                Entry_CodeBars.Text = "";
                                // Se posiciona el cursor
                                Entry_CodeBars.Focus();
                                // Mostramos el mensaje que devuelve Solex en caso de que algo esté mal
                                // con el usuario que está intentando ingresar
                                await DisplayAlert("Mensaje Informativo", "Ocurrió un error al intentar verificar el código de barras.", "OK");
                            }
                            // Ocultamos el spinner de carga
                            ActivitySpinner.IsVisible = false;
                            // Se muestra la imágen de la cámara
                            image_cubic.IsVisible = true;
                        });
                    }
                    else
                    {
                        await DisplayAlert("Error de conexión!", "No se encuentra una conexión estable a internet.", "OK");
                    }
                }
                else
                {
                    await DisplayAlert("Error de campos!", "Primero debe digitar el código de barras.", "OK");

                    // Se posiciona el cursor
                    Entry_CodeBars.Focus();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error: " + ex.Message);
                await DisplayAlert("Ocurrió un error!", "Digite o pistolee nuevamente el código de barras de la unidad.", "OK");

                // Se limpia el valor de la entrada
                Entry_CodeBars.Text = "";
                // Se posiciona el cursor
                Entry_CodeBars.Focus();
                // Ocultamos el spinner de carga
                ActivitySpinner.IsVisible = false;
                // Se oculta la imágen de la cámara
                image_cubic.IsVisible = false;
            }
        }
Ejemplo n.º 7
0
        public async Task VerifyCodeBars()
        {
            try
            {
                // Validamos que haya digitado el código de barras
                if (!string.IsNullOrWhiteSpace(Entry_CodeBars.Text))
                {
                    // Verificamos que exista conexión a internet
                    if (Constants.hasInternet)
                    {
                        // Creamos un hilo de ejecución para consumir el servicio del login
                        Device.BeginInvokeOnMainThread(async() =>
                        {
                            // Ocultamos el botón de enviar datos
                            Btn_Send.IsVisible = false;
                            // Mostramos el spinner de carga
                            ActivitySpinner.IsVisible = true;
                            // Consumimos el servicio de autenticación de Solex
                            var result = await App.RestClient.GetExistsBarCode(Entry_CodeBars.Text);
                            // Verificamos que el servicio haya devuelto una respuesta
                            if (result != null)
                            {
                                // Verificamos que la respuesta sea afirmativa
                                if (result.Response.IsSuccess)
                                {
                                    // Habilitamos el siguiente campo
                                    Entry_Largo.IsEnabled = true;
                                    // Total de unidades de la guía
                                    Entry_Unidades.Text = result.Unidades.Total.ToString();
                                    // Guardamos las unidades en el objeto
                                    imageCubic.Unidades = result.Unidades.Total;
                                    // Relación del número de unidades auditadas
                                    Entry_UnidadesA.Text = ((result.Unidades.Auditadas <= 0) ? 1 : result.Unidades.Auditadas) + "/" + result.Unidades.Total;
                                    // Posicionamos el cursor
                                    Entry_Largo.Focus();
                                }
                                else
                                {
                                    // Mostramos el error de Solex
                                    await DisplayAlert("Respuesta de Solex", result.Response.Error, "OK");
                                }
                            }
                            else
                            {
                                // Mostramos el mensaje que devuelve Solex en caso de que algo esté mal
                                // con el usuario que está intentando ingresar
                                await DisplayAlert("Mensaje Informativo", "Ocurrió un error al intentar verificar el código de barras.", "OK");
                            }
                            // Desabilitamos el spinner de carga
                            ActivitySpinner.IsVisible = false;
                        });
                    }
                    else
                    {
                        await DisplayAlert("Error de conexión!", "No se encuentra una conexión estable a internet.", "OK");
                    }
                }
                else
                {
                    await DisplayAlert("Error de campos!", "Primero debe digitar el código de barras.", "OK");

                    Entry_CodeBars.Focus();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error: " + ex.Message);
                await DisplayAlert("Ocurrió un error!", "Digite o pistolee nuevamente el código de barras de la unidad.", "OK");

                Entry_CodeBars.Text = "";
                Entry_CodeBars.Focus();
            }
        }