示例#1
0
        public override bool Save()
        {
            logger.Info("Запись документа...");
            var valid = new QSValidator <Income> (UoWGeneric.Root);

            if (valid.RunDlgIfNotValid((Gtk.Window)Toplevel))
            {
                return(false);
            }

            var ask = new GtkQuestionDialogsInteractive();

            Entity.UpdateOperations(UoW, ask);
            if (Entity.Id == 0)
            {
                Entity.CreationDate = DateTime.Now;
            }
            UoWGeneric.Save();
            if (Entity.Operation == IncomeOperations.Return)
            {
                logger.Debug("Обновляем записи о выданной одежде в карточке сотрудника...");
                Entity.UpdateEmployeeWearItems();
                UoWGeneric.Commit();
            }

            logger.Info("Ok");
            return(true);
        }
示例#2
0
        void CreateOrder()
        {
            var employee = _employeeRepository.GetEmployeeForCurrentUser(UoWGeneric);
            var order    = Order.CreateFromServiceClaim(Entity, employee);

            UoWGeneric.Save(order);
            UoWGeneric.Commit();
            var orderDlg = new OrderDlg(order);

            TabParent.AddTab(orderDlg, this);
        }
示例#3
0
        public override bool Save()
        {
            var all             = _deliveryScheduleRepository.All(UoWGeneric);
            var notArchivedList = all.Where(ds => ds.IsArchive == false && ds.From == Entity.From && ds.To == Entity.To).ToList();

            if (notArchivedList.Any() && UoWGeneric.Root.IsArchive == false)
            {            //при архивировании интервала эти проверки не нужны
                //есть вероятность, что среди активных интервалов есть дубликаты, так что берем первый
                var active = notArchivedList.First();
                MessageDialogHelper.RunWarningDialog("Уже существует интервал с таким же периодом.\n" +
                                                     "Создание нового интервала невозможно.\n" +
                                                     "Существующий интервал:\n" +
                                                     $"Код: {active.Id}\n" +
                                                     $"Название: {active.Name}\n" +
                                                     $"Период: {active.DeliveryTime}\n");
                return(false);                // нашли активный
            }

            var archivedList = all.Where(ds => ds.IsArchive && ds.From == Entity.From && ds.To == Entity.To).ToList();

            if (archivedList.Any() && UoWGeneric.Root.IsArchive == false)
            {            //при архивировании интервала эти проверки не нужны
                //т.к. интервалы нельзя удалять, архивными могут быть несколько, так что берем первый
                var archived = archivedList.First();
                if (MessageDialogHelper.RunQuestionDialog("Уже существует архивный интервал с таким же периодом.\n" +
                                                          "Создание нового интервала невозможно.\n" +
                                                          "Разархивировать существующий интервал?"))
                {                //отменяем изменения текущей сущности интервала и обновляем найденный архивный
                    UoWGeneric.Delete(UoWGeneric.Root);
                    archived.IsArchive = false;
                    UoWGeneric.Save(archived);
                    UoWGeneric.Commit();
                    MessageDialogHelper.RunInfoDialog("Разархивирован интервал:\n" +
                                                      $"Код: {archived.Id}\n" +
                                                      $"Название: {archived.Name}\n" +
                                                      $"Период: {archived.DeliveryTime}\n");
                }
                return(false);                // нашли/разархивировали старый
            }

            var valid = new QSValidator <DeliverySchedule> (UoWGeneric.Root);

            if (valid.RunDlgIfNotValid((Gtk.Window) this.Toplevel))
            {
                return(false);
            }

            logger.Info("Сохраняем график доставки...");
            UoWGeneric.Save();
            return(true);
        }
示例#4
0
        public override bool Save()
        {
            if (!Validate())
            {
                return(false);
            }
            if (Entity.Id == 0)
            {
                Entity.CreationDate = DateTime.Now;
            }

            logger.Info("Запись документа...");

            if (Entity.Items.Any(x => x.IsWriteOff) && Entity.WriteOffDoc == null)
            {
                Entity.WriteOffDoc               = new Writeoff();
                Entity.WriteOffDoc.Date          = Entity.Date;
                Entity.WriteOffDoc.CreatedbyUser = Entity.CreatedbyUser;
            }

            Entity.CleanupItems();
            Entity.CleanupItemsWriteOff();
            Entity.UpdateOperations(UoW, baseParameters, interactive);
            Entity.UpdateIssuanceSheet();
            if (Entity.IssuanceSheet != null)
            {
                UoW.Save(Entity.IssuanceSheet);
            }

            Entity.UpdateIssuedWriteOffOperation();

            if (Entity.WriteOffDoc != null)
            {
                UoW.Save(Entity.WriteOffDoc);
            }

            UoWGeneric.Save();
            logger.Debug("Обновляем записи о выданной одежде в карточке сотрудника...");
            Entity.UpdateEmployeeWearItems();
            UoWGeneric.Commit();
            logger.Info("Ok");
            return(true);
        }
        public override bool Save()
        {
            if (!Validate())
            {
                return(false);
            }
            if (Entity.Id == 0)
            {
                Entity.CreationDate = DateTime.Now;
            }

            logger.Info("Запись документа...");
            var progressPage = NavigationManager.OpenViewModel <ProgressWindowViewModel>(this);
            var progress     = progressPage.ViewModel.Progress;

            var employeeItemGroups = Entity.Items.GroupBy(x => x.Employee);

            //О подсчете прогресса, метод UpdateEmployeeWearItems использует умноженное на 2 количество сотрудников, как шагов прогресса.
            progress.Start(maxValue: employeeItemGroups.Count() * 2 + 2, text: "Подготовка...");
            Entity.CleanupItems();
            Entity.UpdateOperations(UoW, baseParameters, interactive);
            progress.Add(text: "Обновление ведомости...");
            Entity.UpdateIssuanceSheet();
            if (Entity.IssuanceSheet != null)
            {
                UoW.Save(Entity.IssuanceSheet);
            }

            UoWGeneric.Save();
            logger.Debug("Обновляем записи о выданной одежде в карточке сотрудника...");
            Entity.UpdateEmployeeWearItems(progress);
            progress.Add(text: "Сохранение в базу данных...");
            UoWGeneric.Commit();
            progress.Close();
            logger.Info("Ok");
            NavigationManager.ForceClosePage(progressPage, CloseSource.FromParentPage);
            return(true);
        }