internal void CargarProducto(Modelo.Producto ProductoModel)
        {
            Id          = ProductoModel.Id;
            Codigo      = ProductoModel.Codigo;
            Descripcion = ProductoModel.Descripcion;

            if (ProductoModel.Categoria != null)
            {
                CategoriaSeleccionada = new KeyValuePair <Categoria, string>(ProductoModel.Categoria, ProductoModel.Categoria.Descripcion);
            }

            if (ProductoModel.Proveedores != null)
            {
                Modelo.Proveedor proveedor = ProductoModel.Proveedores.FirstOrDefault();
                if (proveedor != null)
                {
                    ProveedorSeleccionada = new KeyValuePair <Modelo.Proveedor, string>(proveedor, proveedor.RazonSocial);
                }
            }

            _Suelto     = ProductoModel.Suelto;
            Costo       = ProductoModel.Costo;
            Precio      = ProductoModel.Precio;
            StockMinimo = ProductoModel.StockMinimo;
            StockOptimo = ProductoModel.StockOptimo;
            StockActual = ProductoModel.StockActual;

            NotifyPropertyChanged(nameof(Codigo));
        }
예제 #2
0
        public ProductoDetalleViewModel(Modelo.Producto producto)
        {
            Id                   = producto.Id;
            Codigo               = producto.Codigo;
            Descripcion          = producto.Descripcion;
            Proveedores          = producto.Proveedores?.ToList();
            Suelto               = producto.Suelto;
            Costo                = producto.Costo;
            Precio               = producto.Precio;
            Habilitado           = producto.Habilitado;
            StockMinimo          = producto.StockMinimo;
            StockOptimo          = producto.StockOptimo;
            StockActual          = producto.StockActual;
            UsuarioActualizacion = producto.UsuarioActualizacion;
            FechaActualizacion   = producto.FechaActualizacion;

            StockMinimoAuxiliar = StockMinimo;
            StockOptimoAuxiliar = StockOptimo;
            StockActualAuxiliar = StockActual;
            PrecioAuxiliar      = Precio;

            if (producto.Categoria != null)
            {
                CategoriaSeleccionada = new KeyValuePair <Categoria, string>(producto.Categoria, producto.Categoria.Descripcion);
            }
        }
예제 #3
0
        public EtiquetaGondola(Modelo.Producto producto)
        {
            Texto nombre = new Texto(producto.Descripcion, StringAlignment.Center);

            AgregarLinea(Cabecera2, nombre);

            Texto precio = new Texto(producto.Precio.ToString("c2"), StringAlignment.Center);

            AgregarLinea(Cabecera1, precio);

            AgregarLineaBlanco(cuerpo1);

            if (!producto.Suelto && long.TryParse(producto.Codigo, out _))
            {
                try
                {
                    Barcode barcode = new Barcode();
                    barcode.IncludeLabel = true;
                    Image img = ObtenerImagenCodigoBarras(producto.Codigo, barcode);
                    AgregarImagen(img);
                }
                catch
                {
                    throw new NegocioException("Error al generar el código de barras. Verifique que el código del producto este correcto.");
                }
            }
        }
예제 #4
0
        internal void ImprimirEtiqueta()
        {
            Modelo.Producto producto        = new Modelo.Producto(Id, Codigo, Descripcion, CategoriaSeleccionada.Key, Proveedores, Suelto, Costo, Precio, Habilitado, StockMinimo, StockOptimo, StockActual, Sesion.Usuario.Alias);
            EtiquetaGondola etiquetaGondola = new EtiquetaGondola(producto);

            Impresora impresora = new Impresora(Settings.Default.ImpresoraNombre, etiquetaGondola);

            impresora.Imprimir();
        }
