public ActionResult CancelOper(string storageNameId, string docNumber, string docDate) { IFormatProvider culture = new System.Globalization.CultureInfo("ru-RU", true); string format = "dd.MM.yyyy"; DateTime docDt = DateTime.ParseExact(docDate, format, culture); Dictionary <string, object> query = new Dictionary <string, object>(); query.Add("DocNumber", docNumber); query.Add("DocDate", docDt); query.Add("OperType.Id", DataGlobals.OPERATION_STORAGE_WEAR_OUT); IList <Operation> operations = operationRepository.GetByLikeCriteria(query); foreach (var item in operations) { Storage storage = item.Storage; storage.Quantity += item.Quantity; storageRepository.SaveOrUpdate(storage); operationRepository.Delete(item); } return(null); }
public void Storno(int id, int workerWorkplaceId, int StorageNameId) { Operation oper = operationRepository.Get(id); Operation operTransfer = oper.TransferOperation; if (oper == null) { ModelState.AddModelError("Сторнирование операции", "Операция не найдена!"); } else { if (oper.RefOperation != null) { ModelState.AddModelError("Сторнирование операции", "Повторное сторнирование операции!"); } } Dictionary <string, object> queryParams = new Dictionary <string, object>(); //Если операция связана с МОЛ if (oper.OperType.Id.In(DataGlobals.OPERATION_MOL_STORAGE_IN, /*Возврат дежурной на склад*/ DataGlobals.OPERATION_MOL_STORAGE_OUT, /*Выдача дежурной МОЛ со склада*/ DataGlobals.OPERATION_MOL_OUT, /*Списание дежурной с МОЛ*/ DataGlobals.OPERATION_MOL_WORKER_IN, /*Выдача дежурной от МОЛ работнику*/ DataGlobals.OPERATION_MOL_WORKER_RETURN, /*Возврат дежурной от работника МОЛ*/ DataGlobals.OPERATION_MOL_MOVE_OUT, /*Перевод дежурной. Списание с забаланса*/ DataGlobals.OPERATION_MOL_MOVE_IN /*Перевод дежурной. Постановка на забаланс*/)) { queryParams.Clear(); queryParams.Add("Operation", oper); var list = matPersonCardContentRepository.GetByCriteria(queryParams); MatPersonCardContent mpcc = null; if (list.Count > 0) { mpcc = list[0]; } else { ModelState.AddModelError("Сторнирование операции", "У МОЛ не найдена номенклатура для сторнирования!"); } queryParams.Clear(); queryParams.Add("Worker.Id", workerWorkplaceId); var mpchList = matPersonCardHeadRepository.GetByLikeCriteria(queryParams); MatPersonCardHead mpch = null; if (mpchList.Count > 0) { mpch = mpchList[0]; } queryParams.Clear(); queryParams.Add("MatPersonCardHead", mpch); queryParams.Add("Operation.Organization", oper.Organization); queryParams.Add("[in]Operation.OperType.Id", DataGlobals.OPERATION_MOL_STORAGE_IN + "," + /*Возврат дежурной на склад*/ DataGlobals.OPERATION_MOL_STORAGE_OUT + "," + /*Выдача дежурной МОЛ со склада*/ DataGlobals.OPERATION_MOL_OUT + "," + /*Списание дежурной с МОЛ*/ DataGlobals.OPERATION_MOL_WORKER_IN + "," + /*Выдача дежурной от МОЛ работнику*/ DataGlobals.OPERATION_MOL_WORKER_RETURN + "," + /*Возврат дежурной от работника МОЛ*/ DataGlobals.OPERATION_MOL_MOVE_OUT + "," + /*Перевод дежурной. Списание с забаланса*/ DataGlobals.OPERATION_MOL_MOVE_IN /*Перевод дежурной. Постановка на забаланс*/); queryParams.Add("[]Operation.RefOperation", null); queryParams.Add("[>]Operation.DocDate", oper.DocDate); var mpcclist = matPersonCardContentRepository.GetByCriteria(queryParams); if (mpcclist.Count > 0) { ModelState.AddModelError("Сторнирование операции", "У МОЛ была операция, которая по дате позже сторнируемой!"); } if (ModelState.IsValid) { if (oper.OperType.Id == DataGlobals.OPERATION_MOL_STORAGE_IN) { if (mpcc.Storage.Quantity < Math.Abs(mpcc.Quantity)) { ModelState.AddModelError("Сторнирование операции", "На складе не хватает номенклатуры!"); } else { // Т.к. при операции возврата mpcc.Quantity отрицательное, то нужно его * на -1 mpcc.Storage.Quantity = mpcc.Storage.Quantity - (-1) * mpcc.Quantity; } } if (oper.OperType.Id == DataGlobals.OPERATION_MOL_STORAGE_OUT) { mpcc.Storage.Quantity = mpcc.Storage.Quantity + mpcc.Quantity; } } // if (oper.OperType.Id == DataGlobals.OPERATION_MOL_OUT) { } if (oper.OperType.Id == DataGlobals.OPERATION_MOL_WORKER_IN || oper.OperType.Id == DataGlobals.OPERATION_MOL_WORKER_RETURN) { queryParams.Clear(); WorkerCardContent wcc = null; if (oper.OperType.Id == DataGlobals.OPERATION_MOL_WORKER_IN) { queryParams.Add("Operation", oper); } else { queryParams.Add("OperReturn", oper); } wcc = workerCardContentRepository.FindOne(queryParams); if (wcc == null) { ModelState.AddModelError("Сторнирование операции", "Не найдена номенклатура на карточке. Сторнирование не возможно! "); } if (wcc.OperReturn != null) { ModelState.AddModelError("Сторнирование выдачи", "У работника был возврат этой номенклатуры!"); } if ((wcc.Quantity - oper.Quantity) < 0) { ModelState.AddModelError("Сторнирование выдачи", "У работника на руках меньше кол-во номенклатуры!"); } if (ModelState.IsValid) { wcc.Quantity = wcc.Quantity - oper.Quantity; } } //Для операции "Перевод между МОЛ" обработка особая if (oper.OperType.Id == DataGlobals.OPERATION_MOL_MOVE_OUT || oper.OperType.Id == DataGlobals.OPERATION_MOL_MOVE_IN) { //Ищем операции для обоих МОЛ. queryParams.Clear(); queryParams.Add("DocNumber", oper.DocNumber); queryParams.Add("Organization", oper.Organization); queryParams.Add("Storage", oper.Storage); queryParams.Add("OperDate", oper.OperDate); queryParams.Add("DocDate", oper.DocDate); queryParams.Add("[in]OperType.Id", DataGlobals.OPERATION_MOL_MOVE_OUT + "," + DataGlobals.OPERATION_MOL_MOVE_IN); IList <Operation> listOper = operationRepository.GetByLikeCriteria(queryParams); if (listOper.Count != 2) { ModelState.AddModelError("Сторнирование перевода", "Не найдены операции по перемещению между МОЛ в достаточном кол-ве!"); } else { string docNumber = operationRepository.GetNextDocNumber(DataGlobals.OPERATION_STORAGE_TRANSFER_OUT, getCurrentEnterpriseId()); foreach (var item in listOper) { Operation stornoOper = new Operation(); MatPersonCardContent stornoMpcc = new MatPersonCardContent(); queryParams.Clear(); queryParams.Add("Operation", item); var l = matPersonCardContentRepository.GetByCriteria(queryParams); MatPersonCardContent findMpcc = null; if (l.Count > 0) { stornoOper.Quantity = -1 * Math.Abs(item.Quantity); stornoOper.DocDate = item.DocDate; stornoOper.DocNumber = docNumber; stornoOper.DocType = item.DocType; stornoOper.IsCorporate = item.IsCorporate; stornoOper.Motiv = item.Motiv; stornoOper.OperDate = item.OperDate; stornoOper.OperType = item.OperType; stornoOper.Organization = item.Organization; stornoOper.RefOperation = item; stornoOper.Storage = item.Storage; stornoOper.StorageName = item.StorageName; stornoOper.TransferOperation = item.TransferOperation; stornoOper.Wear = item.Wear; stornoOper.WorkerWorkplace = item.WorkerWorkplace; operationRepository.SaveOrUpdate(stornoOper); item.RefOperation = stornoOper; operationRepository.SaveOrUpdate(item); findMpcc = l[0]; stornoMpcc.MatPersonCardHead = findMpcc.MatPersonCardHead; stornoMpcc.Quantity = -1 * findMpcc.Quantity; stornoMpcc.Storage = findMpcc.Storage; stornoMpcc.Wear = findMpcc.Wear; stornoMpcc.Operation = stornoOper; stornoMpcc.OperType = findMpcc.OperType; stornoMpcc.OperDate = findMpcc.OperDate; matPersonCardContentRepository.SaveOrUpdate(stornoMpcc); } else { ModelState.AddModelError("Сторнирование операции", "У МОЛ не найдена номенклатура для сторнирования перевода!"); break; } } } } if (ModelState.IsValid) { if (oper.OperType.Id.In(DataGlobals.OPERATION_MOL_STORAGE_IN, /*Возврат дежурной на склад*/ DataGlobals.OPERATION_MOL_STORAGE_OUT, /*Выдача дежурной МОЛ со склада*/ DataGlobals.OPERATION_MOL_OUT, /*Списание дежурной с МОЛ*/ DataGlobals.OPERATION_MOL_WORKER_IN, /*Выдача дежурной от МОЛ работнику*/ DataGlobals.OPERATION_MOL_WORKER_RETURN /*Возврат дежурной от работника МОЛ*/)) { if (oper.OperType.Id.In(DataGlobals.OPERATION_MOL_STORAGE_IN, /*Возврат дежурной на склад*/ DataGlobals.OPERATION_MOL_STORAGE_OUT /*Выдача дежурной МОЛ со склада*/)) { DateTime maxStornoDate = remainRepository.GetMaxRemainDate(StorageNameId); maxStornoDate = remainRepository.GetActialRemainDate(StorageNameId, maxStornoDate); DateTime paramDateFrom = new DateTime(oper.OperDate.Year, oper.OperDate.Month, oper.OperDate.Day); paramDateFrom = paramDateFrom.AddMonths(1); paramDateFrom = paramDateFrom.AddDays(-1 * (paramDateFrom.Day - 1)); Remaind remain = null; if (maxStornoDate >= paramDateFrom) { queryParams.Clear(); queryParams.Add("RemaindDate", paramDateFrom); queryParams.Add("StorageName", oper.Storage.StorageName); queryParams.Add("Storage", oper.Storage); Dictionary <string, object> orderParams = new Dictionary <string, object>(); remain = remainRepository.FindOne(queryParams); //Если в остатках такой записи не оказалось, то создаем ее if (remain == null) { remain = new Remaind(); remain.RemaindDate = paramDateFrom; remain.Storage = oper.Storage; remain.StorageName = oper.Storage.StorageName; remain.Nomenclature = oper.Storage.Nomenclature; remain.Wear = int.Parse(oper.Storage.Wear); remain.NomBodyPartSize = oper.Storage.NomBodyPartSize; remain.Growth = oper.Storage.Growth; remain.Quantity = 0; } } if (remain != null) { remain.Quantity = remain.Quantity + (-1 * mpcc.Quantity); remainRepository.SaveOrUpdate(remain); } } Operation stornoOper = new Operation(); stornoOper.DocDate = oper.DocDate; string docNumber = ""; if (oper.OperType.Id == DataGlobals.OPERATION_MOL_STORAGE_IN || oper.OperType.Id == DataGlobals.OPERATION_MOL_WORKER_RETURN) { docNumber = operationRepository.GetNextDocNumber(DataGlobals.OPERATION_WORKER_RETURN, getCurrentEnterpriseId()); } else if (oper.OperType.Id == DataGlobals.OPERATION_MOL_STORAGE_OUT || oper.OperType.Id == DataGlobals.OPERATION_MOL_WORKER_IN) { docNumber = operationRepository.GetNextDocNumber(DataGlobals.OPERATION_WORKER_IN, getCurrentEnterpriseId()); } else if (oper.OperType.Id == DataGlobals.OPERATION_MOL_OUT) { docNumber = operationRepository.GetNextDocNumber(DataGlobals.OPERATION_MOL_OUT, getCurrentEnterpriseId()); } else { docNumber = oper.DocNumber; } stornoOper.DocNumber = docNumber; stornoOper.DocType = oper.DocType; stornoOper.Motiv = oper.Motiv; stornoOper.Note = oper.Note; stornoOper.OperDate = oper.OperDate; stornoOper.OperType = oper.OperType; stornoOper.Organization = oper.Organization; stornoOper.Partner = oper.Partner; stornoOper.Quantity = -1 * Math.Abs(oper.Quantity); stornoOper.Storage = oper.Storage; stornoOper.StorageName = oper.StorageName; stornoOper.Wear = oper.Wear; stornoOper.WorkerWorkplace = oper.WorkerWorkplace; stornoOper.RefOperation = oper; operationRepository.SaveOrUpdate(stornoOper); oper.RefOperation = stornoOper; operationRepository.SaveOrUpdate(oper); MatPersonCardContent stornoMpcc = new MatPersonCardContent(); stornoMpcc.MatPersonCardHead = mpcc.MatPersonCardHead; stornoMpcc.Quantity = -1 * mpcc.Quantity; stornoMpcc.Storage = mpcc.Storage; stornoMpcc.Wear = mpcc.Wear; stornoMpcc.Operation = stornoOper; stornoMpcc.OperType = mpcc.OperType; stornoMpcc.OperDate = mpcc.OperDate; matPersonCardContentRepository.SaveOrUpdate(stornoMpcc); } } } //Если операция связана с карточкой else { WorkerCardContent wcc = null; if (oper.OperType.Id == DataGlobals.OPERATION_WORKER_IN || oper.OperType.Id == DataGlobals.OPERATION_STORAGE_TRANSFER_IN) { queryParams.Add("Operation", oper); } else { queryParams.Add("OperReturn", oper); } wcc = workerCardContentRepository.FindOne(queryParams); if (wcc == null) { ModelState.AddModelError("Сторнирование операции", "Не найдена номенклатура на карточке. Сторнирование не возможно! "); } Remaind remain = null; Storage stor = null; if (ModelState.IsValid) { DateTime maxStornoDate = remainRepository.GetMaxRemainDate(StorageNameId); maxStornoDate = remainRepository.GetActialRemainDate(StorageNameId, maxStornoDate); DateTime paramDateFrom = new DateTime(oper.OperDate.Year, oper.OperDate.Month, oper.OperDate.Day); paramDateFrom = paramDateFrom.AddMonths(1); paramDateFrom = paramDateFrom.AddDays(-1 * (paramDateFrom.Day - 1)); if (maxStornoDate >= paramDateFrom) { queryParams.Clear(); queryParams.Add("RemaindDate", paramDateFrom); //DateTime paramDateTo = new DateTime(oper.OperDate.Year, oper.OperDate.Month, oper.OperDate.Day); //paramDateTo = paramDateTo.AddMonths(1); //paramDateTo = paramDateTo.AddDays(-1 * paramDateTo.Day); //queryParams.Add("[<=]RemaindDate", paramDateTo); queryParams.Add("StorageName", oper.Storage.StorageName); queryParams.Add("Storage", oper.Storage); Dictionary <string, object> orderParams = new Dictionary <string, object>(); remain = remainRepository.FindOne(queryParams); //Если в остатках такой записи не оказалось, то создаем ее if (remain == null) { remain = new Remaind(); remain.RemaindDate = paramDateFrom; remain.Storage = oper.Storage; remain.StorageName = oper.Storage.StorageName; remain.Nomenclature = oper.Storage.Nomenclature; remain.Wear = int.Parse(oper.Storage.Wear); remain.NomBodyPartSize = oper.Storage.NomBodyPartSize; remain.Growth = oper.Storage.Growth; remain.Quantity = 0; } } stor = storageRepository.Get(oper.Storage.Id); //Сторнируем выдачу работнику if (oper.OperType.Id == DataGlobals.OPERATION_WORKER_IN) { if (wcc.OperReturn != null) { ModelState.AddModelError("Сторнирование выдачи", "У работника был возврат этой номенклатуры!"); } if ((wcc.Quantity - oper.Quantity) < 0) { ModelState.AddModelError("Сторнирование выдачи", "У работника на руках меньше кол-во номенклатуры!"); } if (ModelState.IsValid) { wcc.Quantity = wcc.Quantity - oper.Quantity; stor.Quantity = stor.Quantity + oper.Quantity; if (remain != null) { remain.Quantity = remain.Quantity + oper.Quantity; } } } //Сторнируем возврат работником if (oper.OperType.Id == DataGlobals.OPERATION_WORKER_RETURN) { if (((stor.Quantity - oper.Quantity) < 0) & (oper.Wear != "0")) { ModelState.AddModelError("Сторнирование возврата", "На складе не хватает заданной номенклатуры!"); } else { wcc.OperReturn = null; wcc.EndDate = Null_Date; wcc.Quantity = wcc.Quantity + oper.Quantity; // Если не утиль, то обновляем склад if (oper.Wear != "0") { stor.Quantity = stor.Quantity - oper.Quantity; } } if (remain != null) { if (((remain.Quantity - oper.Quantity) < 0) & (oper.Wear != "0")) { ModelState.AddModelError("Сторнирование возврата", "После этой операции произошло снятие остатков в конце месяца. В этих остатках не хватает кол-ва!"); } else { wcc.Quantity = wcc.Quantity + oper.Quantity; // Если не утиль, то обновляем склад if (oper.Wear != "0") { stor.Quantity = stor.Quantity - oper.Quantity; } } } } //Сторнируем списание с работника if (oper.OperType.Id == DataGlobals.OPERATION_WORKER_OUT || oper.OperType.Id == DataGlobals.OPERATION_WORKER_OUT_TIME) { if (wcc.Quantity == 0) { wcc.OperReturn = null; wcc.EndDate = Null_Date; } wcc.Quantity = wcc.Quantity + oper.Quantity; } //Сторнируем перевод работника состояние на личных карточках if (oper.OperType.Id == DataGlobals.OPERATION_STORAGE_TRANSFER_IN || oper.OperType.Id == DataGlobals.OPERATION_STORAGE_TRANSFER_OUT) { queryParams.Clear(); if (oper.OperType.Id == DataGlobals.OPERATION_STORAGE_TRANSFER_IN) { queryParams.Add("Operation", oper); wcc = workerCardContentRepository.FindOne(queryParams); workerCardContentRepository.Delete(wcc); queryParams.Clear(); queryParams.Add("OperReturn", operTransfer); wcc = workerCardContentRepository.FindOne(queryParams); if (wcc.Quantity == 0) { wcc.OperReturn = null; wcc.EndDate = Null_Date; } wcc.Quantity = wcc.Quantity + oper.Quantity; } if (oper.OperType.Id == DataGlobals.OPERATION_STORAGE_TRANSFER_OUT) { queryParams.Clear(); queryParams.Add("Operation", operTransfer); wcc = workerCardContentRepository.FindOne(queryParams); workerCardContentRepository.Delete(wcc); queryParams.Clear(); queryParams.Add("OperReturn", oper); wcc = workerCardContentRepository.FindOne(queryParams); if (wcc.Quantity == 0) { wcc.OperReturn = null; wcc.EndDate = Null_Date; } wcc.Quantity = wcc.Quantity + oper.Quantity; } } } if (ModelState.IsValid) { workerCardContentRepository.SaveOrUpdate(wcc); //Если не списание с работника if (oper.OperType.Id != DataGlobals.OPERATION_WORKER_OUT) { // Если не утиль, то обновляем склад if (oper.Wear != "0") { storageRepository.SaveOrUpdate(stor); } } Operation stornoOper = new Operation(); stornoOper.DocDate = oper.DocDate; // stornoOper.DocNumber = oper.DocNumber; string docNumber = ""; if (oper.OperType.Id == DataGlobals.OPERATION_WORKER_RETURN || oper.OperType.Id == DataGlobals.OPERATION_WORKER_IN) { docNumber = operationRepository.GetNextDocNumber(oper.OperType.Id, getCurrentEnterpriseId()); } else if (oper.OperType.Id == DataGlobals.OPERATION_STORAGE_TRANSFER_IN || oper.OperType.Id == DataGlobals.OPERATION_STORAGE_TRANSFER_OUT) { docNumber = operationRepository.GetNextDocNumber(DataGlobals.OPERATION_STORAGE_TRANSFER_OUT, getCurrentEnterpriseId()); } else { docNumber = oper.DocNumber; } stornoOper.DocNumber = docNumber; stornoOper.DocType = oper.DocType; stornoOper.Motiv = oper.Motiv; stornoOper.Note = oper.Note; stornoOper.OperDate = oper.OperDate; stornoOper.OperType = oper.OperType; stornoOper.Organization = oper.Organization; stornoOper.Partner = oper.Partner; stornoOper.Quantity = -1 * oper.Quantity; stornoOper.Storage = oper.Storage; stornoOper.StorageName = oper.StorageName; stornoOper.Wear = oper.Wear; stornoOper.WorkerWorkplace = oper.WorkerWorkplace; stornoOper.RefOperation = oper; stornoOper.TransferOperation = oper; operationRepository.SaveOrUpdate(stornoOper); oper.RefOperation = stornoOper; oper.TransferOperation = stornoOper; operationRepository.SaveOrUpdate(oper); // Если операция перевода, то сторнируем связанную с ней if (operTransfer != null) { Operation stornoTranserOper = new Operation(); stornoTranserOper.DocDate = oper.DocDate; // stornoOper.DocNumber = oper.DocNumber; // Номер документа сторно будет новый, такой же как у первой операции stornoTranserOper.DocNumber = docNumber; stornoTranserOper.DocType = operTransfer.DocType; stornoTranserOper.Motiv = operTransfer.Motiv; stornoTranserOper.Note = operTransfer.Note; stornoTranserOper.OperDate = operTransfer.OperDate; stornoTranserOper.OperType = operTransfer.OperType; stornoTranserOper.Organization = operTransfer.Organization; stornoTranserOper.Partner = operTransfer.Partner; stornoTranserOper.Quantity = -1 * operTransfer.Quantity; stornoTranserOper.Storage = operTransfer.Storage; stornoTranserOper.StorageName = operTransfer.StorageName; stornoTranserOper.Wear = operTransfer.Wear; stornoTranserOper.WorkerWorkplace = operTransfer.WorkerWorkplace; stornoTranserOper.RefOperation = operTransfer; operationRepository.SaveOrUpdate(stornoTranserOper); operTransfer.RefOperation = stornoTranserOper; operationRepository.SaveOrUpdate(operTransfer); } //Если не списание с работника if (oper.OperType.Id == DataGlobals.OPERATION_WORKER_IN || oper.OperType.Id == DataGlobals.OPERATION_WORKER_RETURN) { if (remain != null) { remainRepository.SaveOrUpdate(remain); } } } } }
public ActionResult Select(string dateString, string dateEndString, string idStorage, int operType, int?Shops, int?Nomenclature) { IList <Operation> newList = new List <Operation>(); Dictionary <string, object> queryParams = new Dictionary <string, object>(); Dictionary <string, object> orderParams = new Dictionary <string, object>(); if (!(idStorage != null && idStorage != "-1")) { string idStorageC = (string)Session["idStorage"]; if (idStorageC != null) { idStorage = idStorageC; } } if (idStorage != null) { if (idStorage != "-1") { Session.Add("idStorage", idStorage); } //HttpContext.Cache.Insert("idStorage", idStorage); if (idStorage.Length > 0) { List <Storage> model = new List <Storage>(); int id = System.Int32.Parse(idStorage); queryParams.Add("Storage.StorageName.Id", id); if (dateString != null) { //HttpContext.Cache.Insert("dateString", dateString); Session.Add("dateString", dateString); Session.Add("dateEndString", dateEndString); Session.Add("operType", operType); Session.Add("Shops", Shops); Session.Add("Nomenclature", Nomenclature); queryParams.Add("Organization.Id", int.Parse(getCurrentEnterpriseId())); //IFormatProvider culture = new System.Globalization.CultureInfo("ru-RU", true); //string format = "dd.MM.yyyy"; //DateTime dt = DateTime.MinValue; DateTime dt = DateTime.ParseExact(dateString + " 00:00:00", DataGlobals.DATE_TIME_FORMAT, null); DateTime dtEnd = DateTime.ParseExact(dateEndString + " 23:59:59", DataGlobals.DATE_TIME_FORMAT, null); queryParams.Add("[>=]OperDate", dt); queryParams.Add("[<=]OperDate", dtEnd); if (operType > 0) { queryParams.Add("OperTypeId", operType); } if (Shops != null) { queryParams.Add("ShopId", (int)Shops); } if (Nomenclature != null) { queryParams.Add("NomenclatureId", (int)Nomenclature); } orderParams.Add("OperDate", ASC); IList <Operation> operations = operationRepository.GetByLikeCriteria(queryParams, orderParams); //var operations = operationRepository.GetAll(); //var rows = GetRows<Operation>(operations); List <string> excludeProperty = new List <string>(); excludeProperty.Add("Organization"); excludeProperty.Add("DocType"); excludeProperty.Add("WorkerWorkplace.Organization.NormaOrganization"); excludeProperty.Add("WorkerWorkplace.Organization.BeginDate"); excludeProperty.Add("WorkerWorkplace.Organization.RootOrganization"); excludeProperty.Add("WorkerWorkplace.Organization.Parent"); excludeProperty.Add("WorkerWorkplace.Worker.NomBodyPartSizes.NomBodyPart"); excludeProperty.Add("WorkerWorkplace.Worker.WorkerCategory"); excludeProperty.Add("WorkerWorkplace.Worker.Sex"); excludeProperty.Add("Storage.StorageName"); excludeProperty.Add("Storage.Nomenclature.Unit"); excludeProperty.Add("Storage.Nomenclature.Sex"); excludeProperty.Add("Storage.Nomenclature.NomGroup"); foreach (Operation current in operations) { Operation oper = rebuildOperation(current, excludeProperty); //if (newList.Count < 2000) newList.Add(oper); } } //return View(new GridModel(operations)); } } return(View(new GridModel(newList))); }