private DialogSourceViewModel CreateDialogModel(ActivityContext context, ValueDataField property)
        {
            var model = new DialogSourceViewModel
            {
                PanelCaption  = "Введите значение",
                FontSize      = FontSize.Get(context),
                IsMenuVisible = false,
            };

            // добавим параметр
            property.SetFocus = true;
            model.Fields.Add(property);

            var footerMenu = new List <ValueDataField>();

            var footerMenuItem = new ValueDataField
            {
                Name    = "Menu0",
                Caption = "Назад",
                Value   = "Escape"
            };

            footerMenuItem.Set(ValueDataFieldConstants.Row, 0);
            footerMenuItem.Set(ValueDataFieldConstants.Column, 0);
            footerMenu.Add(footerMenuItem);

            footerMenuItem = new ValueDataField
            {
                Name    = "Menu1",
                Caption = "Далее",
                Value   = "Enter"
            };
            footerMenuItem.Set(ValueDataFieldConstants.Row, 0);
            footerMenuItem.Set(ValueDataFieldConstants.Column, 1);
            footerMenu.Add(footerMenuItem);

            var footerMenufield = new ValueDataField
            {
                Name      = ValueDataFieldConstants.FooterMenu,
                Caption   = ValueDataFieldConstants.FooterMenu,
                FieldType = typeof(FooterMenu),
                IsEnabled = true
            };

            footerMenufield.Set(ValueDataFieldConstants.FooterMenu, footerMenu.ToArray());
            model.Fields.Add(footerMenufield);

            model.UpdateSource();
            return(model);
        }
        private DialogSourceViewModel CreateDialogModel(ValueDataField[] footerMenu)
        {
            var result = new DialogSourceViewModel
            {
                PanelCaption  = "Активные манданты",
                FontSize      = FontSize.Get(_context),
                IsMenuVisible = true,
            };

            var field = new ValueDataField
            {
                Name          = FieldName,
                FieldType     = typeof(User2Mandant),
                Caption       = string.Empty,
                LabelPosition = "Left",
                IsEnabled     = true,
                SetFocus      = true,
                CloseDialog   = true
            };

            field.Set(ValueDataFieldConstants.LookupType, RclLookupType.SelectGridControl.ToString());
            field.Set(ValueDataFieldConstants.ShowTotalRow, false);
            field.Set(ValueDataFieldConstants.ShowControlMenu, false);
            field.Set(ValueDataFieldConstants.AllowAutoShowAutoFilterRow, true);
            field.Set(ValueDataFieldConstants.ShowAutoFilterRow, false);
            field.Set(ValueDataFieldConstants.DoNotActionOnEnterKey, true);

            //Получаем поля для грида
            var names     = new[] { User2Mandant.User2MandantIsActivePropertyName, User2Mandant.MandantCodePropertyName, User2Mandant.MandantNamePropertyName, User2Mandant.MandantIDPropertyName };
            var fieldList = names.Select(propertyName => DataFieldHelper.Instance.GetDataFields(typeof(User2Mandant), SettingDisplay.List).ToList().FirstOrDefault(p => p.Name.EqIgnoreCase(propertyName)))
                            .Where(f => f != null)
                            .ToArray();


            fieldList[0].Set(ValueDataFieldConstants.ColumnWidth, "60");
            fieldList[1].Set(ValueDataFieldConstants.ColumnWidth, "100");
            fieldList[2].Set(ValueDataFieldConstants.ColumnWidth, "250");

            field.Set(ValueDataFieldConstants.Fields, fieldList);
            field.Set(ValueDataFieldConstants.ItemsSource, _user2MandantList);

            if (footerMenu != null)
            {
                field.Set(ValueDataFieldConstants.FooterMenu, footerMenu);
            }

            field.FieldName  = field.Name;
            field.SourceName = field.Name;
            result.Fields.Add(field);

            result.UpdateSource();
            return(result);
        }