예제 #5
0
 private void pictureBox1_Paint(object sender, PaintEventArgs e)
 {
     Ejecutar(() =>
     {
         Modelo.Producto producto        = new Modelo.Producto(productoDetalleViewModel.Id, productoDetalleViewModel.Codigo, productoDetalleViewModel.Descripcion, productoDetalleViewModel.CategoriaSeleccionada.Key, productoDetalleViewModel.Proveedores, productoDetalleViewModel.Suelto, productoDetalleViewModel.Costo, productoDetalleViewModel.Precio, productoDetalleViewModel.Habilitado, productoDetalleViewModel.StockMinimo, productoDetalleViewModel.StockOptimo, productoDetalleViewModel.StockActual, null);
         EtiquetaGondola etiquetaGondola = new EtiquetaGondola(producto);
         etiquetaGondola.Imprimir(e.ClipRectangle, e.Graphics);
     });
 }
예제 #6
0
        internal async Task Guardar(Modelo.Producto producto)
        {
            if (producto.Categoria != null)
            {
                _context.Entry(producto.Categoria).State = EntityState.Unchanged;
            }

            if (producto.Proveedores != null)
            {
                producto.Proveedores.ToList().ForEach(x => _context.Entry(x).State = EntityState.Modified);
            }

            if (producto.Id == 0)
            {
                var a = await Obtener(producto.Codigo);

                if (await Obtener(producto.Codigo) != null)
                {
                    throw new NegocioException($"Ya existe un producto con código {producto.Codigo}.");
                }

                _context.Producto.Add(producto);
            }
            else
            {
                var ProductoDB = _context.Producto
                                 .Include(x => x.Proveedores)
                                 .Include(x => x.Categoria)
                                 .FirstOrDefault(x => x.Id == producto.Id);

                _context.Entry(ProductoDB).CurrentValues.SetValues(producto);

                if (producto.Proveedores != null)
                {
                    ProductoDB.Proveedores.ToList().ForEach(ProveedoresDB =>
                    {
                        Proveedor proveedorLocal = producto.Proveedores.FirstOrDefault(x => x.Id == ProveedoresDB.Id);
                        if (proveedorLocal == null)
                        {
                            ProductoDB.Proveedores.Remove(ProveedoresDB);
                        }
                    });

                    producto.Proveedores.ToList().ForEach(Proveedores =>
                    {
                        Proveedor mercaderiaItemLocal = ProductoDB.Proveedores.FirstOrDefault(x => x.Id == Proveedores.Id);
                        if (mercaderiaItemLocal == null)
                        {
                            ProductoDB.Proveedores.Add(Proveedores);
                        }
                    });
                }
            }

            await _context.SaveChangesAsync();
        }
        internal async Task GuardarAsync()
        {
            List <Modelo.Proveedor> proveedores = ProveedorSeleccionada.Key != null ? new List <Modelo.Proveedor> {
                ProveedorSeleccionada.Key
            } : null;

            Modelo.Producto productoModel = new Modelo.Producto(Id, Codigo, Descripcion, CategoriaSeleccionada.Key, proveedores, Suelto, Costo, Precio, true, StockMinimo, StockOptimo, StockActual, Sesion.Usuario.Alias);
            await ProductoService.Guardar(productoModel);

            ActualizarGrillaProdcutos(new ProductoIngresoMasivoItem(productoModel));
        }
        internal async Task ModificarAsync(MercaderiaDetalleItem mercaderiaDetalleItem)
        {
            Modelo.Producto producto = await ProductoService.ObtenerReducido(mercaderiaDetalleItem.Codigo);

            ProductoDetalleForm ProductoDetalleForm = new ProductoDetalleForm(producto);

            ProductoDetalleForm.ShowDialog();

            mercaderiaDetalleItem.MercaderiaItem.ModificarProducto(await ProductoService.Obtener(mercaderiaDetalleItem.Codigo));

            NotifyPropertyChanged(nameof(Mercaderias));
        }
예제 #9
0
        internal async Task <int> Ingresar(Modelo.Mercaderia mercaderia)
        {
            Modelo.Mercaderia mercaderaDB = _context.Mercaderia
                                            .FirstOrDefault(x => x.Id == mercaderia.Id);

            mercaderia.MercaderiaItems.ToList().ForEach(x =>
            {
                Modelo.Producto producto = _context.Producto.FirstOrDefault(y => y.Id == x.Producto.Id);
                producto.AgregarStock(x.Cantidad);
            });

            return(await _context.SaveChangesAsync());
        }
