示例#1
0
        private async Task BitacoraAsync(string accion, SalidaDetalle salidaDetalle, Guid salidaId, string excepcion = "")
        {
            string directorioBitacora = _configuration.GetValue <string>("DirectorioBitacora");

            await _getHelper.SetBitacoraAsync(token, accion, moduloId,
                                              salidaDetalle, salidaId.ToString(), directorioBitacora, excepcion);
        }
        public ActionResult Crear(int id)
        {
            var nuevaSalidaDetalle = new SalidaDetalle();

            nuevaSalidaDetalle.SalidaID = id;

            var productos = _productosBL.ObtenerProductos();

            ViewBag.ProductoId = new SelectList(productos, "Id", "Descripcion");

            return(View(nuevaSalidaDetalle));
        }
        public ActionResult Crear(SalidaDetalle salidaDetalle)
        {
            if (ModelState.IsValid)
            {
                if (salidaDetalle.ProductoId == 0)
                {
                    ModelState.AddModelError("ProductoId", "Seleccione un producto");
                    return(View(salidaDetalle));
                }

                _salidaBL.GuardarSalidaDetalle(salidaDetalle);
                return(RedirectToAction("Index", new { id = salidaDetalle.SalidaID }));
            }

            var productos = _productosBL.ObtenerProductos();

            ViewBag.ProductoId = new SelectList(productos, "Id", "Descripcion");

            return(View(salidaDetalle));
        }
示例#4
0
        private void dgvSalidasDetalle_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            //Para realizar las validaciones
               try
               {
               //Posicionado en renglon}
               if (e.ColumnIndex == 0)
               {
                   if (TieneRepetidoRenglon(Convert.ToInt32(dgvSalidasDetalle[e.ColumnIndex, e.RowIndex].Value)))
                   {
                       bisSalidaDetalle.RemoveAt(e.RowIndex);
                       MessageBox.Show(@"Articulo Repetido, Verifique . .",
                                        @"Almacenes", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   }
                   else
                   {

                       var objArticuloId = new ArticuloId(Convert.ToInt32(dgvSalidasDetalle[e.ColumnIndex, e.RowIndex].Value),
                                                           FrmAlmacen.AlmacenActual);
                       var objArticulo = SalidaService.ArticuloDao.Get(objArticuloId);
                       if (objArticulo != null)
                       {
                           var objSalidaDetalle = new SalidaDetalle
                           {
                               Articulo = objArticulo,
                               Clave = objArticulo.Id.CveArt,
                               Unidad = objArticulo.CatUnidad,
                               Existencia = SalidaService.EntradaDetalleDao.ExistenciaTotal(objArticulo.Id.CveArt,
                               FrmAlmacen.AlmacenActual.IdAlmacen)
                           };
                           bisSalidaDetalle.RemoveAt(e.RowIndex);
                           bisSalidaDetalle.Insert(e.RowIndex, objSalidaDetalle);
                       }
                       else
                       {
                           bisSalidaDetalle.RemoveAt(e.RowIndex);
                           MessageBox.Show(@"La Clave del Articulo No Existe, Verifique . .",
                                   @"Almacenes", MessageBoxButtons.OK, MessageBoxIcon.Information);
                       }
                       return;
                   }
               }

               if (e.ColumnIndex == 5)
               {
                   if (Convert.ToDecimal(dgvSalidasDetalle[e.ColumnIndex, e.RowIndex].Value) > Convert.ToDecimal(dgvSalidasDetalle[3, e.RowIndex].Value))
                   {
                       MessageBox.Show(@"Existencia Insuficiente, Verifique . .",
                                       @"Almacenes", MessageBoxButtons.OK, MessageBoxIcon.Error);
                       dgvSalidasDetalle[e.ColumnIndex, e.RowIndex].Value = "";
                   }
               }

               }
               catch (Exception ee)
               {
               MessageBox.Show(@"Ocurrio un error en la insercion del Articulo " + ee.Message,
                    @"Almacenes", MessageBoxButtons.OK, MessageBoxIcon.Error);
               }
        }
