public GenLedger CreateActivityJournalItem(CashFlow cf, FinActivity activityMap) { var activityGli = new GenLedger(objSpace.Session); activityGli.SrcCashFlow = cf; if (cf != null) { activityGli.GlDate = cf.TranDate; } activityGli.EntryType = GenLedgerEntryType.Auto; activityGli.JournalGroup = activityMap.JournalGroup; activityGli.Activity = activityMap.ToActivity; activityGli.GlDescription = activityMap.GlDescription; activityGli.GlCompany = activityMap.GlCompany; activityGli.GlAccount = activityMap.GlAccount; activityGli.GlCostCentre = activityMap.GlCostCentre; activityGli.GlCountry = activityMap.GlCountry; activityGli.GlIntercompany = activityMap.GlIntercompany; activityGli.GlLocation = activityMap.GlLocation; activityGli.GlProduct = activityMap.GlProduct; activityGli.GlProject = activityMap.GlProject; activityGli.GlSalesChannel = activityMap.GlSalesChannel; activityGli.IsActivity = true; activityGli.IsJournal = true; return(activityGli); }
public decimal EvalFunctionalCcyAmt(CashFlow cf, FinActivity activityMap, List <GenLedgerFinActivityJoin> genLedgerFinActivityJoin) { // get maps that have been computed for each bank statement item var fp = new FunctionParser(); ParserDelegate TokenFAmountHandler = delegate(FunctionParseDelegateArgs e) { // e.FunctionArgs[0] will have value like, for example, 'A' var result = from j in genLedgerFinActivityJoin where j.FinActivity.Token == e.FunctionArgs[0] select j.GenLedgerKey.FunctionalCcyAmt; return(result.Sum()); }; fp.Add("FA", TokenFAmountHandler); var parsed = fp.ParseToCriteria(activityMap.FunctionalCcyAmtExpr.Replace("{FA}", "FunctionalCcyAmt")); try { object exprResult = cf.Evaluate(CriteriaOperator.Parse(parsed.Criteria, parsed.Parameters)); decimal famt = 0.00M; if (exprResult != null && Decimal.TryParse(exprResult.ToString(), out famt)) { return(famt); } return(0.00M); } catch (Exception ex) { throw new InvalidOperationException(string.Format( "Error parsing map expression = '{1}', at FinActivity.Oid = '{0}', CashFlow.Oid = '{2}'.\r\n{3}", activityMap.Oid, activityMap.FunctionalCcyAmtExpr, cf.Oid, ex.Message), ex); } }