예제 #10
0
        private void dgProductos_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            EjecutarAsync(async() =>
            {
                if (e.RowIndex < 0)
                {
                    return;
                }

                Modelo.Producto producto = (Modelo.Producto)dgProductos.CurrentRow.DataBoundItem;
                await productoListadoViewModel.ModificarAsync(producto);
            });
        }
예제 #11
0
        public static Task Guardar(Modelo.Producto producto)
        {
            ProductoValidador validador          = new ProductoValidador();
            ValidationResult  validadorResultado = validador.Validate(producto);

            if (!validadorResultado.IsValid)
            {
                throw new NegocioException(string.Join(Environment.NewLine, validadorResultado.Errors.Select(x => x.ErrorMessage)));
            }

            ProductoRepository productoRepository = new ProductoRepository(new Context());

            return(productoRepository.Guardar(producto));
        }
예제 #12
0
        private void dgProductos_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (dgProductos[0, e.RowIndex].Value == null)
            {
                return;
            }

            Modelo.Producto producto = (Modelo.Producto)dgProductos.Rows[e.RowIndex].DataBoundItem;
            if (producto.EnFalta())
            {
                dgProductos.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Coral;
            }
            else
            {
                dgProductos.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
            }
        }
예제 #13
0
        public EtiquetaGondola(Modelo.Producto producto)
        {
            Texto nombre = new Texto(producto.Descripcion, StringAlignment.Center);

            AgregarLinea(Cabecera2, nombre);

            Texto precio = new Texto(producto.Precio.ToString("c2"), StringAlignment.Center);

            AgregarLinea(Cabecera1, precio);

            AgregarLineaBlanco(cuerpo1);

            if (!producto.Suelto)
            {
                Barcode b   = new Barcode();
                Image   img = b.Encode(TYPE.EAN13, producto.Codigo, Color.Black, Color.White, 217, 35);
                AgregarImagen(img);

                Texto codigo = new Texto(producto.Codigo, StringAlignment.Center);
                AgregarLinea(cuerpo1, codigo);
            }
        }
        internal async Task AgregarProductoAsync()
        {
            if (string.IsNullOrWhiteSpace(Codigo))
            {
                throw new NegocioException(Resources.productoNoExiste);
            }

            Modelo.Producto producto = await ProductoService.ObtenerReducido(Codigo);

            if (producto == null)
            {
                throw new NegocioException(Resources.productoNoExiste);
            }

            int cantidad = Cantidad > 0 ? Cantidad : 1;

            mercaderiaModel.AgregarProducto(producto, cantidad);

            Cantidad = 1;
            Codigo   = string.Empty;

            NotifyPropertyChanged(nameof(Mercaderias));
        }
예제 #15
0
        private void dgProductos_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            EjecutarAsync(async() =>
            {
                if (e.RowIndex < 0)
                {
                    return;
                }

                Modelo.Producto producto = (Modelo.Producto)dgProductos.CurrentRow.DataBoundItem;

                if (dgProductos.Columns[e.ColumnIndex].Name == "Editar")
                {
                    await productoListadoViewModel.ModificarAsync(producto);
                }
                if (dgProductos.Columns[e.ColumnIndex].Name == "Eliminar")
                {
                    if (DialogResult.Yes == CustomMessageBox.ShowDialog(Resources.eliminarElemento, this.Text, MessageBoxButtons.YesNo, CustomMessageBoxIcon.Info))
                    {
                        await productoListadoViewModel.BorrarAsync(producto);
                    }
                }
            });
        }
예제 #16
0
 public ProductoDetalleForm(Modelo.Producto producto) : this()
 {
     productoDetalleViewModel = new ProductoDetalleViewModel(producto);
 }
예제 #17
0
 internal async Task GuardarAsync()
 {
     Modelo.Producto producto = new Modelo.Producto(Id, Codigo, Descripcion, CategoriaSeleccionada.Key, Proveedores, Suelto, Costo, Precio, Habilitado, StockMinimo, StockOptimo, StockActual, Sesion.Usuario.Alias);
     await ProductoService.Guardar(producto);
 }