private async Task BitacoraAsync(string accion, VentaCanceladaViewModel ventaCancelada, Guid usuarioId, string excepcion = "") { string directorioBitacora = _configuration.GetValue <string>("DirectorioBitacora"); await _getHelper.SetBitacoraAsync(token, accion, moduloId, ventaCancelada, usuarioId.ToString(), directorioBitacora, excepcion); }
public async Task <IActionResult> SetCancelSale(Guid?id) { var validateToken = await ValidatedToken(_configuration, _getHelper, "movimiento"); if (validateToken != null) { return(Json(new { Reiniciar = true, Error = true })); } if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura)) { return(Json(new { Reiniciar = true, Error = true })); } if (id == null || id == Guid.Empty) { TempData["toast"] = "Identificador de la venta incorrecto."; return(Json(new { Reiniciar = true, Error = true })); } var ventaNoAplicada = await _context.VentasNoAplicadas .FirstOrDefaultAsync(v => v.VentaNoAplicadaID == id); if (ventaNoAplicada == null) { TempData["toast"] = "Identificador de la venta incorrecto."; return(Json(new { Reiniciar = true, Error = true })); } var ventasNoAplicadasDetalle = await _context.VentasNoAplicadasDetalle .Where(v => v.VentaNoAplicadaID == id).ToListAsync(); if (ventasNoAplicadasDetalle == null || ventasNoAplicadasDetalle.Count == 0) { return(Json(new { Estatus = "No hay registros para cancelar.", Error = true })); } ventaNoAplicada.Fecha = DateTime.Now; _context.Update(ventaNoAplicada); Guid ventaCanceladaId = Guid.NewGuid(); VentaCancelada ventaCancelada = new VentaCancelada(); ventaCancelada = new VentaCancelada() { Fecha = DateTime.Now, UsuarioID = token.UsuarioID, VentaCanceladaID = ventaCanceladaId, VentaCompleta = true }; _context.VentasCanceladas.Add(ventaCancelada); List <VentaCanceladaDetalle> ventasCanceladasDetalle = new List <VentaCanceladaDetalle>(); foreach (var item in ventasNoAplicadasDetalle) { VentaCanceladaDetalle ventaCanceladaDetalle = new VentaCanceladaDetalle() { Cantidad = item.Cantidad, PrecioVenta = item.PrecioVenta, ProductoID = item.ProductoID, VentaCanceladaID = ventaCanceladaId, VentaCanceladaDetalleID = Guid.NewGuid() }; ventasCanceladasDetalle.Add(ventaCanceladaDetalle); _context.VentasCanceladasDetalle.Add(ventaCanceladaDetalle); _context.Remove(item); } VentaCanceladaViewModel ventaCanceladaViewModel = new VentaCanceladaViewModel() { VentasCanceladas = ventaCancelada, VentasCanceladasDetalle = ventasCanceladasDetalle }; try { await _context.SaveChangesAsync(); await BitacoraAsync("SetCancelSale", ventaCanceladaViewModel, token.UsuarioID); return(Json(new { Error = false })); } catch (Exception ex) { string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString(); await BitacoraAsync("SetCancelSale", ventaCanceladaViewModel, token.UsuarioID, excepcion); return(Json(new { Estatus = "Cancelación no realizada.", Error = true })); } }