示例#1
0
 public void cargarDetalles()
 {
     using (var detControlador = new ControladorDetalle())
     {
         this.detalles            = new ObservableCollection <Detalle>(detControlador.FindByPedido(this.tempPedido.IdPedido));
         listDetalles.ItemsSource = this.detalles;
     }
 }
示例#2
0
        private async void btnEliminar_Clicked(object sender, EventArgs e)
        {
            //Si se esta eliminando un pedido ya persistido
            if (btnEliminar.Text == "Eliminar")
            {
                //Se confirma la eliminacion del pedido
                var respuesta = await DisplayAlert("Confirmar eliminacion del pedido", "¿Está seguro que desea eliminar este pedido con sus respectivos detalles?", "Si", "Cancelar");

                if (respuesta)
                {
                    //Se eliminan todos los detalles de ese pedido
                    using (var detControlador = new ControladorDetalle())
                    {
                        var detallesAEliminar = detControlador.FindByPedido(this.tempPedido.IdPedido);

                        foreach (Detalle det in detallesAEliminar)
                        {
                            detControlador.Delete(det);
                        }
                    }

                    //Se elimina el pedido en si
                    using (var pedControlador = new ControladorPedido())
                    {
                        pedControlador.Delete(this.tempPedido);
                    }

                    await Navigation.PopModalAsync();
                }
            }
            else
            {
                //Se confirma que se quiera cancelar la creacion del pedido
                if (this.tempPedido.Editable)
                {
                    var respuesta = await DisplayAlert("Confirmar cancelacion del pedido", "¿Está seguro que desea cancelar la creacion de ste pedido?", "Si", "Cancelar");

                    if (respuesta)
                    {
                        await Navigation.PopModalAsync();
                    }
                }
                else
                {
                    await Navigation.PopModalAsync();
                }
            }
        }
示例#3
0
        private async Task exportarPedidos()
        {
            try
            {
                //Cargar todos los pedidos editables de este vendedor
                List <Pedido> pedidosExportar;
                using (var cPedidos = new ControladorPedido())
                {
                    pedidosExportar = cPedidos.FindForExport(this.IdVendedor);
                }

                //Por cada pedido encontrado
                foreach (Pedido pedExportar in pedidosExportar)
                {
                    //Se guardan sus detalles
                    List <Detalle> detExportar;
                    using (var cDetalle = new ControladorDetalle())
                    {
                        detExportar = cDetalle.FindByPedido(pedExportar.IdPedido);
                    }

                    //Se pasan a formato JSON
                    var pedidoJson   = JsonConvert.SerializeObject(pedExportar, Newtonsoft.Json.Formatting.Indented);
                    var detallesJson = JsonConvert.SerializeObject(detExportar, Newtonsoft.Json.Formatting.Indented);

                    //Se crea una lista de parejas
                    var parejas = new List <KeyValuePair <string, string> >
                    {
                        new KeyValuePair <string, string>("pedido", pedidoJson),
                        new KeyValuePair <string, string>("detalles", detallesJson)
                    };

                    //Se le da formato de formulario
                    var contenido = new FormUrlEncodedContent(parejas);

                    //Se envia el pedido y sus detalles correspondientes al servidor
                    HttpClient clienteHttp = new HttpClient();
                    clienteHttp.BaseAddress = new Uri(this.Direccion);
                    clienteHttp.Timeout     = TimeSpan.FromSeconds(30);
                    string url = string.Format("/Importar.aspx");
                    HttpResponseMessage respuesta = clienteHttp.PostAsync(url, contenido).Result;

                    if (respuesta.IsSuccessStatusCode)
                    {
                        //Se cambia el atributo "editable" en todos los pedidos que fueron exportados
                        pedExportar.Editable = false;
                        using (var pControlador = new ControladorPedido())
                        {
                            pControlador.Update(pedExportar);
                        }
                    }
                }

                exportarIndicator.IsVisible = false;
                imgExportar.IsVisible       = true;
                if (pedidosExportar.Count > 0)
                {
                    await DisplayAlert("Exportacion exitosa", "Los pedidos se exportaron exitosamente", "Aceptar");

                    App.Current.MainPage = new Pedidos(this.IdVendedor, this.Direccion);
                }
                else
                {
                    await DisplayAlert("Exportacion fallida", "No hay ningun pedido para exportar", "Aceptar");
                }
            }
            catch (Exception)
            {
                exportarIndicator.IsVisible = false;
                imgExportar.IsVisible       = true;
                await DisplayAlert("Error de conexión", "No se pudo enviar la informacion al sitio web. Compruebe que su conexión a internet este funcionando correctamente.", "Aceptar");
            }
        }
