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); }
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); }
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); }
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)); }
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)) ; }); }