Exemple #3
0
        private DialogSourceViewModel GetMainModel(NativeActivityContext context, ValueDataField property)
        {
            var model = new DialogSourceViewModel
            {
                PanelCaption  = "Введите значение",
                FontSize      = FontSize.Get(context),
                IsMenuVisible = false,
            };

            // добавим параметр
            property.SetFocus = true;
            model.Fields.Add(property);

            var footerMenuItem = new ValueDataField
            {
                Name      = "footerMenu",
                FieldType = typeof(IFooterMenu),
                Visible   = true,
                IsEnabled = true
            };

            footerMenuItem.FieldName  = footerMenuItem.Name;
            footerMenuItem.SourceName = footerMenuItem.Name;
            model.Fields.Add(footerMenuItem);

            var nextBtn = new ValueDataField
            {
                Name      = "F1",
                Caption   = "Далее",
                FieldType = typeof(Button),
            };

            nextBtn.FieldName  = nextBtn.Name;
            nextBtn.SourceName = nextBtn.Name;
            nextBtn.Value      = nextBtn.Name;
            nextBtn.Set(ValueDataFieldConstants.Row, 0);
            nextBtn.Set(ValueDataFieldConstants.Column, 1);

            footerMenuItem.Set(ValueDataFieldConstants.FooterMenu, new[] { nextBtn });

            model.UpdateSource();
            return(model);
        }
        private DialogSourceViewModel GetMainModel(NativeActivityContext context, ValueDataField property, bool canMovePrev = true)
        {
            var model = new DialogSourceViewModel
            {
                PanelCaption  = PanelCaption.Get(context),
                FontSize      = FontSize.Get(context),
                IsMenuVisible = false,
            };

            // добавим параметр
            property.SetFocus = true;
            model.Fields.Add(property);

            var footerMenuItem = new ValueDataField
            {
                Name      = "footerMenu",
                FieldType = typeof(IFooterMenu),
                Visible   = true,
                IsEnabled = true
            };

            footerMenuItem.FieldName  = footerMenuItem.Name;
            footerMenuItem.SourceName = footerMenuItem.Name;
            model.Fields.Add(footerMenuItem);

            var footerMenu = new List <ValueDataField>();

            if (canMovePrev)
            {
                var prevBtn = new ValueDataField {
                    Name = "F2", Caption = "Назад", FieldType = typeof(Button)
                };
                prevBtn.FieldName  = prevBtn.Name;
                prevBtn.SourceName = prevBtn.Name;
                prevBtn.Value      = prevBtn.Name;
                footerMenu.Add(prevBtn);
            }

            var nextBtn = new ValueDataField {
                Name = "F1", Caption = "Далее", FieldType = typeof(Button)
            };

            nextBtn.FieldName  = nextBtn.Name;
            nextBtn.SourceName = nextBtn.Name;
            nextBtn.Value      = nextBtn.Name;
            footerMenu.Add(nextBtn);

            footerMenuItem.Set(ValueDataFieldConstants.FooterMenu, footerMenu.ToArray());

            model.UpdateSource();
            return(model);
        }
        private DialogSourceViewModel GetMainModel(List <Product> prdList)
        {
            if (_mainModel == null)
            {
                _mainModel = new DialogSourceViewModel
                {
                    PanelCaption  = "Выбор товара",
                    IsMenuVisible = false,
                    FontSize      = 15
                };

                var prdLst = new ValueDataField
                {
                    Name          = ProductListModelPropertyName,
                    Caption       = string.Empty,
                    FieldType     = typeof(Product),
                    LabelPosition = "None",
                    IsEnabled     = true,
                    SetFocus      = true,
                    CloseDialog   = true
                };

                prdLst.Set(ValueDataFieldConstants.LookupType, RclLookupType.SelectGridControl.ToString());
                prdLst.Set(ValueDataFieldConstants.ShowControlMenu, true);
                prdLst.Set(ValueDataFieldConstants.AllowAutoShowAutoFilterRow, false);
                prdLst.Set(ValueDataFieldConstants.ShowAutoFilterRow, false);
                prdLst.Set(ValueDataFieldConstants.DoNotActionOnEnterKey, false);
                prdLst.Set(ValueDataFieldConstants.ItemsSource, prdList);
                prdLst.Set(ValueDataFieldConstants.CloseDialogOnSelectedItemChanged, true);

                var grdFields = GetGridFields(prdLst.FieldType, DisplaySetting);

                prdLst.Set(ValueDataFieldConstants.Fields, grdFields.ToArray());

                _mainModel.Fields.Add(prdLst);
            }
            else
            {
                _mainModel.GetField(ProductListModelPropertyName).Set(ValueDataFieldConstants.ItemsSource, prdList);
            }

            _mainModel.UpdateSource();

            return(_mainModel);
        }
        private DialogSourceViewModel GetMainModel(List <MutableTuple <Int32, PL, TE> > activePlList)
        {
            if (_mainModel == null)
            {
                _mainModel = new DialogSourceViewModel
                {
                    PanelCaption  = "Списки пикинга",
                    IsMenuVisible = false,
                    FontSize      = 15
                };

                var plLst = new ValueDataField
                {
                    Name          = PlListPropertyName,
                    Caption       = string.Empty,
                    FieldType     = typeof(MutableTuple <Int32, PL, TE>),
                    LabelPosition = "Left",
                    IsEnabled     = true,
                    SetFocus      = true,
                    CloseDialog   = true
                };

                plLst.Set(ValueDataFieldConstants.LookupType, RclLookupType.SelectGridControl.ToString());
                plLst.Set(ValueDataFieldConstants.ShowControlMenu, true);
                plLst.Set(ValueDataFieldConstants.AllowAutoShowAutoFilterRow, false);
                plLst.Set(ValueDataFieldConstants.ShowAutoFilterRow, false);
                plLst.Set(ValueDataFieldConstants.DoNotActionOnEnterKey, false);
                plLst.Set(ValueDataFieldConstants.ItemsSource, activePlList);
                plLst.Set(ValueDataFieldConstants.CloseDialogOnSelectedItemChanged, true);

                var grdFields = GetGridFields(plLst.FieldType, DisplaySetting);

                plLst.Set(ValueDataFieldConstants.Fields, grdFields.ToArray());

                _mainModel.Fields.Add(plLst);
            }
            else
            {
                _mainModel.GetField(PlListPropertyName).Set(ValueDataFieldConstants.ItemsSource, activePlList);
            }

            _mainModel.UpdateSource();

            return(_mainModel);
        }
        private ValueDataField[] CreateDialogFooterMenu()
        {
            var footerMenu     = new List <ValueDataField>();
            var footerMenuItem = new ValueDataField
            {
                Name    = "Menu0",
                Caption = "Задать",
                Value   = "F1"
            };

            footerMenuItem.Set(ValueDataFieldConstants.Row, 0);
            footerMenuItem.Set(ValueDataFieldConstants.Column, 0);
            footerMenuItem.Set(ValueDataFieldConstants.IsNotMenuButton, true);
            footerMenu.Add(footerMenuItem);

            footerMenuItem = new ValueDataField
            {
                Name    = "Menu1",
                Caption = "Изменить",
                Value   = "F2"
            };
            footerMenuItem.Set(ValueDataFieldConstants.Row, 0);
            footerMenuItem.Set(ValueDataFieldConstants.Column, 1);
            footerMenuItem.Set(ValueDataFieldConstants.IsNotMenuButton, true);
            footerMenu.Add(footerMenuItem);

            footerMenuItem = new ValueDataField
            {
                Name    = "Menu2",
                Caption = "Снять все",
                Value   = "F3"
            };
            footerMenuItem.Set(ValueDataFieldConstants.Row, 1);
            footerMenuItem.Set(ValueDataFieldConstants.Column, 0);
            footerMenuItem.Set(ValueDataFieldConstants.IsNotMenuButton, true);
            footerMenu.Add(footerMenuItem);

            footerMenuItem = new ValueDataField
            {
                Name    = "Menu3",
                Caption = "Выбрать все",
                Value   = "F4"
            };
            footerMenuItem.Set(ValueDataFieldConstants.Row, 1);
            footerMenuItem.Set(ValueDataFieldConstants.Column, 1);
            footerMenu.Add(footerMenuItem);

            footerMenuItem = new ValueDataField
            {
                Name    = "Menu4",
                Caption = "Фильтр",
                Value   = "F5"
            };
            footerMenuItem.Set(ValueDataFieldConstants.Row, 2);
            footerMenuItem.Set(ValueDataFieldConstants.Column, 0);
            footerMenu.Add(footerMenuItem);

            footerMenuItem = new ValueDataField
            {
                Name    = "Menu5",
                Caption = "Применить",
                Value   = "Enter"
            };
            footerMenuItem.Set(ValueDataFieldConstants.Row, 2);
            footerMenuItem.Set(ValueDataFieldConstants.Column, 1);
            footerMenu.Add(footerMenuItem);
            return(footerMenu.ToArray());
        }
