private void AddInternalTraffic(YExternalTraffic newExternalTraffic, YInternalTraffic newInternalTraffic, CustomUnitOfWork uow) { newInternalTraffic.ExternalTraffic = newExternalTraffic; newInternalTraffic.Status = uow.Session.Query <YInternalTrafficStatus>().Single(i => i.StatusCode == "VISITOR_PLAN"); // есть разгрузка - создаем груз на приход if (newInternalTraffic.PurposeVisit.PurposeVisitCode.ToUpper() == "UNLOADING") { var cargoIwb = new WmsCargoIWB { InternalTraffic = newInternalTraffic, CargoIWBStampState = "NORMAL" }; uow.RegisterNew(cargoIwb); } // есть погрузка - создаем груз на расход if (newInternalTraffic.PurposeVisit.PurposeVisitCode.ToUpper() == "LOADING") { var cargoOwb = new WmsCargoOWB { InternalTraffic = newInternalTraffic }; uow.RegisterNew(cargoOwb); } }
private void ProcessSavingLogic(CustomUnitOfWork uow) { // проверяем текущего работника var strWorkerId = WmsEnvironment.LocalData.GetValueFor <string>("WorkerID"); if (string.IsNullOrEmpty(strWorkerId)) { throw new LogicException("Не указан текущий работник"); } // получаем рейс var newExtTraffics = uow.NewItems.OfType <YExternalTraffic>().ToList(); if (newExtTraffics.Count == 0) { throw new LogicException("Ожидалось добавление нового рейса"); } if (newExtTraffics.Count > 1) { throw new LogicException("Ожидалось добавление только одного нового рейса"); } var newExternalTraffic = newExtTraffics[0]; // проверяем внешние рейсы var newInternalTraffics = uow.NewItems.OfType <YInternalTraffic>().ToArray(); CheckInternalTraffic(newInternalTraffics); // водитель, машина уже должны быть заполнены if (newExternalTraffic.ExternalTrafficDriver == null) { throw new LogicException("Не указан водитель"); } if (newExternalTraffic.Vehicle == null) { throw new LogicException("Не указан автмобиль"); } // заполняем обязательные поля рейса newExternalTraffic.Status = uow.Session.Query <YExternalTrafficStatus>().Single(i => i.StatusCode == "CAR_PLAN"); newExternalTraffic.ExternalTrafficVerified = false; // регистрируем, чтобы появилась id uow.Session.Save(newExternalTraffic); // обрабатываем внутренние рейсы foreach (var newInternalTraffic in newInternalTraffics) { AddInternalTraffic(newExternalTraffic, newInternalTraffic, uow); } var cpvPassWorkerL1 = new YExternalTrafficCPV() { CustomParam = uow.Session.Query <WmsCustomParam>().Single(i => i.CustomParamCode == "PassWorkerL1"), EXTERNALTRAFFIC = newExternalTraffic }; // регистрируем, чтобы появилась id uow.Session.Save(cpvPassWorkerL1); var cpvPassWorkerWritePassL2 = new YExternalTrafficCPV() { CustomParam = uow.Session.Query <WmsCustomParam>().Single(i => i.CustomParamCode == "PassWorkerAcceptEntryL2"), EXTERNALTRAFFIC = newExternalTraffic, Parent = cpvPassWorkerL1, CPVValue = strWorkerId }; uow.RegisterNew(cpvPassWorkerWritePassL2); }