示例#4
0
        private async Task importarPedidos()
        {
            //Se eliminan todos los detalles
            using (var cDetalle = new ControladorDetalle())
            {
                cDetalle.DeleteAll();
            }

            //Se eliminan todos los pedidos
            using (var cPedido = new ControladorPedido())
            {
                cPedido.DeleteAll();
            }

            //Se importan todos los pedidos
            HttpClient clienteHttp = new HttpClient();

            clienteHttp.BaseAddress = new Uri(txtDireccionWeb.Text);
            string url       = string.Format("/Exportar.aspx?exportar=pedidos");
            var    respuesta = await clienteHttp.GetAsync(url);

            var           resultado = respuesta.Content.ReadAsStringAsync().Result;
            List <Pedido> pedidos   = JsonConvert.DeserializeObject <List <Pedido> >(resultado);

            //Se importan todos los detalles
            url       = string.Format("/Exportar.aspx?exportar=detalles");
            respuesta = await clienteHttp.GetAsync(url);

            resultado = respuesta.Content.ReadAsStringAsync().Result;
            List <Detalle> detalles = JsonConvert.DeserializeObject <List <Detalle> >(resultado);

            //Por cada pedido
            foreach (Pedido pedido in pedidos)
            {
                int idPedidoSeleccionado = pedido.IdPedido;

                using (var cCliente = new ControladorCliente())
                {
                    var clienteCorrespondiente = cCliente.FindById(pedido.IdCliente);
                    pedido.Cliente = clienteCorrespondiente.RazonSocial;
                }

                //Se persiste el pedido
                using (var cPedidos = new ControladorPedido())
                {
                    cPedidos.Insert(pedido);
                }

                //Se buscan los detalles que correspondan a ese pedido
                foreach (Detalle detalle in detalles)
                {
                    if (detalle.IdPedido == idPedidoSeleccionado)
                    {
                        //Se actualiza el IdPedidoVenta en cada detalle
                        detalle.IdPedido  = pedido.IdPedido;
                        detalle.Descuento = detalle.Descuento * 100;

                        using (var cArticulo = new ControladorArticulo())
                        {
                            var articuloCorrespondiente = cArticulo.FindById(detalle.IdArticulo);
                            detalle.Articulo       = articuloCorrespondiente.Denominacion;
                            detalle.PrecioUnitario = articuloCorrespondiente.PrecioVenta;
                        }

                        //Se persiste el detalle
                        using (var cDetalle = new ControladorDetalle())
                        {
                            cDetalle.Insert(detalle);
                        }
                    }
                }
            }

            importarIndicator.IsVisible = false;
            imgImportar.IsVisible       = true;
            await DisplayAlert("Descarga exitosa", "Los datos se descargaron exitosamente", "Aceptar");
        }
示例#5
0
        //Cuando se presiona el boton guardar pedido
        private void btnGuardar_Clicked(object sender, EventArgs e)
        {
            bool puedoGuardar = validarCamposObligatorios();

            if (puedoGuardar)
            {
                if (lblTitulo.Text == "Agregar Pedido")
                {
                    //Se crea un pedido nuevo y se guardan los datos ingresados
                    tempPedido.IdPedido  = Convert.ToInt32(lblNumero.Text);
                    tempPedido.Editable  = true;
                    tempPedido.IdCliente = clientes[pickerCliente.SelectedIndex].IdCliente;

                    using (var cliControlador = new ControladorCliente())
                    {
                        var clienteSeleccionado = cliControlador.FindById(tempPedido.IdCliente);
                        tempPedido.Cliente = clienteSeleccionado.RazonSocial;
                    }

                    tempPedido.IdVendedor   = this.IdVendedor;
                    tempPedido.Estado       = pickerEstado.Items[pickerEstado.SelectedIndex];
                    tempPedido.FechaPedido  = dateFechaPedido.Date;
                    tempPedido.FechaEntrega = dateFechaEntrega.Date;
                    tempPedido.Subtotal     = Convert.ToDouble(lblSubTotal.Text);
                    tempPedido.GastosEnvio  = Convert.ToDouble(txtGastosEnvio.Text);
                    tempPedido.Total        = Convert.ToDouble(lblTotal.Text);
                    tempPedido.Pagado       = switchPagado.IsToggled;

                    //Se persiste el pedido a la base de datos
                    using (var pedControlador = new ControladorPedido())
                    {
                        pedControlador.Insert(tempPedido);
                    }
                }
                else
                {
                    tempPedido.IdCliente = clientes[pickerCliente.SelectedIndex].IdCliente;
                    using (var cliControlador = new ControladorCliente())
                    {
                        var clienteSeleccionado = cliControlador.FindById(tempPedido.IdCliente);
                        tempPedido.Cliente = clienteSeleccionado.RazonSocial;
                    }

                    tempPedido.Estado       = pickerEstado.Items[pickerEstado.SelectedIndex];
                    tempPedido.FechaPedido  = dateFechaPedido.Date;
                    tempPedido.FechaEntrega = dateFechaEntrega.Date;
                    tempPedido.Subtotal     = Convert.ToDouble(lblSubTotal.Text);
                    tempPedido.GastosEnvio  = Convert.ToDouble(txtGastosEnvio.Text);
                    tempPedido.Total        = Convert.ToDouble(lblTotal.Text);
                    tempPedido.Pagado       = switchPagado.IsToggled;

                    //Se persiste el pedido a la base de datos
                    using (var pedControlador = new ControladorPedido())
                    {
                        pedControlador.Update(tempPedido);
                    }
                }

                //Persistir detalles
                foreach (Detalle det in detalles)
                {
                    if (det.IdDetalle == 0)
                    {
                        det.IdPedido = tempPedido.IdPedido;
                        using (var detControlador = new ControladorDetalle())
                        {
                            detControlador.Insert(det);
                        }
                    }
                    else
                    {
                        using (var detControlador = new ControladorDetalle())
                        {
                            detControlador.Update(det);
                        }
                    }
                }

                //Eliminar detalles eliminados
                foreach (Detalle det in detallesEliminados)
                {
                    using (var detControlador = new ControladorDetalle())
                    {
                        detControlador.Delete(det);
                    }
                }

                Navigation.PopModalAsync();
            }
        }