Exemplo n.º 1
0
        public void WhereWhere_Array_ExecutionIsDeferred()
        {
            bool funcCalled = false;

            Func <bool>[] source = new Func <bool>[] { () => { funcCalled = true; return(true); } };

            IEnumerable <Func <bool> > query = source.Where(value => value()).Where(value => value());

            Assert.False(funcCalled);

            query = source.Where((value, index) => value());
            Assert.False(funcCalled);
        }
Exemplo n.º 2
0
        public void WhereWhere_Array_ExecutionIsDefered()
        {
            bool funcCalled = false;
            Func<bool>[] source = new Func<bool>[] { () => { funcCalled = true; return true; } };

            IEnumerable<Func<bool>> query = source.Where(value => value()).Where(value => value());
            Assert.False(funcCalled);

            query = source.Where((value, index) => value());
            Assert.False(funcCalled);
        }
        public void Execute()
        {
            var session = objSpace.Session;

            if (paramObj == null)
            {
                throw new UserFriendlyException("Param Object cannot be null.");
            }

            #region Get Lookup Objects

            genLedgerFinActivityJoin = new List <GenLedgerFinActivityJoin>();

            var jnlGroupKeysInParams = paramObj.JournalGroupParams.Select(p => p.JournalGroup.Oid);
            var jnlGroupsInParams    = new XPCollection <FinJournalGroup>(session,
                                                                          new InOperator("Oid", jnlGroupKeysInParams));

            var accountMaps   = new XPCollection <FinAccount>(session, new InOperator("JournalGroup", jnlGroupsInParams));
            var accountsToMap = accountMaps.Select(k => k.Account);

            var activityMaps = new Func <List <FinActivity> >(() =>
            {
                var sortProps = new SortingCollection(null);
                sortProps.Add(new SortProperty("RowIndex", DevExpress.Xpo.DB.SortingDirection.Ascending));
                var criteria = CriteriaOperator.And(
                    new InOperator("JournalGroup", jnlGroupsInParams),
                    new BinaryOperator("Enabled", true, BinaryOperatorType.Equal));
                var result = session.GetObjects(session.GetClassInfo(typeof(FinActivity)),
                                                criteria, sortProps, 0, false, true)
                             .Cast <FinActivity>().ToList();
                return(result);
            })();
            //var activitiesToMap = activityMaps.GroupBy(m => m.FromActivity).Select(k => k.Key);

            #endregion

            DeleteAutoGenLedgerItems();

            #region Process via ORM

            var ormActivityMaps = activityMaps.Where(x => x.Algorithm == FinMapAlgorithmType.ORM);

            var bsJournalHelper = new BankStmtActivityOrmJournalHelper(objSpace, paramObj);
            bsJournalHelper.Process(accountMaps, ormActivityMaps);

            var cfJournalHelper = new CashFlowActivityOrmJournalHelper(objSpace, paramObj);
            cfJournalHelper.Process(accountMaps, ormActivityMaps);

            // commit to datastore (required for SQL algorithm which creates account gen ledgers)
            objSpace.Session.CommitTransaction();

            #endregion

            #region Process via SQL

            var sqlActivityMaps = activityMaps.Where(x => x.Algorithm == FinMapAlgorithmType.SQL);

            var bankStmtActivitySqlJnlr = new BankStmtActivitySqlJournalHelper(objSpace, paramObj);
            bankStmtActivitySqlJnlr.Process(sqlActivityMaps);

            var cashFlowActivitySqlJnlr = new CashFlowActivitySqlJournalHelper(objSpace, paramObj);
            cashFlowActivitySqlJnlr.Process(sqlActivityMaps);

            var unpostedSqlJnlr = new GenLedgerUnpostedCreator(objSpace, paramObj);
            unpostedSqlJnlr.Process();

            var accountSqlJnlr = new AccountSqlJournalHelper(objSpace, paramObj);
            accountSqlJnlr.Process();

            #endregion
        }