示例#1
0
 // Método que captura el evento de seleccionar una celada de la lista
 private void ListView1_ItemTapped(object sender, ItemTappedEventArgs e)
 {
     // Capturamos la respectiva orden
     selected = (OrdenCargue)e.Item;
     // Navegamos a la página donde se muestra
     // la información detallada de la respectiva orden
     Navigation.PushAsync(new DetailOrdenCarguePage(selected));
 }
示例#2
0
 // Método que captura el evento de seleccionar una celada de la lista
 private void ListView1_ItemTapped(object sender, ItemTappedEventArgs e)
 {
     // Variable que permite navegar a la siguiente página
     // y volver sin necesidad de preguntar al servicio
     loadData = false;
     // Capturamos la respectiva orden de cargue
     selected = (OrdenCargue)e.Item;
     // Navegamos a la página donde se muestra
     // la información detallada de la respectiva orden de cargue
     Navigation.PushAsync(new DetailOrdenCarguePage(selected));
 }
示例#3
0
        // Función para verificar que existan cambios
        // en la orden de cargue actual
        bool VerifiedIfExistChanges()
        {
            // Capturamos las entradas de la página
            ordenSelected.Receives            = Entry_Receives.Text;
            ordenSelected.DocumentosRecogidos = Convert.ToDecimal(Entry_DocsRecogidos.Text);
            OrdenCargue ordenDB = new OrdenCargue();

            // Consultamos la orden de cargue almanada en BD
            ordenDB = App.OrdenCargueDatabase.GetOrdenCargueById(ordenSelected.Id);
            // Comparamos los datos de la UI con los de la BD,
            // para así saber si el usuario realizó algún cambio
            if (ordenSelected.Receives != ordenDB.Receives ||
                ordenSelected.DocumentosRecogidos != ordenDB.DocumentosRecogidos ||
                ordenSelected.DeliveredDate != ordenDB.DeliveredDate)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#4
0
 public int SaveOrdenCargue(OrdenCargue orden)
 {
     lock (locker)
     {
         try
         {
             if (orden.Id > 0)
             {
                 database.Update(orden);
                 return(orden.Id);
             }
             else
             {
                 return(database.Insert(orden));
             }
         }
         catch (SQLiteException e)
         {
             Debug.WriteLine("Error: " + e.Message);
             return(0);
         }
     }
 }
示例#5
0
        public DetailOrdenCarguePage(OrdenCargue orden)
        {
            InitializeComponent();
            // Título de la página
            Title = "Detalle de la Orden de Cargue";
            // Capturamos la orden de cargue seleccionada
            ordenSelected = orden;
            // Modificamos los labels y entries de la UI
            // con los valores de la orden de cargue
            Lbl_Cliente.Text          = "Dest: " + orden.Destinatario;
            Lbl_DireccionDestino.Text = "Dir: " + orden.DireccionDestino;
            Lbl_Ciudad.Text           = "Ciudad: " + orden.Ciudad;
            Lbl_Orden.Text            = "Orden: " + orden.OrdenId.ToString();
            Lbl_Planilla.Text         = "Planilla: " + orden.PlanillaNumero.ToString();
            Lbl_Unidades.Text         = "Unidades: " + orden.UnidadesProgramadas;
            Entry_Receives.Text       = orden.Receives;
            Entry_DocsRecogidos.Text  = (orden.DocumentosRecogidos > 0) ? orden.DocumentosRecogidos.ToString() : "";
            Entry_UndsRecogidas.Text  = (orden.UnidadesRecogidas > 0) ? orden.UnidadesRecogidas.ToString() : "";
            // Capturamos la hora actual
            string dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            // Se verifica que la orden de cargue no tenga fecha de llegada al punto
            if (orden.ArrivalDate == null || string.IsNullOrWhiteSpace(orden.ArrivalDate))
            {
                Entry_ArrivalToThePoint.Text = dateTime;
            }
            else
            {
                Entry_ArrivalToThePoint.Text = orden.ArrivalDate;
            }
            // Si la orden tiene un estado definitivo ocultamos los botones
            if (ordenSelected.UltimoEstadoId == Constants.ESTADO_ORDEN_EXITOSA ||
                ordenSelected.UltimoEstadoId == Constants.ESTADO_ORDEN_NO_EXITOSA)
            {
                Btn_ArrivalToThePoint.IsVisible = false;
                Btn_SaveClearDetails.IsVisible  = false;
                Btn_SaveDoneDetails.IsVisible   = false;
            }
            // Capturamos los eventos de las entradas
            Entry_Receives.Completed += (s, e) =>
            {
                Entry_DocsRecogidos.Focus();
            };
            // Capturamos los eventos de las entradas
            Entry_DocsRecogidos.Completed += (s, e) =>
            {
                Entry_UndsRecogidas.Focus();
            };
            // Evento de llegada al punto
            Btn_ArrivalToThePoint.Clicked += async(s, e) =>
            {
                await Btn_ArrivalToThePointAsync();
            };
            // Evento para marcar la orden de cargue como ORDEN NO EXITOSA
            Btn_SaveClearDetails.Clicked += async(s, e) =>
            {
                await Btn_SaveClearOrdenAsync();
            };
            // Entrada completa de la identificación
            Btn_SaveDoneDetails.Clicked += async(s, e) =>
            {
                // Evento para marcar la orden de cargue como ORDEN EXITOSA
                await Btn_SaveDoneOrdenAsync();
            };
            // Verificamos que haya conexión a internet
            CheckConnectivity();
            // Inicializamos algunos componentes
            InitComponents();
        }
示例#6
0
        public void LoadData()
        {
            // Instanciamos el listado de ordenes de cargue desde el servidor
            List <ResponseOrdenCargue> Items = new List <ResponseOrdenCargue>();

            // Creamos un hilo de ejecución para consumir el servicio de las ordenes de cargue
            Device.BeginInvokeOnMainThread(async() =>
            {
                // Activamos el spinner
                ActivitySpinner.IsVisible = true;
                // Consultamos las ordenes de cargue por número de placa en el servicio de Solex
                Items = await App.RestClient.GetOrdenesCargueByUser(Constants.CurrentUser.IdSolex.ToString());
                // Reseteamos el listado de ordenes de cargue del usuario actual
                App.OrdenCargueDatabase.DeleteAllOrdenes(Constants.CurrentUser.IdSolex);
                // Recorremos el array de objetos json que devuelve el servicio
                foreach (var Item in Items)
                {
                    OrdenCargue orden = new OrdenCargue
                    {
                        OrdenId             = Item.OrdenId,
                        Placa               = Item.Placa,
                        Latitud             = Item.Latitud.ToString(),
                        Longitud            = Item.Longitud.ToString(),
                        PlanillaNumero      = Item.Planilla,
                        Sucursal            = Item.Sucursal,
                        DANE                = Item.DANE,
                        Ciudad              = Item.Ciudad,
                        Destinatario        = Item.Destinatario,
                        DireccionDestino    = Item.DireccionDestino,
                        NombreCliente       = Item.NombreCliente,
                        TelefonoCliente     = Item.TelefonoCliente,
                        UltimoEstadoId      = Item.UltimoEstadoId,
                        UnidadesProgramadas = Item.UnidadesProgramadas,
                        UnidadesRecogidas   = Item.UnidadesRecogidas,
                        FechaLlegoAlPunto   = Item.FechaLlegoAlPunto,
                        FechaAsignacion     = Convert.ToDateTime(Item.FechaAsignacion)
                    };
                    if (Item.Latitud != null && Item.Longitud != null)
                    {
                        orden.Latitud  = (Item.Latitud).ToString().Replace(",", ".");
                        orden.Longitud = (Item.Latitud).ToString().Replace(",", ".");
                    }
                    if (Item.UltimoEstadoId == Constants.ESTADO_ORDEN_LLEGO_PUNTO)
                    {
                        orden.Arrival        = true;
                        orden.Controlled     = false;
                        orden.ArrivalDate    = Item.FechaLlegoAlPunto;
                        orden.ColorButtonRow = Constants.CODIGO_COLOR_LLEGADA_PUNTO;
                    }
                    else if (Item.UltimoEstadoId == Constants.ESTADO_ORDEN_EXITOSA)
                    {
                        orden.Delivered      = true;
                        orden.Controlled     = true;
                        orden.DeliveredDate  = Item.FechaRecogida;
                        orden.ColorButtonRow = Constants.CODIGO_COLOR_ENTREGA_BLU;
                    }
                    else
                    {
                        orden.Delivered      = false;
                        orden.DeliveredDate  = null;
                        orden.Controlled     = false;
                        orden.ColorButtonRow = Constants.CODIGO_COLOR_NO_ENTREGADA;
                    }
                    // Se asigna el id del usuario que esta controlando la planilla
                    orden.ControlledUserId = Constants.CurrentUser.IdSolex;
                    // Verificamos si ya existe el registro
                    var exist_orden = App.OrdenCargueDatabase.GetOrdenCargueByIdSolex(Item.OrdenId);
                    if (exist_orden != null)
                    {
                        // Asignamos el id para pdoer actualizar los datos de la orden de cargue
                        orden.Id = exist_orden.Id;
                    }
                    // Por último llamamos al método de la CRUD de orden de cargue
                    // el cual se encarga de insertar o actualizar la orden de cargue según sea el caso
                    App.OrdenCargueDatabase.SaveOrdenCargue(orden);
                }
                // Actualizamos los datos del ListView
                LoadDataLocal();
                // Ocultamos el spinner
                ActivitySpinner.IsVisible = false;
                // Posicionamos el cursor en el buscador
                Input_Search.Focus();
            });
        }