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 void Process(IEnumerable <BankStmt> bankStmts, IEnumerable <FinAccount> accountMaps, IEnumerable <FinActivity> activityMaps) { var genLedgerFinActivityJoin = new List <GenLedgerFinActivityJoin>(); foreach (BankStmt bsi in bankStmts) { // use the same Account Map for each Bank Statement Item var accountMap = accountMaps.FirstOrDefault(m => m.Account == bsi.Account); genLedgerFinActivityJoin.Clear(); foreach (var activityMap in activityMaps) { if (activityMap.FromActivity != bsi.Activity || !(activityMap.TargetObject == FinJournalTargetObject.BankStmt || activityMap.TargetObject == FinJournalTargetObject.All)) { continue; } #region Create Journal Items GenLedger activityGli = CreateActivityJournalItem(bsi, activityMap); #endregion #region Evaluate Amount // Evaluate Amount Expression var genLedgerKey = new GenLedgerKey() { FunctionalCcyAmt = EvalFunctionalCcyAmt(bsi, activityMap, genLedgerFinActivityJoin) }; activityGli.FunctionalCcyAmt = genLedgerKey.FunctionalCcyAmt * -1.00M; // Join GenLedger with FinActivity so you can get the sum of all previous GenLedger.FinActivity.Token genLedgerFinActivityJoin.Add(new GenLedgerFinActivityJoin() { FinActivity = activityMap, GenLedgerKey = genLedgerKey }); #endregion } } }
public void Process(IEnumerable <CashFlow> cashFlows, IEnumerable <FinAccount> accountMaps, IEnumerable <FinActivity> activityMaps) { var genLedgerFinActivityJoin = new List <GenLedgerFinActivityJoin>(); foreach (CashFlow cf in cashFlows) { // use the same Account Map for each Bank Statement Item var accountMap = accountMaps.FirstOrDefault(m => m.Account == cf.Account); genLedgerFinActivityJoin.Clear(); foreach (var activityMap in activityMaps) { if (activityMap.FromActivity != cf.Activity || !(activityMap.TargetObject == FinJournalTargetObject.CashFlow || activityMap.TargetObject == FinJournalTargetObject.All)) { continue; } GenLedger activityGli = CreateActivityJournalItem(cf, activityMap); // Evaluate Amount Expression var genLedgerKey = new GenLedgerKey() { FunctionalCcyAmt = EvalFunctionalCcyAmt(cf, activityMap, genLedgerFinActivityJoin) /* TODO: may be zero*/ }; activityGli.FunctionalCcyAmt = genLedgerKey.FunctionalCcyAmt * -1.00M; // Join GenLedger with FinActivity so you can get the sum of all previous GenLedger.FinActivity.Token // we use accountGli as the FunctionCcyAmt's sign is not reversed like in actvitiyGli genLedgerFinActivityJoin.Add(new GenLedgerFinActivityJoin() { FinActivity = activityMap, GenLedgerKey = genLedgerKey }); } } }