public virtual bool ReCalculate(BusinessObject obj, bool isSave) { if (DataStructureProvider.IsTableColumn(obj.AATableName, ABCCommon.ABCConstString.colLockStatus)) { if (ABCDynamicInvoker.GetValue(obj, ABCCommon.ABCConstString.colLockStatus).ToString() == ABCCommon.ABCConstString.LockStatusLocked) { return(false); } } if (obj.GetID() != Guid.Empty) { Dictionary <String, IEnumerable <BusinessObject> > lstObjecItems = new Dictionary <string, IEnumerable <BusinessObject> >(); foreach (GEVoucherItemsInfo configItem in ConfigItems) { if (!DataStructureProvider.IsForeignKey(configItem.ItemTableName, configItem.ItemFKField)) { continue; } BusinessObjectController itemCtrl = BusinessControllerFactory.GetBusinessController(configItem.ItemTableName); if (!lstObjecItems.ContainsKey(configItem.ItemTableName)) { lstObjecItems.Add(configItem.ItemTableName, (IEnumerable <BusinessObject>)itemCtrl.GetListByForeignKey(configItem.ItemFKField, obj.GetID())); } } return(ReCalculate(obj, lstObjecItems, false, String.Empty, isSave)); } return(ReCalculate(obj, null, false, String.Empty, isSave)); }