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)); }
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); } }
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); } }
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)); }
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 })); }