コード例 #1
0
        public void TestBuscarArticuloPorId()
        {
            //Arrange
            ArticuloComputacion auxArticulo = new ArticuloComputacion("teclado", 125, 0, 5);

            Distribuidora.listaDeArticulos.Add(auxArticulo);

            //Act
            Articulo unArticulo = Distribuidora.buscarArticuloPorId(5);

            //Assert
            Assert.IsNotNull(unArticulo);
        }
コード例 #2
0
        /// <summary>
        /// Metodo que maneja el hilo que procesa de manera automatica las ventas y muestra los resultados por pantalla.
        /// </summary>
        public void ProcesarVentas()
        {
            bool continuar = true;

            try
            {
                hiloActivo = true;
                while (continuar == true)
                {
                    ActualizarDtvVentasPendientes();
                    Thread.Sleep(4000);
                    //Valida que existan ventas pendientes
                    if (Distribuidora.colaVentasPendientes.Count > 0)
                    {
                        Venta auxVenta = Distribuidora.colaVentasPendientes.Dequeue();
                        if (Distribuidora.ConfirmarStockVentasExternas(auxVenta))
                        {
                            //Busca el articulo a vender
                            Articulo auxArticulo = Distribuidora.buscarArticuloPorId(auxVenta.IdArticulo);
                            auxArticulo.Cantidad = auxArticulo.Cantidad - auxVenta.Cantidad;
                            //Actualiza el stock del articulo
                            HelperBD.ActualizarStockArticulo(auxArticulo);
                            //Actualiza el estado de la venta
                            auxVenta.EstadoVenta = Venta.EEstadoVenta.Conforme;
                            HelperBD.ActualizarEstadoVenta(auxVenta);
                            //Pasa la venta a la cola de ventas procesadas
                            Distribuidora.colaVentasProcesadas.Enqueue(auxVenta);
                            //Actualiza los DataGridView que van mostrando los resultados del proceso
                            ActualizarDtvVentasPendientes();
                            ActualizarDtvVentasProcesadas();
                            Thread.Sleep(4000);
                        }
                        else
                        {
                            //Si no se pudo conformar la venta se cambia su estado a rechazada
                            auxVenta.EstadoVenta = Venta.EEstadoVenta.Rechazada;
                            HelperBD.ActualizarEstadoVenta(auxVenta);
                            Distribuidora.colaVentasProcesadas.Enqueue(auxVenta);

                            //Suscribe el método GenerarLogVentasRechazadas al delegado ventaRechazada a fin de ser ejecutado al lanzar el evento
                            Distribuidora.ventaRechazada += Distribuidora.GenerarLogVentasRechazadas;
                            //Llamada al evento que desencadena la escritura del archivo de texto con el log de ventas rechazadas
                            Distribuidora.InvocarEvento(auxVenta);
                            ActualizarDtvVentasPendientes();
                            ActualizarDtvVentasProcesadas();
                            Thread.Sleep(4000);
                        }
                    }
                    else
                    {
                        //Si no hay más ventas pendientes lo informa por pantalla validando antes que se pueda llamar al control lblmensajeventas que es manejado por el hilo del formulario
                        if (this.lblmensajeventas.InvokeRequired)
                        {
                            this.lblmensajeventas.BeginInvoke((MethodInvoker) delegate()
                            {
                                lblmensajeventas.Visible   = true;
                                this.lblmensajeventas.Text = "No hay ventas externas para procesar";
                            });
                        }
                        else
                        {
                            lblmensajeventas.Visible   = true;
                            this.lblmensajeventas.Text = "No hay ventas externas para procesar";
                        }
                        continuar = false;
                    }
                }
                hiloActivo = false;
            }
            catch (Exception)
            {
                throw;
            }
        }