예제 #1
0
        protected override void Execute(NativeActivityContext context)
        {
            _context = context;
            ResultOutArgument.Set(context, true);

            var workId = WorkId.Get(_context);

            if (!workId.HasValue)
            {
                ShowMessage("Разработчику: В БП не указана работа");
                ResultOutArgument.Set(context, false);
                return;
            }

            using (var mgr = IoC.Instance.Resolve <IBaseManager <Work> >())
                CurrentWork = mgr.Get(workId.Value);

            if (CurrentWork == null)
            {
                ShowMessage("Разработчику: Не найдена работа с кодом " + workId.Value);
                ResultOutArgument.Set(context, false);
                return;
            }

            ResultOutArgument.Set(context, OpenCloseInArgumentArgument.Get(context) ? AddMe() : CloseMyWorkings());
        }
예제 #2
0
        private bool CheckMe(decimal?workerId)
        {
            if (!workerId.HasValue)
            {
                ShowMessage(string.Format("К пользователю '{0}' не привязан работник. Невозможно создать выполнение работы", WMSEnvironment.Instance.AuthenticatedUser.GetSignature()));
                return(false);
            }

            if (!OpenCloseInArgumentArgument.Get(_context))
            {
                return(true);
            }

            var workerFilter = string.Format("{0} = {1} and {2} = {3} and {4} is null"
                                             , Working.WORKERID_RPropertyName
                                             , workerId.Value
                                             , Working.WORKID_RPropertyName
                                             , CurrentWork.GetKey()
                                             , Working.WORKINGTILLPropertyName);

            var warehouseCode = WarehouseCode.Get(_context);
            var filter        = GetWorkersFilter(false); // в данном случае неважно, есть ли working

            filter += (!string.IsNullOrEmpty(filter) ? " and " : string.Empty) +
                      string.Format("(workerid = {0})", workerId);
            Worker[] items;
            using (var mgr = IoC.Instance.Resolve <IBaseManager <Worker> >())
                items = mgr.GetFiltered(filter, GetModeEnum.Partial).ToArray();
            if (items.Length == 0)
            {
                ShowMessage(
                    string.Format(
                        "Сотрудник (код '{0}') не существует или не привязан к складу (код '{1}') на даты работ",
                        workerId, warehouseCode));
                return(false);
            }

            using (var mgr = IoC.Instance.Resolve <IBaseManager <Working> >())
            {
                var workingItems = mgr.GetFiltered(workerFilter, GetModeEnum.Partial).ToArray();
                if (workingItems.Length > 0)
                {
                    var action = ShowMessage(string.Format("Сотрудник '{0}' уже выполняет работу (код '{1}'). Создать новую детализацию?", items.FirstOrDefault().WorkerFIO, CurrentWork.GetKey()), "Внимание!", MessageBoxButton.YesNo, MessageBoxImage.Warning);
                    return(action == MessageBoxResult.Yes);
                }
            }

            return(true);
        }