Exemple #8
0
        protected override void Execute(NativeActivityContext context)
        {
            var entity = Entity.Get(context);
            var obj    = entity as WMSBusinessObject;

            if (obj == null)
            {
                throw new NotImplementedException(string.Format("Тип '{0}' не поддерживается", entity.GetType()));
            }
            // получим параметры MUST_SET
            var mustSetList = GetMustSetProperies(context).ToArray();

            var objFields = DataFieldHelper.Instance.GetDataFields(typeof(T), wmsMLC.General.PL.SettingDisplay.Detail);
            var history   = HistoryPropertyValue.Get(context);

            // проход по каждому параметру вперед и назад
            foreach (var m in mustSetList)
            {
                // если у параметра есть значение, то оно может быть по умолчанию
                var defaultValue = obj.GetPropertyDefaultValue(m.PmConfig.ObjectName_r);
                if (obj.GetProperty(m.PmConfig.ObjectName_r) == null || defaultValue != null || m.Show)
                {
                    var datafield = objFields.FirstOrDefault(i => i.Name.EqIgnoreCase(m.PmConfig.ObjectName_r));
                    if (datafield == null)
                    {
                        throw new DeveloperException("Ошибка в настройках {1} менеджера товара. Задан неизвестный параметр '{0}'.", m.PmConfig.ObjectName_r, m.PmConfig.MethodCode_r);
                    }

                    var field = new ValueDataField(datafield)
                    {
                        LabelPosition = "Top"
                    };

                    if (defaultValue != null)
                    {
                        field.Value = defaultValue;
                    }

                    if (m.Show)
                    {
                        field.Value = obj.GetProperty(m.PmConfig.ObjectName_r);
                    }

                    //Массовый ввод
                    if (m.Set && m.PmConfig.PMCONFIGINPUTMASS == true && history != null && history.ContainsKey(field.Name))
                    {
                        field.Value = history[field.Name];
                    }

                    if (string.IsNullOrEmpty(field.LookupCode))
                    {
                        field.CloseDialog = true;
                    }
                    else //Если поле лукап
                    {
                        field.LabelPosition = "None";
                        field.Set(ValueDataFieldConstants.LookupType, RclLookupType.SelectControl.ToString());
                        field.Set(ValueDataFieldConstants.MaxRowsOnPage, MaxRowsOnPage.Get(context));
                    }

                    var model = GetMainModel(context, field);
                    if (m.Show)
                    {
                        model.PanelCaption = model.PanelCaption + " [Опционально]";
                    }

                    while (true) // делаем это для возврата на форму
                    {
                        var show = ShowDialog(model);
                        if (!show && m.Set)
                        {
                            throw new OperationException("Не были указаны обязательные параметры.");
                        }

                        if (!show && m.Show)
                        {
                            break;
                        }

                        var errorMessage = new StringBuilder();
                        switch (string.Format("1{0}", model.MenuResult))
                        {
                        case "1":
                        case "1F1":
                            var value = model[field.Name];
                            if (value == null && m.Set)
                            {
                                errorMessage.AppendLine(string.Format("Не заполнено обязательное поле '{0}'.",
                                                                      field.Caption));
                            }
                            else
                            {
                                //Дополнительные параметры PMConfig
                                if (m.Set && !string.IsNullOrEmpty(m.PmConfig.PMCONFIGINPUTMASK) && value is string)
                                {
                                    var expressions = Regex.Matches((string)value, m.PmConfig.PMCONFIGINPUTMASK,
                                                                    RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
                                    if (expressions.Count > 0)
                                    {
                                        errorMessage.AppendLine(string.Format("Поле '{0}' не прошло проверку по маске.", field.Caption));
                                    }
                                }

                                if (errorMessage.Length == 0)
                                {
                                    obj.SetProperty(field.Name, value);
                                    if (history != null)
                                    {
                                        history[field.Name] = value;
                                    }
                                }
                            }
                            break;

                        default:
                            throw new DeveloperException("Неизвестная команда.");
                        }
                        // если были ошибки, то покажем что не так и вернемся на форму
                        if (errorMessage.Length > 0)
                        {
                            var viewService = IoC.Instance.Resolve <IViewService>();
                            viewService.ShowDialog("Ошибка", errorMessage.ToString(),
                                                   System.Windows.MessageBoxButton.OK,
                                                   System.Windows.MessageBoxImage.Error, System.Windows.MessageBoxResult.OK);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }

            Entity.Set(context, obj);
            if (history != null)
            {
                HistoryPropertyValue.Set(context, history);
            }
        }
        protected override void Execute(NativeActivityContext context)
        {
            var entity = Entity.Get(context);
            var obj    = entity as WMSBusinessObject;

            if (obj == null)
            {
                throw new NotImplementedException(string.Format("Тип '{0}' не поддерживается", entity.GetType()));
            }
            var objname = SourceNameHelper.Instance.GetSourceName(obj.GetType());
            // получим параметры MUST_SET
            var mustSetList    = GetProperties(context);
            var pmConfigs      = mustSetList as IList <PMConfig> ?? mustSetList.ToList();
            var mustProperties = pmConfigs.Select(pm => pm.ObjectName_r).Distinct();
            var objFields      = DataFieldHelper.Instance.GetDataFields(typeof(T), wmsMLC.General.PL.SettingDisplay.Detail);

            // проход по каждому параметру вперед и назад
            foreach (var attrName in mustProperties)
            {
                var methods     = pmConfigs.Where(pm => pm.ObjectName_r == attrName).Select(pm => pm.MethodCode_r).Distinct().ToList();
                var setNull     = methods.Exists(m => m == "SET_NULL");
                var mustSet     = methods.Exists(m => m == "MUST_SET");
                var mustCorrect = methods.Exists(m => m == "MUST_MANUAL_CORRECT");
                if (!setNull && !mustSet && !mustCorrect)
                {
                    continue;
                }

                var attrValue    = obj.GetProperty(attrName);
                var defaultValue = obj.GetPropertyDefaultValue(attrName);
                var datafield    = objFields.FirstOrDefault(i => i.Name.EqIgnoreCase(attrName));
                if (datafield == null)
                {
                    throw new DeveloperException("Ошибка в настройках менеджера товара. Задан неизвестный параметр '{0}.{1}'.", objname, attrName);
                }
                var field = new ValueDataField(datafield)
                {
                    LabelPosition = "Top"
                };
                // если у параметра есть значение по-умолчанию и оно совпадает с реальным, то необходимо подтверждение ввода
                if (!mustCorrect && !setNull && attrValue != null && !Equals(attrValue, defaultValue))
                {
                    continue;
                }

                // параметры атрибута
                field.Value = setNull
                    ? null
                    : (attrValue == null && defaultValue != null)
                        ? defaultValue
                        : attrValue;

                field.IsRequired = mustSet;

                if (string.IsNullOrEmpty(field.LookupCode))
                {
                    field.CloseDialog = true;
                }
                else //Если поле лукап
                {
                    field.Set(ValueDataFieldConstants.LookupType, RclLookupType.SelectControl.ToString());
                    field.Set(ValueDataFieldConstants.MaxRowsOnPage, MaxRowsOnPage.Get(context));
                }

                // *-* //
                var model   = GetMainModel(context, field);
                var showKey = ShowKey.Get(context);
                while (true) // делаем это для возврата на форму
                {
                    if (showKey)
                    {
                        model.PanelCaption = string.Format("Введите значение ('{0}')", obj.GetKey());
                    }

                    if (!ShowDialog(model))
                    {
                        throw new OperationException("Не были указаны обязательные параметры.");
                    }

                    var errorMessage = new StringBuilder();
                    switch (string.Format("1{0}", model.MenuResult))
                    {
                    case "1":
                    case "1F1":
                        var value = model[field.Name];
                        if (value == null && field.IsRequired)
                        {
                            errorMessage.AppendLine(string.Format("Не заполнено обязательное поле '{0}'.", field.Caption));
                        }
                        else
                        {
                            obj.SetProperty(field.Name, value);
                        }
                        break;

                    default:
                        throw new DeveloperException("Неизвестная команда.");
                    }
                    // если были ошибки, то покажем что не так и вернемся на форму
                    if (errorMessage.Length > 0)
                    {
                        var viewService = IoC.Instance.Resolve <IViewService>();
                        viewService.ShowDialog("Ошибка", errorMessage.ToString(), System.Windows.MessageBoxButton.OK,
                                               System.Windows.MessageBoxImage.Error, System.Windows.MessageBoxResult.OK);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            Entity.Set(context, obj);
        }
        protected override void Execute(NativeActivityContext context)
        {
            const string isnullerrorformat = "Свойство '{0}' должно быть задано.";

            var entities = Entities.Get(context);

            if (entities == null)
            {
                throw new DeveloperException(isnullerrorformat, EntitiesDisplayName);
            }

            var artcodepropertyname = ArtCodePropertyName.Get(context);

            if (string.IsNullOrEmpty(artcodepropertyname))
            {
                throw new DeveloperException(isnullerrorformat, ArtCodePropertyNameDisplayName);
            }

            var operationCode = OperationCode.Get(context);

            if (string.IsNullOrEmpty(operationCode))
            {
                throw new DeveloperException(isnullerrorformat, OperationCodeDisplayName);
            }

            var boEntities = entities.OfType <WMSBusinessObject>().ToArray();

            //Получаем список артикулов из Entities
            var arts = boEntities.Select(p => p.GetProperty <string>(artcodepropertyname)).Distinct().ToArray();

            var result = boEntities.ToArray();

            var objFields = DataFieldHelper.Instance.GetDataFields(typeof(T), SettingDisplay.Detail);

            foreach (var artcode in arts)
            {
                var propList = GetPmMethodProperies(artcode, operationCode, context);
                var boEntity = result.FirstOrDefault(p => p.GetProperty <string>(artcodepropertyname) == artcode);
                if (boEntity == null)
                {
                    continue;
                }

                foreach (var method in propList.Keys)
                {
                    foreach (var property in propList[method])
                    {
                        var compareValues = result.Select(p => p.GetProperty(property)).Distinct().ToArray();
                        if (compareValues.Length <= 1)
                        {
                            continue; //Пропускаем
                        }
                        var datafield = objFields.FirstOrDefault(i => i.Name.EqIgnoreCase(property));
                        if (datafield == null)
                        {
                            throw new DeveloperException(
                                      "Ошибка в настройках '{0}' PM. Задан неизвестный параметр '{1}'.", method, property);
                        }

                        var field = new ValueDataField(datafield)
                        {
                            LabelPosition = "Top"
                        };
                        if (method == PMMethods.MUST_COMPARE_VISIBLE)
                        {
                            field.Value = boEntity.GetProperty(property);
                        }

                        if (string.IsNullOrEmpty(field.LookupCode))
                        {
                            field.CloseDialog = true;
                        }
                        else //Если поле лукап
                        {
                            field.LabelPosition = "None";
                            field.Set(ValueDataFieldConstants.LookupType, RclLookupType.SelectControl.ToString());
                            field.Set(ValueDataFieldConstants.MaxRowsOnPage, MaxRowsOnPage.Get(context));
                        }

                        var model = CreateDialogModel(context, field);
                        while (true) // делаем это для возврата на форму
                        {
                            if (!ShowDialog(model))
                            {
                                throw new OperationException("Значения полей не были указаны.");
                            }

                            var errorMessage = new StringBuilder();
                            switch (string.Format("1{0}", model.MenuResult))
                            {
                            case "1":
                            case "1Return":
                                var value = model[field.Name];
                                if (!compareValues.Any(p => Equals(value, p)))
                                {
                                    errorMessage.AppendLine(string.Format("Неверное значение поля '{0}'.",
                                                                          field.Caption));
                                }
                                else
                                {
                                    result = result.Where(p => Equals(value, p.GetProperty(property))).ToArray();
                                }
                                break;

                            default:
                                throw new DeveloperException("Неизвестная команда.");
                            }
                            // если были ошибки, то покажем что не так и вернемся на форму
                            if (errorMessage.Length > 0)
                            {
                                var viewService = IoC.Instance.Resolve <IViewService>();
                                viewService.ShowDialog("Ошибка", errorMessage.ToString(), MessageBoxButton.OK,
                                                       MessageBoxImage.Error, MessageBoxResult.OK);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }
            }

            Result.Set(context, result.OfType <T>().ToArray());
        }
        protected override void Execute(NativeActivityContext context)
        {
            var entity = Entity.Get(context);
            var obj    = entity as WMSBusinessObject;

            if (obj == null)
            {
                throw new NotImplementedException(string.Format("Тип '{0}' не поддерживается", entity.GetType()));
            }

            var pos = 0;
            // получим параметры MUST_SET
            var manualCorrectList = GetManualCorrectProperies(context).ToArray();
            var objFields         = DataFieldHelper.Instance.GetDataFields(typeof(T), wmsMLC.General.PL.SettingDisplay.Detail);

            for (; pos < manualCorrectList.Length;)
            {
                var m         = manualCorrectList[pos];
                var datafield = objFields.FirstOrDefault(i => i.Name.EqIgnoreCase(m.ObjectName_r));
                if (datafield == null)
                {
                    throw new DeveloperException("Ошибка в настройках CAN_PRODUCT_MANUAL_CORRECT менеджера товара. Задан неизвестный параметр '{0}'.", m.ObjectName_r);
                }

                var vfield = new ValueDataField(datafield)
                {
                    LabelPosition = "Top",
                    Value         = obj.GetProperty(datafield.SourceName)
                };

                //Если поле лукап
                if (!string.IsNullOrEmpty(vfield.LookupCode))
                {
                    vfield.Set(ValueDataFieldConstants.LookupType, RclLookupType.SelectControl.ToString());
                    vfield.Set(ValueDataFieldConstants.MaxRowsOnPage, MaxRowsOnPage.Get(context));
                }

                var model = GetMainModel(context, vfield, pos != 0);
                while (true)
                {
                    if (ShowDialog(model) == false)
                    {
                        return;
                    }

                    var value = model[vfield.Name];
                    obj.SetProperty(vfield.SourceName, value);
                    switch (model.MenuResult)
                    {
                    case "F1":
                        pos++;
                        break;

                    case "F2":
                        pos--;
                        break;
                    }
                    break;
                }
            }
            Entity.Set(context, obj);
        }
Exemple #12
0
        private DialogSourceViewModel GetTimerFormModel()
        {
            var result = new DialogSourceViewModel
            {
                PanelCaption  = DialogTitle.Get(_context),
                FontSize      = FontSize.Get(_context),
                IsMenuVisible = false,
            };

            var footerMenu = new List <ValueDataField>();
            var menuNext   = new ValueDataField
            {
                Name    = "Menu0",
                Caption = "Далее",
                Value   = Key.Enter.ToString()
            };

            menuNext.Set(ValueDataFieldConstants.Row, 0);
            menuNext.Set(ValueDataFieldConstants.Column, 1);
            footerMenu.Add(menuNext);

            ValueDataField field;
            var            message = Message.Get(_context);

            if (!string.IsNullOrEmpty(message))
            {
                field = new ValueDataField
                {
                    Name          = "txtMessage",
                    FieldType     = typeof(string),
                    LabelPosition = "None",
                    IsEnabled     = false,
                    Value         = message
                };
                field.FieldName  = field.Name;
                field.SourceName = field.Name;
                result.Fields.Add(field);
            }

            var dateFrom = DateFrom.Get(_context);

            if (dateFrom.HasValue)
            {
                field = new ValueDataField
                {
                    Name          = "dtDateFrom",
                    Caption       = "С",
                    FieldType     = typeof(DateTime),
                    LabelPosition = "Left",
                    Value         = dateFrom.Value,
                    DisplayFormat = DefaultDateTimeFormat,
                    IsEnabled     = false,
                    SetFocus      = false,
                    CloseDialog   = false
                };
                field.FieldName  = field.Name;
                field.SourceName = field.Name;
                result.Fields.Add(field);
            }

            var timevalue = TimeSpan.FromSeconds(dateFrom.HasValue ? (DateTime.Now - dateFrom.Value).TotalSeconds - TimerOffset.Get(_context) : 0);

            field = new ValueDataField
            {
                Name          = TimerFieldName,
                Caption       = "Таймер",
                FieldType     = typeof(TimeSpan),
                LabelPosition = "Left",
                DisplayFormat = "hh\\:mm\\:ss",
                Value         = timevalue,
                IsEnabled     = false,
                SetFocus      = false,
                CloseDialog   = false
            };
            field.FieldName  = field.Name;
            field.SourceName = field.Name;
            result.Fields.Add(field);

            var fieldFooterMenu = new ValueDataField
            {
                Name      = "footerMenu",
                FieldType = typeof(IFooterMenu)
            };

            fieldFooterMenu.FieldName  = fieldFooterMenu.Name;
            fieldFooterMenu.SourceName = fieldFooterMenu.Name;
            fieldFooterMenu.Properties["FooterMenu"] = footerMenu.ToArray();
            result.Fields.Add(fieldFooterMenu);

            result.UpdateSource();
            return(result);
        }