public override void FixInvokedBussinessObjects(DevExpress.Xpo.Session session, DevExpress.Xpo.XPCollection <DAL.System.Log.BusinessObject> invokedBussinessObjects) { if (invokedBussinessObjects == null || invokedBussinessObjects.Count == 0) { return; } CriteriaOperator criteria_0 = CriteriaOperator.Parse("not(IsNull(FinancialTransactionDimId))"); CriteriaOperator criteria_1 = new InOperator("FinancialTransactionDimId.RefId", invokedBussinessObjects.Select(i => i.RefId)); CriteriaOperator criteria_2 = new BinaryOperator("RowStatus", 0, BinaryOperatorType.Greater); CriteriaOperator criteria = new GroupOperator(GroupOperatorType.And, criteria_0, criteria_1, criteria_2); CorrespondFinancialAccountDim defaultCorrespondAccDim = CorrespondFinancialAccountDim.GetDefault(session, CorrespondFinancialAccountDimEnum.NAAN_DEFAULT); XPCollection <GoodsInInventoryDetail> neededToBeFixList = new XPCollection <GoodsInInventoryDetail>(session, criteria); GoodsInInventorySummary_Fact fact = null; if (neededToBeFixList != null && neededToBeFixList.Count > 0) { foreach (GoodsInInventoryDetail detail in neededToBeFixList) { fact = detail.GoodsInInventorySummary_FacftId; detail.RowStatus = Utility.Constant.ROWSTATUS_DELETED; detail.Save(); //fact.CreditSum = fact.GoodsInInventoryDetails.Where(i => i.RowStatus == 1 // && i.Credit > 0 && i.CorrespondFinancialAccountDimId == defaultCorrespondAccDim).Sum(d => d.Credit); //fact.DebitSum = fact.GoodsInInventoryDetails.Where(i => i.RowStatus == 1 // && i.Debit > 0 && i.CorrespondFinancialAccountDimId == defaultCorrespondAccDim).Sum(d => d.Debit); //fact.EndCreditBalance // = fact.BeginCreditBalance + // fact.CreditSum - // fact.DebitSum; //fact.EndDebitBalance // = fact.BeginDebitBalance + // fact.DebitSum - // fact.CreditSum; //fact.Save(); } } }