コード例 #1
0
ファイル: ShowView.cs プロジェクト: zaharvsb52/MyWmsPro
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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");
            }
        }
コード例 #5
0
        private static bool ShowDialog(ExpandoObjectViewModelBase model)
        {
            var viewService = IoC.Instance.Resolve <IViewService>();

            return(viewService.ShowDialogWindow(model, true) == true);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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)));
            }
        }
コード例 #8
0
        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);
        }