示例#5
0
        private void CargaSalida(int intNumeroSalida)
        {
            SalidaActual = SalidaService.SalidaDao.CargaSalida(dtFechaSalida.Value.Year,
                            FrmAlmacen.AlmacenActual.IdAlmacen, intNumeroSalida, FrmAcceso.UsuarioLog.IdUsuario);
            if (SalidaActual != null)
            {
                bisSalida.DataSource = SalidaActual;

                var tmp = SalidaService.SalidaDetalleDao.CargaSumSurtida(SalidaActual.IdSalida);

                //Agregamos Renglon )
                foreach (var salidaDetalle in tmp)
                {
                    var objArticuloId = new ArticuloId((int)salidaDetalle[0], FrmAlmacen.AlmacenActual);
                    var objArticulo = SalidaService.ArticuloDao.Get(objArticuloId);
                    if (objArticulo != null)
                    {
                        var objSalidaDetalle = new SalidaDetalle
                        {
                            Articulo = objArticulo,
                            Clave = objArticulo.Id.CveArt,
                            Unidad = objArticulo.CatUnidad,
                            Existencia = SalidaService.EntradaDetalleDao.ExistenciaTotal(objArticulo.Id.CveArt,
                            FrmAlmacen.AlmacenActual.IdAlmacen),
                            CantidadPedida = (decimal)salidaDetalle[1],
                            CantidadSurtida = (decimal)salidaDetalle[2]
                        };
                        bisSalidaDetalle.Add(objSalidaDetalle);
                    }
                }

                SalidaService.CargaArea(cmbArea, FrmAlmacen.AlmacenActual.IdAlmacen.Contains("C") ? "C" : "N",
                    SalidaActual.CatArea.CveArea);

                if (SalidaService.CierreDao.CierreExiste(FrmAlmacen.AlmacenActual.IdAlmacen, dtFechaSalida.Value.Month,
                                                             dtFechaSalida.Value.Year))
                {
                    MessageBox.Show(@"Ya Existe Cierre de Mes, No Puede Modificar la Salida . . ",
                                    @"Almacenes", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
                else
                {
                    if (FrmAlmacen.AlmacenActual.IdAlmacen.Contains("P"))
                    {
                        lblNoOrden.Visible = true;
                        txtNoOrden.Visible = true;
                        txtNoOrden.Enabled = true;
                    }
                    else
                    {
                        lblNoOrden.Visible = false;
                        txtNoOrden.Visible = false;
                        txtNoOrden.Enabled = false;
                    }
                    txtCveArea.Enabled = true;
                    cmbArea.Enabled = true;
                    cmbEntrego.Enabled = true;
                    txtVoBo.Enabled = true;
                    txtRecibio.Enabled = true;
                    btnGuardar.Enabled = true;
                    dgvSalidasDetalle.Enabled = true;
                }
                txtNumeroSalida.Enabled = false;
                dtFechaSalida.Enabled = false;
            }
            else
            {
                MessageBox.Show(@"El Numero de Salida No Existe o Fue Capturado Por Otro Usuario, Verifique . .",
                                            @"Almacenes", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
示例#6
0
        public async Task <IActionResult> EditDetails(SalidaDetalle salidaDetalle)
        {
            var validateToken = await ValidatedToken(_configuration, _getHelper, "movimiento");

            if (validateToken != null)
            {
                return(validateToken);
            }

            if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura))
            {
                return(RedirectToAction(nameof(Index)));
            }

            if (salidaDetalle == null)
            {
                TempData["toast"] = "Identificador incorrecto.";
                return(RedirectToAction(nameof(Index)));
            }

            if (SalidaAplicada(salidaDetalle.SalidaID))
            {
                TempData["toast"] = "Salida aplicada no se permiten cambios.";
                return(RedirectToAction(nameof(Details), new { id = salidaDetalle.SalidaID }));
            }

            if (salidaDetalle.AlmacenID == null)
            {
                ModelState.AddModelError("AlmacenID", "El campo almacén es requerido.");
                return(View(salidaDetalle));
            }

            if (salidaDetalle.ProductoID == null)
            {
                ModelState.AddModelError("ProductoID", "El campo producto es requerido.");
                return(View(salidaDetalle));
            }

            var almacen = await _getHelper.GetAlmacenByIdAsync((Guid)salidaDetalle.AlmacenID);

            var producto = await _getHelper.GetProductByIdAsync((Guid)salidaDetalle.ProductoID);

            TempData["toast"] = "Información incompleta, verifique los campos.";
            if (ModelState.IsValid)
            {
                if (almacen == null)
                {
                    ModelState.AddModelError("AlmacenID", "El campo almacén es requerido.");
                    return(View(salidaDetalle));
                }

                if (producto == null)
                {
                    ModelState.AddModelError("ProductoID", "El campo producto es requerido.");
                    return(View(salidaDetalle));
                }

                if (producto.Unidades.Pieza)
                {
                    salidaDetalle.Cantidad = (int)salidaDetalle.Cantidad;
                }

                var existencia = await _context.Existencias
                                 .FirstOrDefaultAsync(e => e.ProductoID == producto.ProductoID &&
                                                      e.AlmacenID == almacen.AlmacenID);

                if (existencia == null || (existencia.ExistenciaEnAlmacen - salidaDetalle.Cantidad) < 0)
                {
                    ModelState.AddModelError("Cantidad", "La cantidad excede a la cantidad en inventario.");
                    return(View(salidaDetalle));
                }

                if (producto.Unidades.Pieza)
                {
                    salidaDetalle.Cantidad = (int)salidaDetalle.Cantidad;
                }

                salidaDetalle.PrecioCosto = producto.PrecioCosto;

                try
                {
                    _context.Update(salidaDetalle);

                    await _context.SaveChangesAsync();

                    TempData["toast"] = "Los datos del producto fueron actualizados correctamente.";
                    await BitacoraAsync("Actualizar", salidaDetalle, salidaDetalle.SalidaID);

                    return(RedirectToAction(nameof(Details), new { id = salidaDetalle.SalidaID }));
                }
                catch (Exception ex)
                {
                    string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString();

                    TempData["toast"] = "[Error] Los datos del producto no fueron actualizados.";
                    await BitacoraAsync("Actualizar", salidaDetalle, salidaDetalle.SalidaID, excepcion);
                }
            }

            salidaDetalle.Productos = producto;

            return(View(salidaDetalle));
        }
示例#7
0
        public async Task <IActionResult> AddDetails(SalidaDetalle salidaDetalle)
        {
            var validateToken = await ValidatedToken(_configuration, _getHelper, "movimiento");

            if (validateToken != null)
            {
                return(validateToken);
            }

            if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura))
            {
                return(RedirectToAction(nameof(Index)));
            }

            if (salidaDetalle == null)
            {
                TempData["toast"] = "Identificador incorrecto.";
                return(RedirectToAction(nameof(Index)));
            }

            if (SalidaAplicada(salidaDetalle.SalidaID))
            {
                TempData["toast"] = "Salida aplicada no se permiten cambios.";
                return(RedirectToAction(nameof(Details), new { id = salidaDetalle.SalidaID }));
            }

            if (salidaDetalle.AlmacenID == null)
            {
                TempData["toast"] = "El campo almacén es requerido.";
                ModelState.AddModelError("AlmacenID", "El campo almacén es requerido.");
                return(View(salidaDetalle));
            }

            if (salidaDetalle.ProductoID == null)
            {
                TempData["toast"] = "El campo producto es requerido.";
                ModelState.AddModelError("ProductoID", "El campo producto es requerido.");
                return(View(salidaDetalle));
            }

            var almacen = await _getHelper.GetAlmacenByIdAsync((Guid)salidaDetalle.AlmacenID);

            var producto = await _getHelper.GetProductByIdAsync((Guid)salidaDetalle.ProductoID);

            TempData["toast"] = "Falta información en algún campo.";
            if (ModelState.IsValid)
            {
                if (almacen == null)
                {
                    TempData["toast"] = "El campo almacén es requerido.";
                    ModelState.AddModelError("AlmacenID", "El campo almacén es requerido.");
                    return(View(salidaDetalle));
                }

                if (producto == null)
                {
                    TempData["toast"] = "El campo producto es requerido.";
                    ModelState.AddModelError("ProductoID", "El campo producto es requerido.");
                    return(View(salidaDetalle));
                }

                var existencia = await _context.Existencias
                                 .FirstOrDefaultAsync(e => e.ProductoID == producto.ProductoID &&
                                                      e.AlmacenID == almacen.AlmacenID);

                salidaDetalle.Almacenes = almacen;
                salidaDetalle.Productos = producto;

                var cantidadTotalPorProducto = await _context.SalidasDetalle
                                               .Where(s => s.SalidaID == salidaDetalle.SalidaID &&
                                                      s.ProductoID == salidaDetalle.ProductoID &&
                                                      s.AlmacenID == salidaDetalle.AlmacenID)
                                               .SumAsync(s => s.Cantidad);

                if (existencia == null ||
                    (existencia.ExistenciaEnAlmacen - (cantidadTotalPorProducto + salidaDetalle.Cantidad)) < 0)
                {
                    ModelState.AddModelError("Cantidad", "La cantidad excede a la cantidad en inventario.");
                    return(View(salidaDetalle));
                }

                try
                {
                    salidaDetalle.SalidaDetalleID = Guid.NewGuid();

                    if (producto.Unidades.Pieza)
                    {
                        salidaDetalle.Cantidad = (int)salidaDetalle.Cantidad;
                    }

                    salidaDetalle.PrecioCosto = producto.PrecioCosto;

                    _context.Add(salidaDetalle);

                    await _context.SaveChangesAsync();

                    TempData["toast"] = "Los datos del producto fueron almacenados correctamente.";
                    await BitacoraAsync("Alta", salidaDetalle, salidaDetalle.SalidaID);

                    return(View(new SalidaDetalle()
                    {
                        AlmacenID = salidaDetalle.AlmacenID,
                        Almacenes = almacen,
                        SalidaID = salidaDetalle.SalidaID,
                        Cantidad = 0,
                        PrecioCosto = 0,
                    }));
                }
                catch (Exception ex)
                {
                    string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString();

                    TempData["toast"] = "[Error] Los datos del producto no fueron almacenados.";
                    ModelState.AddModelError(string.Empty, "Error al guardar registro");
                    await BitacoraAsync("Alta", salidaDetalle, salidaDetalle.SalidaID, excepcion);
                }
            }

            salidaDetalle.Almacenes = almacen;
            salidaDetalle.Productos = producto;
            return(View(salidaDetalle));
        }
 public ActionResult Eliminar(SalidaDetalle salidaDetalle)
 {
     _salidaBL.EliminarSalidaDetalle(salidaDetalle.Id);
     return(RedirectToAction("Index", new { id = salidaDetalle.SalidaID }));
 }