public CustomDataLayoutItem(bool isWfDesignMode, ValueDataField field) : this() { IsWfDesignMode = isWfDesignMode; Name = field.Name; LabelPosition = field.LabelPosition.To(LayoutItemLabelPosition.Left); if (field.LabelPosition.EqIgnoreCase(ValueDataFieldConstants.None)) { LabelVisibility = Visibility.Collapsed; } Visibility = field.Visible ? Visibility.Visible : Visibility.Collapsed; DisplayFormat = field.DisplayFormat; IsReadOnly = !(field.IsEnabled.HasValue && field.IsEnabled.Value); DisplayName = field.Caption; FieldType = field.FieldType; LookUpCode = field.LookupCode; LookUpFilterExt = field.LookupFilterExt; CloseDialog = field.CloseDialog; SetFocus = field.SetFocus; BackGroundColor = field.BackGroundColor; IsMemoView = field.IsMemoView; Binding = new Binding(string.IsNullOrEmpty(field.FieldName) ? field.Name : field.FieldName) { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, ValidatesOnDataErrors = true }; //Проставляем Properties InitializeProperties(field); }
private Parameters GetParameters(NativeActivityContext context) { // отображаем окно запроса данных var fFile = new ValueDataField(); fFile.Name = "File"; fFile.FieldName = fFile.Name; fFile.FieldType = typeof(string); //fFile.SourceName = fFile.Name; fFile.Caption = "Файл"; fFile.IsRequired = true; fFile.IsLabelFontWeightBold = true; var fMandant = new ValueDataField(); fMandant.Name = "Mandant"; fMandant.FieldName = fMandant.Name; //fMandant.SourceName = fMandant.Name; fMandant.FieldType = typeof(decimal?); fMandant.Caption = "Мандант"; fMandant.IsRequired = true; fMandant.LookupCode = "MANDANT_MANDANTID"; fMandant.IsLabelFontWeightBold = true; var fABCD = new ValueDataField(); fABCD.Name = "ABCD"; fABCD.FieldName = fABCD.Name; //fABCD.SourceName = fABCD.Name; fABCD.FieldType = typeof(string); fABCD.Caption = "ABCD"; fABCD.IsRequired = true; fABCD.LookupCode = "ENUM_ART"; fABCD.IsLabelFontWeightBold = true; // создадим модель var model = new ExpandoObjectViewModelBase { Fields = new ObservableCollection <ValueDataField>(new[] { fFile, fMandant, fABCD }) }; model.PanelCaption = "Загрузка файла My Universal"; model.SetSuffix("5CF7EA23-7B12-4211-9F18-45878562C0A7"); var vs = IoC.Instance.Resolve <wmsMLC.General.PL.WPF.Services.IViewService>(); if (vs.ShowDialogWindow(model, true, false, "30%", "10%") == true) { return new Parameters { FileName = (string)model[fFile.FieldName], ABCD = (string)model[fABCD.FieldName], MandantId = (decimal?)model[fMandant.FieldName] } } ; return(null); }
public static int GetColumn(ValueDataField menuItem, int index) { if (menuItem == null || !menuItem.Properties.ContainsKey((ValueDataFieldConstants.Column))) { return(index % 2); } return(menuItem.Get <int>(ValueDataFieldConstants.Column)); }
public static void AddFooterMenuItem(FooterMenu footerMenuControl, ValueDataField menuItem, int index, ICommand command, double fontSize, bool isWfDesignMode) { var button = CreateCustomButton(menuItem, command, fontSize, isWfDesignMode); FooterMenu.SetRow(button, GetRow(menuItem, index)); FooterMenu.SetColumn(button, GetColumn(menuItem, index)); footerMenuControl.Menu.Add(button); }
public TETypeListViewModel() { LayoutValue = ModelLayout; IsMenuVisible = false; var fields = Fields; var teTypeGrid = new ValueDataField { Name = TeTypeFieldName, FieldName = TeTypeFieldName, SourceName = TeTypeFieldName, Caption = "Список", LabelPosition = "Top", Order = 0, IsEnabled = true, Visible = true, FieldType = typeof(TEType), SetFocus = true, LookupCode = "TETYPE_NAME" }; teTypeGrid.Properties.Add(ValueDataFieldConstants.LookupType, RclLookupType.SelectGridControl.ToString()); teTypeGrid.Properties.Add(ValueDataFieldConstants.ShowControlMenu, "True"); teTypeGrid.Properties.Add(ValueDataFieldConstants.CloseDialogOnSelectedItemChanged, "True"); fields.Add(teTypeGrid); var menuItem = new ValueDataField { Name = MenuName, FieldName = MenuName, SourceName = MenuName, Caption = MenuName, LabelPosition = "Left", Order = 1, IsEnabled = true, Visible = true, FieldType = typeof(IFooterMenu), }; menuItem.Properties[ValueDataFieldConstants.FooterMenu] = new[] { new ValueDataField { Name = EscapeMenuName, FieldName = EscapeMenuName, SourceName = EscapeMenuName, Order = 0, Caption = "Отмена", IsEnabled = true, Value = "Escape", FieldType = typeof(Button), Visible = true } }; fields.Add(menuItem); UpdateSource(); }
public static string GetLayoutGroupNameFromField(ValueDataField valueDataField, bool isWfDesignMode) { string svalue; return(DataField.TryGetFieldProperties(valueDataField, ValueDataFieldConstants.LayoutGroupName, isWfDesignMode, out svalue) ? svalue : null); }
private decimal?SelectWorker(string filter) { var workerModel = new DialogSourceViewModel { PanelCaption = Resources.StringResources.SelectWorkerPanelCaption, FontSize = 14, IsMenuVisible = false, }; var lstWorkers = new ValueDataField { Name = "lstWorkers", LabelPosition = "Top", Caption = Resources.StringResources.WorkerList }; lstWorkers.FieldName = lstWorkers.Name; lstWorkers.SourceName = lstWorkers.Name; lstWorkers.FieldType = typeof(Object); lstWorkers.LookupCode = "WORKER_WORKERFIO_RCL"; lstWorkers.LookupFilterExt = filter; lstWorkers.Properties["MaxRowsOnPage"] = 6; lstWorkers.Properties["CloseDialogOnSelectedItemChanged"] = true; lstWorkers.Properties["LookupType"] = "SelectControl"; lstWorkers.SetFocus = true; workerModel.Fields.Add(lstWorkers); workerModel.UpdateSource(); var vs = IoC.Instance.Resolve <IViewService>(); while (true) { if (vs.ShowDialogWindow(workerModel, false) != true) { vs.ShowDialog(Resources.StringResources.RCL, Resources.StringResources.WorkerNotSelect, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); continue; } switch (workerModel.MenuResult) { case "Value": var worker = workerModel["lstWorkers"]; decimal workerId; if (!decimal.TryParse(worker.ToString(), out workerId)) { throw new DeveloperException(string.Format("Bad workerId value '{0}'.", worker)); } return(workerId); default: continue; } } }
private void OnSelect(ValueDataField parameter) { if (!CanSelect(parameter)) { return; } CommandParameter = ValueDataFieldConstants.CreateDefaultParameter(ValueDataFieldConstants.Value); ExecuteCommandSource(this); }
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); }
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); }
public void SetLabelProperties(ValueDataField field) { if (field == null) { return; } LabelPosition = field.LabelPosition.To(LayoutItemLabelPosition.Left); if (field.LabelPosition.EqIgnoreCase(ValueDataFieldConstants.None)) { LabelVisibility = Visibility.Collapsed; } }
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 void OnMenuCommand(ValueDataField parameter) { MenuResult = null; if (!CanMenuCommand(parameter)) { return; } var hotkey = parameter.Value.To(Key.None); MenuResult = hotkey == Key.None ? parameter.Value.To(string.Empty) : hotkey.ToString(); MenuActionName = parameter.Name; if (MenuAction != null) { MenuAction(parameter); } }
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 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); }
protected override ObservableCollection <DataField> GetFields(SettingDisplay displaySetting) { var fields = base.GetFields(displaySetting); if (!InPropertyEditMode) { var field = new ValueDataField { Name = ImagePropertyName, FieldName = ImagePropertyName, SourceName = ImagePropertyName, FieldType = typeof(object), Visible = true, LabelPosition = ValueDataFieldConstants.None }; field.Properties[ValueDataFieldConstants.IsSubImageView] = true; field.Properties[ValueDataFieldConstants.ShowMenu] = true; fields.Add(field); } return(fields); }
private string ValidateRequiredField(ValueDataField field) { var haserror = false; var value = this[field.Name]; if (Equals(value, string.Empty)) { value = null; } if (field.FieldType == typeof(string)) { if (value.To <string>().IsNullOrEmptyAfterTrim()) { haserror = true; } } if (haserror || value == null) { return(string.Format("Поле '{0}' является обязательным.", field.Caption)); } return(string.Empty); }
public static void CreateFooterMenu(FooterMenu footerMenuControl, ValueDataField field, ICommand command, double fontSize, bool isWfDesignMode) { if (footerMenuControl == null) { footerMenuControl = new FooterMenu(); } footerMenuControl.Visibility = field.Visible ? Visibility.Visible : Visibility.Collapsed; ValueDataField[] menu; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.FooterMenu, isWfDesignMode, out menu)) { var index = 0; foreach (var menuItem in menu.Where(p => p != null).OrderBy(p => p.Order)) { AddFooterMenuItem(footerMenuControl, menuItem, index++, command, fontSize, isWfDesignMode); } } if (fontSize > 0) { footerMenuControl.FontSize = fontSize; } string focusNavigationDirection; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.NavigationDirectionOnGotFocus, isWfDesignMode, out focusNavigationDirection)) { footerMenuControl.NavigationDirectionOnGotFocus = (FocusNavigationDirection)Enum.Parse(typeof(FocusNavigationDirection), focusNavigationDirection); } if (field.SetFocus) { footerMenuControl.BackgroundFocus(); } }
private void OnFooterMenuItemClick(ValueDataField parameter) { CommandParameter = parameter; ExecuteCommandSource(this); }
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) { 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); }
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()); }
protected override void Execute(NativeActivityContext context) { var reportCode = ReportCode.Get(context); if (!_oldReportCode.Equals(reportCode) && Parameters.Count < 1) { if (reportCode != null) { var val = reportCode.Replace("\"", string.Empty); var prm = GetParams(val); foreach (var p in prm) { var argument = new InArgument <string> { Expression = p.EpsConfigValue }; Parameters.Add(p.EpsConfigParamCode, argument); } } _oldReportCode = reportCode ?? string.Empty; } var parameters = new List <NameValueObject>(); foreach (var p in Parameters) { parameters.Add(new NameValueObject { Name = p.Key, DisplayName = p.Key, Value = p.Value.Get(context) }); } // проверим корректность данных if (!CheckParams(parameters)) { // Запрещена ли печать при ошибке if (DoNotPrint) { return; } // если нужно спросить пользователя if (RequestUser) { var fields = new List <ValueDataField>(); foreach (var p in parameters) { var name = p.Name.Replace("{", string.Empty).Replace("}", string.Empty); var field = new ValueDataField { Name = name, SourceName = name, Caption = p.DisplayName, FieldName = name, FieldType = typeof(string), Value = p.Value }; fields.Add(field); } var model = new ExpandoObjectViewModelBase(); model.Fields = new ObservableCollection <ValueDataField>(fields); model.PanelCaption = DialogCaption; if (!ShowDialog(model)) { return; } foreach (var p in parameters) { p.Value = model[p.Name.Replace("{", string.Empty).Replace("}", string.Empty)].ToString(); } // проверяем последний раз if (!CheckParams(parameters)) { // игнорировать ошибки if (!IgnoreErrors) { return; } } } // если не игнорируем ошибки else if (!IgnoreErrors) { return; } } // заполняем параметры отчета var outputParams = new List <OutputParam>(); foreach (var p in parameters) { outputParams.Add(new OutputParam { OutputParamCode = p.Name, OutputParamType = string.Empty, // заполнится в менеджере OutputParamValue = p.Value != null ? p.Value.ToString() : null }); } // определяем id манданта по коду decimal?mandantId = null; if (!string.IsNullOrEmpty(MandantCode)) { var mandantMgr = IoC.Instance.Resolve <IBaseManager <Mandant> >(); var codeFilterName = SourceNameHelper.Instance.GetPropertySourceName(typeof(Mandant), Mandant.MANDANTCODEPropertyName); var filter = string.Format("{0} = '{1}'", codeFilterName, MandantCode); var mandants = mandantMgr.GetFiltered(filter).ToArray(); if (mandants.Length > 1) { throw new DeveloperException("Получено более одного Манданта с кодом " + MandantCode); } if (mandants.Length == 1) { mandantId = mandants[0].MandantId; } } // поехали! var reportMgr = IoC.Instance.Resolve <Report2EntityManager>(); var uow = BeginTransactionActivity.GetUnitOfWork(context); if (uow != null) { reportMgr.SetUnitOfWork(uow); } var result = reportMgr.PrintReport(mandantId, reportCode.Replace("\"", string.Empty), Barcode, outputParams); // возвращает статус задания Result.Set(context, result); // возвращает код задания //Result.Set(context, result.Job); }
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); }
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())); } // получим параметры 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); } }
private bool CanMenuCommand(ValueDataField parameter) { return(!WaitIndicatorVisible && Fields != null && Fields.Count > 0); }
private void InitializeProperties(ValueDataField field) { string svalue; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.LookupType, IsWfDesignMode, out svalue)) { LookupType = (RclLookupType)Enum.Parse(typeof(RclLookupType), svalue); } int ivalue; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.MaxRows, IsWfDesignMode, out ivalue)) { MaxRows = ivalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.MaxRowsOnPage, IsWfDesignMode, out ivalue)) { MaxRowsOnPage = ivalue; } bool bvalue; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.CloseDialogOnSelectedItemChanged, IsWfDesignMode, out bvalue)) { CloseDialogOnSelectedItemChanged = bvalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.UseFunctionKeys, IsWfDesignMode, out bvalue)) { UseFunctionKeys = bvalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.ParentKeyPreview, IsWfDesignMode, out bvalue)) { ParentKeyPreview = bvalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.HotKey, IsWfDesignMode, out svalue)) { HotKey = (Key)Enum.Parse(typeof(Key), svalue); } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.CustomDisplayMember, IsWfDesignMode, out svalue)) { CustomDisplayMember = svalue; } object listValue; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.ItemsSource, IsWfDesignMode, out listValue)) { var list = listValue as IList; if (list == null) { var listSource = listValue as IListSource; if (listSource != null) { list = listSource.GetList(); } } ItemsSource = list; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.ValueMember, IsWfDesignMode, out svalue)) { ValueMember = svalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.DisplayMember, IsWfDesignMode, out svalue)) { DisplayMember = svalue; } ValueDataField[] valueDataFields; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.FooterMenu, IsWfDesignMode, out valueDataFields)) { FooterMenu = valueDataFields; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.ShowControlMenu, IsWfDesignMode, out bvalue)) { ShowControlMenu = bvalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.IsDoNotMovedFocusOnNextControl, IsWfDesignMode, out bvalue)) { IsDoNotMovedFocusOnNextControl = bvalue; } DataField[] dataFields; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.Fields, IsWfDesignMode, out dataFields)) { Fields = dataFields; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.DisplaySetting, IsWfDesignMode, out svalue)) { DisplaySetting = (SettingDisplay)Enum.Parse(typeof(SettingDisplay), svalue); } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.ShowAutoFilterRow, IsWfDesignMode, out bvalue)) { ShowAutoFilterRow = bvalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.AllowAutoShowAutoFilterRow, IsWfDesignMode, out bvalue)) { AllowAutoShowAutoFilterRow = bvalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.ShowTotalRow, IsWfDesignMode, out bvalue)) { ShowTotalRow = bvalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.DoNotActionOnEnterKey, IsWfDesignMode, out bvalue)) { DoNotActionOnEnterKey = bvalue; } if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.DoNotAllowUpdateShowAutoFilterRowFromXml, IsWfDesignMode, out bvalue)) { DoNotAllowUpdateShowAutoFilterRowFromXml = bvalue; } string[] bestFitColumnNames; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.BestFitColumnNames, IsWfDesignMode, out bestFitColumnNames)) { BestFitColumnNames = bestFitColumnNames; } IEnumerable <FormatConditionInfo> formatConditions; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.FormatConditions, true, out formatConditions)) { FormatConditions = formatConditions; } }
public static CustomButton CreateCustomButton(ValueDataField field, ICommand command, double fontSize, bool isWfDesignMode) { var hotkey = field.Value.To(Key.None); var hotkey2 = Key.None; string svalue; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.HotKey2, isWfDesignMode, out svalue)) { hotkey2 = svalue.To(Key.None); } var button = new CustomButton { Text = field.Caption, HorizontalContentAlignment = HorizontalAlignment.Left, HotKey = hotkey, HotKey2 = hotkey2, Command = command, CommandParameter = field, IsEnabled = field.IsEnabled.HasValue && field.IsEnabled.Value, Visibility = field.Visible ? Visibility.Visible : Visibility.Collapsed, }; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.SuffixText, isWfDesignMode, out svalue)) { button.SuffixText = svalue; } bool isNotMenuButton; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.IsNotMenuButton, isWfDesignMode, out isNotMenuButton)) { button.IsNotMenuButton = isNotMenuButton; } bool transferHotKeyToControls; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.TransferHotKeyToControls, isWfDesignMode, out transferHotKeyToControls)) { button.TransferHotKeyToControls = transferHotKeyToControls; } ICommand icommand; if (DataField.TryGetFieldProperties(field, ValueDataFieldConstants.Command, isWfDesignMode, out icommand)) { button.Command = icommand; } if (fontSize > 0) { button.FontSize = fontSize; } if (field.SetFocus) { button.BackgroundFocus(); } return(button); }