Beispiel #1
0
        public virtual FABookPeriod.Key GetKeyFromReportParameters(
            PXGraph graph,
            object[] parameters,
            ReportParametersFlag reportParametersMask)
        {
            ParameterEvaluator <ReportParametersFlag> parameterEvaluator = new ParameterEvaluator <ReportParametersFlag>(reportParametersMask, parameters);

            HashSet <int?> branchIDs = new HashSet <int?>();
            int?           branchID  = (int?)parameterEvaluator[ReportParametersFlag.Branch];

            if (branchID != null)
            {
                branchIDs.Add(branchID);
            }
            branchIDs.AddRange(PXAccess.GetBranchIDsByBAccount((int?)parameterEvaluator[ReportParametersFlag.BAccount]).Cast <int?>());

            FAKeyWithSourceValues keyWithSourceValuesItem = EvaluateRawKey(graph,
                                                                           new FAKeyWithSourceValues()
            {
                SpecificationItem     = CachedSourcesSpecification.MainSpecificationItem,
                SourceOrganizationIDs = ((int?)parameterEvaluator[ReportParametersFlag.Organization]).SingleToList(),
                SourceBranchIDs       = branchIDs.ToList(),
                SourceAssetIDs        = ((int?)parameterEvaluator[ReportParametersFlag.FixedAsset]).SingleToList(),
                SourceBookIDs         = ((int?)parameterEvaluator[ReportParametersFlag.Book]).SingleToList()
            });

            if (keyWithSourceValuesItem.Key.OrganizationID == null && UseMasterOrganizationIDByDefault)
            {
                keyWithSourceValuesItem.Key.OrganizationID = MasterValue;
            }

            return(keyWithSourceValuesItem.Key);
        }
Beispiel #2
0
        internal NativeEvaluator EvaluateCallArgsSpan(string actionName, NativeAction action, params string[] parameters)
        {
            var evaluators = new List <ParameterEvaluator>();

            foreach (var parameter in parameters)
            {
                ParameterEvaluator evaluator = (e, p) => e.EvaluateOne(p);
                evaluators.Add(evaluator);
            }

            return(EvaluateCallArgs(actionName, action, parameters, evaluators));
        }
        private ParameterEvaluator MakeParameterEvaluator(string[] parameters)
        {
            var parameterEvaluator = new ParameterEvaluator(parameters[0]);

            IEvaluator head = parameterEvaluator;

            foreach (var remainingParameter in parameters.Skip(1))
            {
                head.Next = new ParameterEvaluator(remainingParameter);
                head      = head.Next;
            }

            return(parameterEvaluator);
        }
Beispiel #4
0
        private IEvaluator Parameters(ref string command)
        {
            var token = GetNext(ref command);

            if (token.Type != CommandTokenType.Text)
            {
                UngetToken(ref command, token);
                return(null);
            }
            var eval = new ParameterEvaluator(token.Text);

            eval.Next = Parameters(ref command);

            return(eval);
        }
Beispiel #5
0
        internal void AddNativeAction(Action <string, string> action, ParameterEvaluator param1, ParameterEvaluator param2, params string[] pattern)
        {
            var variables = pattern.Where(w => w.StartsWith("$")).ToArray();

            if (variables.Length != 2)
            {
                throw new NotImplementedException();
            }
            var variable1 = variables[0].Substring(1);
            var variable2 = variables[1].Substring(1);

            Mind
            .AddPattern(pattern)
            .HowToDo(CreateActionSemantic(action, param1, param2, string.Join("_", pattern), variable1, variable2));
        }
Beispiel #6
0
        private NativePhraseEvaluator CreateActionSemantic(Action <string, string> action, ParameterEvaluator param1, ParameterEvaluator param2, string actionName, string parameterName1, string parameterName2)
        {
            var nativeCallWrapperId             = "%" + actionName;
            NativeCallWrapper nativeCallWrapper = i =>
            {
                var argumentEntity1 = i.GetSubjectConstraint(parameterName1);
                var argumentEntity2 = i.GetSubjectConstraint(parameterName2);
                action(argumentEntity1.PhraseConstraint, argumentEntity2.PhraseConstraint);
                return(null);
            };

            _nativeCallWrappers.Add(nativeCallWrapperId, nativeCallWrapper);

            return(c =>
            {
                var callEntity = DbConstraint.Entity(nativeCallWrapperId);
                return callEntity
                .ExtendByAnswer(parameterName1, param1(parameterName1, c))
                .ExtendByAnswer(parameterName2, param2(parameterName2, c))
                ;
            });
        }