protected override void Execute(NativeActivityContext context) { var dataContext = context.DataContext; var dataContextProperties = dataContext.GetProperties(); //MEGA-HACK: получаем переменные из WF и выбираем значение нужной переменной foreach (var field in Fields) { field.FieldName = field.Name; field.SourceName = field.Name; if (field.Value == null) { continue; } foreach (PropertyDescriptor propertyDesc in dataContextProperties) { if (propertyDesc.Name.Equals(field.Value)) { field.Value = propertyDesc.GetValue(dataContext); break; } } } var model = new ExpandoObjectViewModelBase(); model.Fields = new ObservableCollection <ValueDataField>(Fields); model.PanelCaption = Title.Get(context); var viewService = IoC.Instance.Resolve <IViewService>(); var dr = viewService.ShowDialogWindow(model, true) == true; context.SetValue(Result, dr); }
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); }
private MessageBoxResult AskBlocking(IWBPosInput item, DateTime planDate, string defaultBlock = null) { var field = IWBPosInput.IWBPosBlockingPropertyName; // формируем поля дозапроса var values = new List <ValueDataField> { new ValueDataField { Name = "desc", FieldName = "desc", SourceName = "desc", FieldType = typeof(string), LabelPosition = "Top", IsEnabled = false, Value = ExpDateMessage(planDate, item) + " Укажите блокировку?" }, new ValueDataField { Name = field, FieldName = field, SourceName = field, Caption = "Блокировка", FieldType = typeof(string), LabelPosition = "Top", LookupCode = "_PRODUCTBLOCKING_PRODUCT", Value = string.IsNullOrEmpty(item.IWBPosBlocking) ? defaultBlock : item.IWBPosBlocking } }; var model = new ExpandoObjectViewModelBase { Fields = new ObservableCollection <ValueDataField>(values), PanelCaption = "Блокировка по сроку годности" }; bool?dr; while (true) { dr = _viewService.ShowDialogWindow(model, true, buttons: MessageBoxButton.YesNoCancel, width: "30%"); if (dr != true) { break; } var blockingCode = model[field] as string; if (string.IsNullOrEmpty(blockingCode)) { _viewService.ShowDialog("Ошибка", "Поле 'Блокировка' не может быть пустым", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK); } else { item.IWBPosBlocking = blockingCode; return(MessageBoxResult.Yes); } } return(dr == false ? MessageBoxResult.No : MessageBoxResult.Cancel); }
private void OnEditReason() { var model = new ExpandoObjectViewModelBase(); var iwbPosWithCpvGrd = SelectedItems.FirstOrDefault(); var viewService = IoC.Instance.Resolve <IViewService>(); if (iwbPosWithCpvGrd == null) { viewService.ShowDialog("Ошибка", "Запись не выбрана", MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK); return; } model.Fields = new ObservableCollection <ValueDataField>(new List <ValueDataField>() { new ValueDataField() { Name = "MANDANTID", SourceName = "MANDANTID", FieldName = "MANDANTID", FieldType = typeof(decimal), Visible = false, Value = iwbPosWithCpvGrd.MandantId }, new ValueDataField() { Name = "IWBPosAdjustmentReason", SourceName = "IWBPosAdjustmentReason", Caption = "Причина корректировки", LookupCode = "ADJUSTMENTREASON_MANDANT", LookupButtonEnabled = false, FieldName = "IWBPosAdjustmentReason", FieldType = typeof(string), Value = iwbPosWithCpvGrd.IWBPosAdjustmentReason }, new ValueDataField() { Name = "IWBPosAdjustmentReasonDesc", SourceName = "IWBPosAdjustmentReasonDesc", Caption = "Описание причины", FieldName = "IWBPosAdjustmentReasonDesc", FieldType = typeof(string), Value = iwbPosWithCpvGrd.IWBPosAdjustmentReasonDesc } }); model.PanelCaption = "Причина корректировки"; if (viewService.ShowDialogWindow(model, true, false, "40%", "15%") != true) { return; } if (iwbPosWithCpvGrd.IWBPosAdjustmentReason != model.Get <decimal?>("IWBPosAdjustmentReason")) { iwbPosWithCpvGrd.IWBPosAdjustmentReason = model.Get <decimal?>("IWBPosAdjustmentReason"); } if (iwbPosWithCpvGrd.IWBPosAdjustmentReasonDesc != model.Get <string>("IWBPosAdjustmentReasonDesc")) { iwbPosWithCpvGrd.IWBPosAdjustmentReasonDesc = model.Get <string>("IWBPosAdjustmentReasonDesc"); } }
private static bool ShowDialog(ExpandoObjectViewModelBase model) { var viewService = IoC.Instance.Resolve <IViewService>(); return(viewService.ShowDialogWindow(model, true) == true); }
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); }
protected override void Execute(NativeActivityContext context) { // нужно сделать отдельную галочку на дозапрос данных // если дозапрос запрещен, а типа нет - ругаемся var items = context.GetValue(Items).ToArray(); if (!items.Any()) { throw new DeveloperException("Нет объектов для блокировки"); } var mto = IoC.Instance.Resolve <IManagerForObject>(); var mgrType = mto.GetManagerByTypeName(items[0].GetType().Name); var blockMgr = IoC.Instance.Resolve(mgrType, null) as IBlockingManager; if (blockMgr == null) { throw new DeveloperException("Тип {0} не поддерживает блокировку", items[0].GetType().Name); } if (!UserRequestEnable && string.IsNullOrEmpty(BlockingCode)) { throw new DeveloperException("Не задан код блокировки и запрещен дозапрос данных"); } // дозапрашиваем if (string.IsNullOrEmpty(BlockingCode)) { // формируем поля дозапроса var values = new List <ValueDataField> { new ValueDataField { Name = ProductBlocking.BlockingCodePropertyName, FieldName = ProductBlocking.BlockingCodePropertyName, SourceName = ProductBlocking.BlockingCodePropertyName, Caption = ProductBlocking.BlockingCodePropertyName, FieldType = typeof(string), LookupCode = blockMgr.GetNameLookupBlocking(), Value = BlockingCode }, new ValueDataField { Name = DescriptionPropertyName, FieldName = DescriptionPropertyName, SourceName = DescriptionPropertyName, Caption = "Описание блокировки", FieldType = typeof(string), } }; var model = new ExpandoObjectViewModelBase { Fields = new ObservableCollection <ValueDataField>(values), PanelCaption = "Блокировка" }; var viewService = IoC.Instance.Resolve <IViewService>(); if (viewService.ShowDialogWindow(model, true) == true) { Description = model[DescriptionPropertyName] as string; BlockingCode = model[ProductBlocking.BlockingCodePropertyName] as string; } else { throw new Exception("Пользователь отказался от продолжения блокирования"); } } if (string.IsNullOrEmpty(BlockingCode)) { throw new DeveloperException("Не указан обязательный параметр 'Код блокировки'"); } var mgrBlock = IoC.Instance.Resolve <IBaseManager <ProductBlocking> >(); var block = mgrBlock.Get(BlockingCode); if (block == null) { throw new DeveloperException("Не найдена блокировка с кодом '{0}'", BlockingCode); } var error = new List <string>(); foreach (WMSBusinessObject item in items) { try { blockMgr.Block(item, block, Description); } catch (Exception ex) { error.Add(ex.Message); } } if (error.Count > 0) { throw new Exception(string.Format("Не заблокированы следующие ТЕ:\n{0}", string.Join("\n", error))); } }
private MessageBoxResult AskQualifi(IWBPosInput item, DateTime planDate, string defaultQlf = null) { const string field = IWBPosInput.QLFCodePropertyName; // формируем поля дозапроса var values = new List <ValueDataField> { new ValueDataField { Name = "desc", FieldName = "desc", SourceName = "desc", FieldType = typeof(string), LabelPosition = "Top", IsEnabled = false, Value = ExpDateMessage(planDate, item) + " Укажите квалификацию?" }, new ValueDataField { Name = field, FieldName = field, SourceName = field, Caption = "Квалификация", FieldType = typeof(string), LabelPosition = "Top", LookupFilterExt = string.Format( " exists(select * from wmsqlf2mandant ql2mn where ql2mn.qlfcode_r = qlfcode and ql2mn.partnerid_r = {0})", _partnerId), LookupCode = "QLF_QLFCODE", Value = String.IsNullOrEmpty(item.QLFCODE_R) || item.QLFCODE_R == "QLFNORMAL" ? defaultQlf ?? "QLFNORMAL" : item.QLFCODE_R } }; var model = new ExpandoObjectViewModelBase { Fields = new ObservableCollection <ValueDataField>(values), PanelCaption = "Квалификация по сроку годности" }; bool?dr; while (true) { dr = _viewService.ShowDialogWindow(model, true, buttons: MessageBoxButton.YesNoCancel, width: "30%"); if (dr != true) { break; } var qlfCode = model[field] as string; if (string.IsNullOrEmpty(qlfCode)) { _viewService.ShowDialog("Ошибка", "Поле 'Квалификация' не может быть пустым", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK); } else { item.QLFCODE_R = qlfCode; return(MessageBoxResult.Yes); } } return(dr == false ? MessageBoxResult.No : MessageBoxResult.Cancel); }