public IActionResult AjustarInventario(TomaViewModel viewModel) { try { viewModel.Borrador = false; var toma = GestionaToma(viewModel); var ajuste = map.AjustarInventario(toma.Id); var kardex = kardexMap.CreateKardexAM(ajuste, (int)ajuste.Id); return(Json(new { success = true, idAjuste = ajuste.Id })); } catch (Exception ex) { AltivaLog.Log.Insertar(ex.ToString(), "Error"); throw; } }
public ActionResult CrearEditarAjuste(AjusteViewModel viewModel, IList <AjusteInventarioViewModel> detalle, IList <long> eliminadas) { try { if (viewModel.Id != 0) { var ajuste = map.Update(viewModel); var ajusteKardex = map.ViewModelToDomain(map.DomainToViewModel(ajuste)); if (detalle.Count() > 0 || eliminadas.Count() > 0) { IList <TbPrAjusteInventario> ajusteInventario = new List <TbPrAjusteInventario>(); //va a contener todos los id de los detalles eliminados, actualizados y creados para despues consultarlos con todos sus datos IList <long> detallesId = new List <long>(); //va a contener solo los detalles creados IList <long> delKardex = new List <long>(); if (eliminadas.Count() > 0) { foreach (var item in eliminadas) { detallesId.Add(item); ///lista para revesar cambios en kardex //delKardex.Add(item); } } if (detalle.Count() > 0) { foreach (var item in detalle) { item.IdAjuste = ajuste.Id; if (item.Id != 0) { eliminadas.Add(item.Id); detallesId.Add(item.Id); item.Id = 0; } } ajusteInventario = map.CreateOrUpdateAI(detalle); foreach (var i in ajusteInventario) { delKardex.Add(i.Id); detallesId.Add(i.Id); } } if (detallesId.Count() > 0) { ////obtiene lineas con todos los datos para insertar en el kardex var ajusteTemp = service.GetAjusteForKardex((int)ajuste.Id, detallesId); if (detalle.Count() > 0) { ////lista sin lineas eliminadas .Where(d => idDetalles.Any(idD => idD == d.Id)).ToList(), /// ajusteKardex.TbPrAjusteInventario = ajusteTemp.TbPrAjusteInventario.Where(d => delKardex.Any(idD => idD == d.Id)).ToList(); var kardex = kardexMap.CreateKardexAM(ajusteKardex, (int)ajuste.Id); } if (eliminadas.Count() > 0) { ajusteKardex.TbPrAjusteInventario = ajusteTemp.TbPrAjusteInventario.Where(d => eliminadas.Any(id => id == d.Id)).ToList(); kardexMap.CreateKardexDeletedAM(ajusteKardex); service.DeleteAjusteInventario(eliminadas); } } } } else { viewModel.IdUsuario = int.Parse(User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value); viewModel.FechaCreacion = DateTime.Now; var ajuste = map.Create(viewModel); foreach (var item in detalle) { item.IdAjuste = ajuste.Id; } ajuste.TbPrAjusteInventario = map.CreateOrUpdateAI(detalle); ////obtiene lineas con todos los datos para insertar en el kardex var ajusteKardex = service.GetAjusteForKardex((int)ajuste.Id, ajuste.TbPrAjusteInventario.Select(d => d.Id).ToList()); var kardex = kardexMap.CreateKardexAM(ajusteKardex, (int)ajuste.Id); } return(Json(new { success = true })); } catch (Exception ex) { AltivaLog.Log.Insertar(ex.ToString(), "Error"); throw; } }