Exemple #1
0
 private async void BuscarProveedor()
 {
     MainViewModel.GetInstance().Combo = new ComboViewModel(Enumeradores.eTipoCombo.Proveedor,null);
     await App.Navigator.PushAsync(new ComboPage());
 }
Exemple #2
0
        private async void Calificar()
        {
            try
            {
                IsRunning = true;
                IsEnabled = false;

                if (Fecha == null)
                {
                    IsRunning = false;
                    IsEnabled = true;
                    await Application.Current.MainPage.DisplayAlert(
                            "Alerta",
                            "El campo fecha es obligatorio",
                            "Aceptar");
                    return;
                }

                if (Fecha == DateTime.MinValue)
                {
                    IsRunning = false;
                    IsEnabled = true;
                    await Application.Current.MainPage.DisplayAlert(
                            "Alerta",
                            "El campo fecha es obligatorio",
                            "Aceptar");
                    return;
                }

                if (string.IsNullOrEmpty(Compra.ProvCodigo))
                {
                    IsRunning = false;
                    IsEnabled = true;
                    await Application.Current.MainPage.DisplayAlert(
                            "Alerta",
                            "El campo proveedor es obligatorio",
                            "Aceptar");
                    return;
                }

                if (Compra.IdProducto == 0)
                {
                    IsRunning = false;
                    IsEnabled = true;
                    await Application.Current.MainPage.DisplayAlert(
                            "Alerta",
                            "El campo producto es obligatorio",
                            "Aceptar");
                    return;
                }

                if (Cantidad == 0 | Cantidad < 0)
                {
                    IsRunning = false;
                    IsEnabled = true;
                    await Application.Current.MainPage.DisplayAlert(
                            "Alerta",
                            "El campo cantidad es obligatorio",
                            "Aceptar");
                    return;
                }

                if(ListaDetalle.Where(q => q.EsObligatorio && (q.Minimo > q.Calificacion || q.Calificacion > q.Maximo)).Count() > 0)
                {
                    IsRunning = false;
                    IsEnabled = true;
                    await Application.Current.MainPage.DisplayAlert(
                            "Alerta",
                            "La calificación ingresada no cumple con uno o varios parámetros obligatorios, no se puede proceder con la compra",
                            "Aceptar");
                    return;
                }

                var Producto = App.Data.GetProducto(Compra.IdProducto);
                if (Producto == null)
                {
                    IsRunning = false;
                    IsEnabled = true;
                    await Application.Current.MainPage.DisplayAlert(
                            "Alerta",
                            "El campo producto es obligatorio",
                            "Aceptar");
                    return;
                }

                Compra.Fecha = Fecha;
                foreach (var q in ListaDetalle)
                {
                    q.PonderacionFinal = 0;
                    if (q.Minimo <= q.Calificacion && q.Calificacion <= q.Maximo)
                    {
                        if (Math.Round(q.PorcentajeMinimo,2) == 100)
                        {
                            q.PonderacionFinal = q.Ponderacion;
                        }
                        else
                        {
                            double RangoCalificacion = q.Maximo - q.Minimo;
                            double RangoSegunPreferencia = q.ValorOptimo == "MAXIMO" ? q.Calificacion - q.Minimo : q.Maximo - q.Calificacion;
                            double RangoPorcentual = (RangoSegunPreferencia / RangoCalificacion) * 100;
                            double PonderacionPorAsignar = 100 - q.PorcentajeMinimo;
                            double PonderacionRangoPorcentual = PonderacionPorAsignar * (RangoPorcentual / 100);
                            double PorcentajePonderacion = PonderacionRangoPorcentual + q.PorcentajeMinimo;
                            q.PonderacionFinal = q.Ponderacion * (PorcentajePonderacion / 100);
                        }
                    }
                }

                double Ponderacion = ListaDetalle.Sum(q => q.PonderacionFinal);
                double Min = 0;
                double Max = 0;
                double PonderacionMin = 0;
                double PonderacionMax = 0;

                if (Ponderacion > Producto.CalificacionD)
                {
                    if (Ponderacion > Producto.CalificacionC)
                    {
                        if (Ponderacion > Producto.CalificacionB)
                        {
                            if (Ponderacion > Producto.CalificacionA)
                            {
                                Min = Producto.PrecioA;
                                Max = Producto.PrecioA;
                                PonderacionMin = Producto.CalificacionA;
                                PonderacionMax = Producto.CalificacionA;
                            }
                            else
                            {
                                Min = Producto.PrecioB;
                                Max = Producto.PrecioA;
                                PonderacionMin = Producto.CalificacionB;
                                PonderacionMax = Producto.CalificacionA;
                            }
                        }
                        else
                        {
                            Min = Producto.PrecioC;
                            Max = Producto.PrecioB;
                            PonderacionMin = Producto.CalificacionC;
                            PonderacionMax = Producto.CalificacionB;
                        }
                    }
                    else
                    {
                        Min = Producto.PrecioD;
                        Max = Producto.PrecioC;
                        PonderacionMin = Producto.CalificacionD;
                        PonderacionMax = Producto.CalificacionC;
                    }
                }
                else
                {
                    Min = 0;
                    Max = 0;
                }

                if (Min == 0)
                {
                    IsRunning = false;
                    IsEnabled = true;
                    await Application.Current.MainPage.DisplayAlert(
                            "Alerta",
                            "La calificación del producto no es aceptable, no se puede proceder con la compra",
                            "Aceptar");
                    return;
                }

                switch(Producto.EscogerPrecioPor)
                {
                    case "MASALTO":
                        Compra.Precio = Max;
                        break;
                    case "MASBAJO":
                        Compra.Precio = Min;
                        break;
                    case "CERCANO":
                        var RangoMin = Ponderacion - PonderacionMax;
                        var RangoMax = PonderacionMax - Ponderacion;
                        if (RangoMin < RangoMax)
                            Compra.Precio = Min;
                        else
                            Compra.Precio = Max;
                        break;
                }
                Compra.Calificacion = Ponderacion;
                Compra.Cantidad = Cantidad;
                var lstDetalle = new List<ProductoDetalleModel>(ListaDetalle);
                var lst = lstDetalle.Select(q => new CompraDetalleModel
                {
                    Secuencia = (int)q.Secuencia,
                    Descripcion = q.Descripcion,
                    Minimo = q.Minimo,
                    Maximo = q.Maximo,
                    Ponderacion = q.Ponderacion,
                    EsObligatorio = q.EsObligatorio,
                    PorcentajeMinimo = q.PorcentajeMinimo,
                    ValorOptimo = q.ValorOptimo,
                    Valor = q.Calificacion
                }).ToList();
                MainViewModel.GetInstance().CompraConfirmacionPopUp = new CompraConfirmacionPopUpViewModel(Compra, lst);
                await PopupNavigation.PushAsync(new CompraConfirmacionPopUpPage());

                IsRunning = false;
                IsEnabled = true;
            }
            catch (Exception ex)
            {
                IsRunning = false;
                IsEnabled = true;
                await Application.Current.MainPage.DisplayAlert(
                           "Alerta",
                           ex.Message,
                           "Aceptar");
                return;
            }
        }
Exemple #3
0
 private async void BuscarProducto()
 {
     MainViewModel.GetInstance().Combo = new ComboViewModel(Enumeradores.eTipoCombo.Producto, Compra.ProvCodigo);
     await App.Navigator.PushAsync(new ComboPage());
 }