public ActionResult Delete(Motiv motiv) { motivRepository.Delete(motiv); IList <Motiv> motivs = motivRepository.GetAll(); return(View(new GridModel(motivs))); }
public static Operation rebuildOperation(Operation inOperation, List <string> excludeProperty) { Operation outOperation = null; if (inOperation != null) { outOperation = new Operation(inOperation.Id); outOperation.DocNumber = inOperation.DocNumber; outOperation.DocDate = inOperation.DocDate; outOperation.Note = inOperation.Note; outOperation.Wear = inOperation.Wear; if (outOperation.Wear == null) { outOperation.Wear = inOperation.Storage.Wear; } outOperation.Quantity = inOperation.Quantity; outOperation.OperDate = inOperation.OperDate; outOperation.Partner = rebuildStorageName(inOperation.Partner); if (!isExclude(excludeProperty, "StorageName")) { outOperation.StorageName = rebuildStorageName(inOperation.StorageName, rebuildExcludeProperty(excludeProperty, "StorageName")); } OperType ot = new OperType(inOperation.OperType.Id, inOperation.OperType.Name); outOperation.OperType = ot; if (!isExclude(excludeProperty, "Storage")) { outOperation.Storage = rebuildStorage(inOperation.Storage, rebuildExcludeProperty(excludeProperty, "Storage")); } if (!isExclude(excludeProperty, "DocType")) { if (inOperation.DocType != null) { DocType doct = new DocType(inOperation.DocType.Id, inOperation.DocType.Name); outOperation.DocType = doct; } } if (!isExclude(excludeProperty, "WorkerWorkplace")) { WorkerWorkplace wwp = new WorkerWorkplace(); Organization org = new Organization(); Worker worker = new Worker(); wwp.Organization = org; wwp.Worker = worker; if (inOperation.WorkerWorkplace != null) { wwp = rebuildWorkerWorkplaceSimple(inOperation.WorkerWorkplace, rebuildExcludeProperty(excludeProperty, "WorkerWorkplace")); } outOperation.WorkerWorkplace = wwp; } if (inOperation.Motiv != null) { Motiv m = new Motiv(inOperation.Motiv.Id, inOperation.Motiv.Name); outOperation.Motiv = m; } } return(outOperation); }
public void SaveOnHand(HttpResponseBase response, string loadDate, int operTypeId, IEnumerable <HttpPostedFileBase> attachments) { // The Name of the Upload component is "attachments" IFormatProvider culture = new System.Globalization.CultureInfo("ru-RU", true); DateTime operationDate; DateTime.TryParseExact(loadDate, DataGlobals.DATE_FORMAT_FULL_YEAR, null, System.Globalization.DateTimeStyles.None, out operationDate); if (operationDate == Null_Date) { response.Write("Ошибка в дате операции!<br/>"); response.Flush(); return; } foreach (var file in attachments) { // Some browsers send file names with full path. This needs to be stripped. var isError = false; var fileName = Path.GetFileName(file.FileName); response.Write("Обрабатывается файл <b>" + fileName + "</b><br/>"); response.Flush(); var physicalFilePath = Path.Combine(Server.MapPath("~/TempFiles"), fileName); try { if (System.IO.File.Exists(physicalFilePath)) { System.IO.File.Delete(physicalFilePath); } try { file.SaveAs(physicalFilePath); } catch (Exception e) { response.Write("Ошибка при охранении файла на сервере:<br/>"); response.Write(e.Message); response.Flush(); isError = true; } System.Data.DataTable table = null; string workSheetNames = ""; if (!isError) { try { ExcelReader excelReader = new ExcelReader(physicalFilePath, true); if (excelReader.workSheetNames.Length > 0) { workSheetNames = excelReader.workSheetNames[0]; table = excelReader.GetWorksheet(workSheetNames); } else { response.Write("В файле не найден рабочий лист!<br/>"); response.Flush(); isError = true; } } catch (Exception e) { response.Write("Ошибка при открытии файла:<br/>"); response.Write(e.Message); response.Flush(); isError = true; } } if (table != null) { response.Write("Загрузка данных производится из листа с именем '" + workSheetNames.Trim(new[] { '$' }) + "'<br/>"); response.Flush(); if (!table.Columns.Contains("Табельный номер")) { response.Write("Файл содержит не коррекные данные ('Табельный номер').<br/>"); response.Flush(); isError = true; } if (!table.Columns.Contains("Номенклатурный номер")) { response.Write("Файл содержит не коррекные данные ('Номенклатурный номер').<br/>"); response.Flush(); isError = true; } if (!table.Columns.Contains("Дата выдачи")) { response.Write("Файл содержит не коррекные данные ('Дата выдачи').<br/>"); response.Flush(); isError = true; } if (!table.Columns.Contains("Кол-во")) { response.Write("Файл содержит не коррекные данные ('Кол-во').<br/>"); response.Flush(); isError = true; } /* * if (!table.Columns.Contains("Период")) * { * response.Write("Файл содержит не коррекные данные ('Период').<br/>"); * response.Flush(); * isError = true; * } */ int colTabN = table.Columns.IndexOf("Табельный номер"); int colNomenclature = table.Columns.IndexOf("Номенклатурный номер"); int colDate = table.Columns.IndexOf("Дата выдачи"); int colCount = table.Columns.IndexOf("Кол-во"); int colUsePeriod = -1; if (!table.Columns.Contains("Период")) { colUsePeriod = table.Columns.IndexOf("Период"); } if (!isError) { // DataRow[] result = table.Select("F2 = '*' and F3=" + storageName.Plant + " and F4 in (" + storageName.StorageNumber + ")"); DataRow[] result = table.Select(); Dictionary <string, object> queryParams = new Dictionary <string, object>(); Dictionary <string, object> orderParams = new Dictionary <string, object>(); int idOrg = int.Parse(getCurrentEnterpriseId()); Organization currentOrg = organizationRepository.Get(idOrg); Motiv motiv = motivRepository.Get(DataGlobals.MOTIVID_TRANSFER); foreach (DataRow row in result) // Loop over the rows. { if (row[colTabN] != System.DBNull.Value) { int tabN = int.Parse(row[colTabN].ToString()); int quantity = 0; if (!int.TryParse(row[colCount].ToString(), out quantity)) { response.Write("У человека с Таб.№ " + tabN + " ошибка в кол-ве!<br/>"); response.Flush(); continue; } DateTime startDate; String rowDate = row[colDate].ToString(); if (rowDate.IndexOf(' ') > 0) { rowDate = rowDate.Substring(0, rowDate.IndexOf(' ')); } DateTime.TryParseExact(rowDate, DataGlobals.DATE_FORMAT_FULL_YEAR, null, System.Globalization.DateTimeStyles.None, out startDate); if (startDate == Null_Date) { response.Write("У человека с Таб.№ " + tabN + " ошибочная дата выдачи!<br/>"); response.Flush(); continue; } if (startDate > DateTime.Now) { response.Write("У человека с Таб.№ " + tabN + " дата выдачи больше текущей даты!<br/>"); response.Flush(); continue; } int useperiod = 0; if (colUsePeriod >= 0) { useperiod = int.Parse(row[colUsePeriod].ToString()); } // Ищем id работника по табельному номеру, если не находим, то не берем его queryParams.Clear(); queryParams.Add("RootOrganization", currentOrg.Id); //queryParams.Add("IsActive", true); queryParams.Add("TabN", tabN); Worker correntWorker = workerRepository.FindOne(queryParams); if (correntWorker == null) { response.Write("Человека с Таб.№ " + tabN + " нет в базе!<br/>"); response.Flush(); continue; } // Ищем ID рабочего места queryParams.Clear(); queryParams.Add("RootOrganization", currentOrg.Id); queryParams.Add("Worker", correntWorker); // Будем ипользовать последнее место работы orderParams.Clear(); orderParams.Add("BeginDate", DESC); orderParams.Add("IsActive", DESC); IList <WorkerWorkplace> workerWorkplaces = workerWorkplaceRepository.GetByLikeCriteria(queryParams, orderParams); // Ищем id номенклатуры на руках( сверила все номенклатуры, в справочнике есть все) queryParams.Clear(); queryParams.Add("Organization", currentOrg); queryParams.Add("ExternalCode", row[colNomenclature].ToString()); queryParams.Add("IsActive", true); IList <Nomenclature> nomenclatures = nomenclatureRepository.GetByLikeCriteria(queryParams); if (nomenclatures.Count == 0) { queryParams.Clear(); queryParams.Add("Organization", currentOrg); queryParams.Add("ExternalCode", row[colNomenclature].ToString()); queryParams.Add("IsActive", false); nomenclatures = nomenclatureRepository.GetByLikeCriteria(queryParams); if (nomenclatures.Count == 0) { response.Write("Номенклатура с № " + row[colNomenclature].ToString() + " не найдена в системе!<br/>"); response.Flush(); continue; } } // Ищем склад queryParams.Clear(); queryParams.Add("AreaCode", workerWorkplaces[0].Organization.AreaCode); queryParams.Add("Organization", currentOrg); //StorageName storageName = storageNameRepository.FindOne(queryParams); StorageName storageName = workerWorkplaces[0].Organization.StorageName; if (storageName == null) { response.Write("Для человека с Таб.№ " + tabN + "не найден склад!<br/>"); response.Flush(); continue; } operationRepository.DbContext.BeginTransaction(); try { // Ищем есть ли подобная позиция на складе (номенклатура+рост+размер), считаем, что % годностиу всех 100 // Если не находим, то добавляем запись на склад с нулевым кол-вом queryParams.Clear(); queryParams.Add("StorageName", storageName); queryParams.Add("Nomenclature", nomenclatures[0]); queryParams.Add("Wear", "100"); Storage storage = storageRepository.FindOne(queryParams); if (storage == null) { storage = new Storage(); storage.StorageName = storageName; storage.Nomenclature = nomenclatures[0]; storage.Quantity = 0; storage.Wear = "100"; storageRepository.SaveOrUpdate(storage); storage.NomBodyPartSize = nomenclatures[0].NomBodyPartSize; storage.Growth = nomenclatures[0].Growth; } OperType operType = operTypeRepository.Get(operTypeId); //OperType operType = operTypeRepository.Get(DataGlobals.OPERATION_WORKER_IN); //OperType operType = operTypeRepository.Get(DataGlobals.OPERATION_STORAGE_TRANSFER_IN); // Добавляем операцию постановки на забаланс , вместо последней выдачи queryParams.Clear(); queryParams.Add("OperType", operType); queryParams.Add("DocNumber", "0"); queryParams.Add("Storage", storage); queryParams.Add("WorkerWorkplace", workerWorkplaces[0]); Operation operation = operationRepository.FindOne(queryParams); if (operation == null) { operation = new Operation(); operation.DocNumber = "0"; if (operType.Id == DataGlobals.OPERATION_STORAGE_TRANSFER_IN) { operation.DocDate = operationDate; operation.OperDate = operationDate; operation.Motiv = motiv; } else { operation.DocDate = startDate; operation.OperDate = startDate; } operation.OperType = operType; operation.Organization = storageName.Organization; operation.Quantity = quantity; operation.Wear = "100"; operation.StorageName = storageName; operation.Storage = storage; operation.WorkerWorkplace = workerWorkplaces[0]; if (operation.OperType.Id == DataGlobals.OPERATION_WORKER_IN) { operation.GiveOperation = operation; } operationRepository.SaveOrUpdate(operation); } // Формируем личную карточку // Если нет шапки формируеруем шапку queryParams.Clear(); queryParams.Add("WorkerWorkplace", workerWorkplaces[0]); WorkerCardHead workerCardHead = workerCardHeadRepository.FindOne(queryParams); if (workerCardHead == null) { workerCardHead = new WorkerCardHead(); workerCardHead.WorkerWorkplace = workerWorkplaces[0]; workerCardHeadRepository.SaveOrUpdate(workerCardHead); } // Формируем содержание личной карточки queryParams.Clear(); queryParams.Add("Operation", operation); queryParams.Add("WorkerCardHead", workerCardHead); WorkerCardContent workerCardContent = workerCardContentRepository.FindOne(queryParams); if (workerCardContent == null) { workerCardContent = new WorkerCardContent(); workerCardContent.Operation = operation; workerCardContent.Quantity = quantity; workerCardContent.Storage = storage; workerCardContent.WorkerCardHead = workerCardHead; workerCardContent.StartDate = startDate; workerCardContent.UsePeriod = useperiod; workerCardContentRepository.SaveOrUpdate(workerCardContent); } operationRepository.DbContext.CommitTransaction(); } catch (Exception e) { operationRepository.DbContext.RollbackTransaction(); response.Write("Ошибка при сохранении данных в БД:<br/>"); response.Write(e.Message); response.Write("<br/>"); if (e.InnerException != null) { response.Write(e.InnerException.Message); response.Write("<br/>"); } isError = true; response.Flush(); } } } response.Flush(); } response.Flush(); } if (!isError) { response.Write("Файл успешно обработан!"); } } finally { System.IO.File.Delete(physicalFilePath); } } }
// public ActionResult Update(string id) //public ActionResult Update(WorkerNorma workerNorma) public ActionResult Update([Bind(Prefix = "updated")] IEnumerable <WorkerNorma> workerNormas) { //int workerWorkplaceId = (int)HttpContext.Cache.Get("workerWorkplaceId"); int workerWorkplaceId = (int)Session["workerWorkplaceId"]; string docNumber = null; DateTime?docDate = null; OperType operType = null; DateTime?operDate = null; Motiv motiv = null; Cause cause = null; Dictionary <string, object> query = new Dictionary <string, object>(); query.Add("Id", workerWorkplaceId); WorkerWorkplace workerWorkplace = workerWorkplaceRepository.Get(workerWorkplaceId); query.Clear(); query.Add("WorkerWorkplace", workerWorkplace); WorkerCardHead workerCardHead = workerCardRepository.FindOne(query); if (workerNormas != null) { int i = -1; foreach (var workerNorma in workerNormas) { i++; if (i == 0) { docNumber = workerNorma.DocNumber; //DateTime docDate = DateTime.ParseExact(workerNorma.DocDate, DataGlobals.DATE_FORMAT, null); docDate = workerNorma.DocDate; operType = operTypeRepository.Get(workerNorma.OperTypeId); motiv = motivRepository.Get(workerNorma.MotivId); query.Clear(); query.Add("Id", workerNorma.CauseId); cause = causeRepository.FindOne(query); operDate = workerNorma.DocDate; if (DateTime.Today > operDate) { operDate = operDate.Value.AddHours(21).AddMinutes(0).AddSeconds(0); } else { operDate = operDate.Value.AddHours(DateTime.Now.Hour).AddMinutes(DateTime.Now.Minute).AddSeconds(DateTime.Now.Second); } } if (workerNorma.PutQuantity <= 0) { continue; } WorkerCardContent workerCardContentPresent = getWorkerCard(workerNorma.Id, workerCardHead); if (workerNorma.PutQuantity <= 0) { ModelState.AddModelError(workerCardContentPresent.Storage.Nomenclature.Name, "Списать можно кол-во больше 0"); } if (workerNorma.PutQuantity > workerCardContentPresent.Quantity) { ModelState.AddModelError(workerCardContentPresent.Storage.Nomenclature.Name, "Списать можно не больше чем есть на руках"); } if (string.IsNullOrEmpty(docNumber) || docDate == null) { ModelState.AddModelError("updated[" + i + "].StorageName", "Номер и дата документа должны быть заполнены"); } string periodDateStr = getConfigParamValue(configRepository, "periodDate", getCurrentEnterpriseId()); string periodIsClosed = getConfigParamValue(configRepository, "periodIsClosed", getCurrentEnterpriseId()); DateTime periodDate; DateTime.TryParseExact(periodDateStr, DataGlobals.DATE_FORMAT_FULL_YEAR, null, System.Globalization.DateTimeStyles.None, out periodDate); // проверка на закрытие периода if (periodIsClosed != null && periodIsClosed.Equals("1") && periodDate > operDate) { ModelState.AddModelError(operDate + ": ", "Период закрыт для изменений"); } } if (ModelState.IsValid) { foreach (var workerNorma in workerNormas) { if (workerNorma.PutQuantity <= 0) { continue; } WorkerCardContent workerCardContentPresent = getWorkerCard(workerNorma.Id, workerCardHead); Operation oper = new Operation(); oper.OperDate = operDate.Value; oper.OperType = operTypeRepository.Get(DataGlobals.OPERATION_WORKER_OUT); oper.Organization = organizationRepository.Get(workerWorkplace.RootOrganization); oper.Quantity = workerNorma.PutQuantity; oper.Storage = workerCardContentPresent.Storage; oper.DocNumber = docNumber; oper.DocDate = docDate.Value; oper.WorkerWorkplace = workerWorkplace; oper.Motiv = motiv; oper.Cause = cause; oper.OperType = operType; oper.GiveOperation = workerCardContentPresent.GiveOperation; //workerCardContentPresent.Operation = oper; //workerCardContentPresent.Quantity -= oper.Quantity; if (workerNorma.PutQuantity == workerCardContentPresent.Quantity) { workerCardHead.WorkerCardContents.Remove(workerCardContentPresent); } //Теперь позиции на карточки не удаляем // workerCardContentRepository.Delete(workerCardContentPresent); operationRepository.SaveOrUpdate(oper); if (workerNorma.PutQuantity == workerCardContentPresent.Quantity) { workerCardContentPresent.OperReturn = oper; workerCardContentPresent.Quantity = 0; workerCardContentPresent.EndDate = oper.OperDate; } else { workerCardContentPresent.Quantity = workerCardContentPresent.Quantity - workerNorma.PutQuantity; WorkerCardContent wcc = new WorkerCardContent(); wcc.Quantity = 0; wcc.StartDate = workerCardContentPresent.StartDate; wcc.EndDate = operDate.Value; wcc.WorkerCardHead = workerCardContentPresent.WorkerCardHead; wcc.Storage = workerCardContentPresent.Storage; wcc.Operation = workerCardContentPresent.Operation; wcc.OperReturn = oper; wcc.NormaContent = workerCardContentPresent.NormaContent; wcc.GiveOperation = workerCardContentPresent.GiveOperation; workerCardContentRepository.SaveOrUpdate(wcc); } workerCardContentRepository.SaveOrUpdate(workerCardContentPresent); //workerCardRepository.SaveOrUpdate(workerCardHead); } } } return(Select(workerWorkplaceId, (string)Session["workerWorkplaceText"])); }