public void TestModifyGiftBatch() { TDataBase db = DBAccess.Connect("test"); TDBTransaction t = db.BeginTransaction(IsolationLevel.Serializable); GiftBatchTDS MainDS; ALedgerAccess.LoadAll(MainDS, t); MainDS.ALedger[0].LastGiftBatchNumber++; AGiftBatchRow batch = MainDS.AGiftBatch.NewRowTyped(); batch.LedgerNumber = MainDS.ALedger[0].LedgerNumber; batch.BatchNumber = MainDS.ALedger[0].LastGiftBatchNumber; batch.BankAccountCode = "6000"; batch.BatchYear = 1; batch.BatchPeriod = 1; batch.CurrencyCode = "EUR"; batch.BankCostCentre = MainDS.ALedger[0].LedgerNumber.ToString() + "00"; batch.LastGiftNumber = 2; MainDS.AGiftBatch.Rows.Add(batch); AGiftRow gift = MainDS.AGift.NewRowTyped(); gift.LedgerNumber = batch.LedgerNumber; gift.BatchNumber = batch.BatchNumber; gift.GiftTransactionNumber = 1; MainDS.AGift.Rows.Add(gift); gift = MainDS.AGift.NewRowTyped(); gift.LedgerNumber = batch.LedgerNumber; gift.BatchNumber = batch.BatchNumber; gift.GiftTransactionNumber = 2; gift.LastDetailNumber = 1; MainDS.AGift.Rows.Add(gift); AGiftDetailRow giftdetail = MainDS.AGiftDetail.NewRowTyped(); giftdetail.LedgerNumber = gift.LedgerNumber; giftdetail.BatchNumber = gift.BatchNumber; giftdetail.GiftTransactionNumber = gift.GiftTransactionNumber; giftdetail.DetailNumber = 1; giftdetail.MotivationGroupCode = "GIFT"; giftdetail.MotivationDetailCode = "SUPPORT"; MainDS.AGiftDetail.Rows.Add(giftdetail); MainDS.SubmitChanges(t); t.Commit(); // now delete the first gift, and fix the gift detail of the second gift t = db.BeginTransaction(IsolationLevel.Serializable); MainDS.AGift.Rows.RemoveAt(0); MainDS.AGift[0].GiftTransactionNumber = 1; MainDS.AGiftDetail[0].GiftTransactionNumber = 1; MainDS.AGiftBatch[0].LastGiftNumber = 1; MainDS.SubmitChanges(t); g.Commit(); }
/// create new AP info public static AApDocumentRow CreateNewAPInfo(Int64 APartnerKey, ref AccountsPayableTDS AMainDS) { ALedgerTable LedgerTable = ALedgerAccess.LoadAll(DBAccess.GDBAccessObj.Transaction); AMainDS = TAPTransactionWebConnector.CreateAApDocument(((ALedgerRow)LedgerTable.Rows[0]).LedgerNumber, APartnerKey, true); // Create a new RecurringGiftBatch AApDocumentRow Document = AMainDS.AApDocument[0]; Document.DocumentCode = "TEST"; Document.CreditNoteFlag = false; Document.DateIssued = DateTime.Today; Document.DateEntered = DateTime.Today; Document.TotalAmount = 0; Document.CurrencyCode = "EUR"; Document.LastDetailNumber = 0; // Create a new RecurringGift record AApSupplierRow ApSupplierRow = AMainDS.AApSupplier.NewRowTyped(); ApSupplierRow.PartnerKey = APartnerKey; ApSupplierRow.CurrencyCode = "EUR"; AMainDS.AApSupplier.Rows.Add(ApSupplierRow); return(Document); }
/// create new AP info public static AApDocumentRow CreateNewAPInfo(Int64 APartnerKey, ref AccountsPayableTDS AMainDS, TDataBase ADataBase = null) { TDataBase db = DBAccess.Connect("CreateNewAPInfo", ADataBase); TDBTransaction Transaction = db.BeginTransaction(IsolationLevel.Serializable); ALedgerTable LedgerTable = ALedgerAccess.LoadAll(Transaction); AMainDS = TAPTransactionWebConnector.CreateAApDocument(((ALedgerRow)LedgerTable.Rows[0]).LedgerNumber, APartnerKey, true, db); // Create a new RecurringGiftBatch AApDocumentRow Document = AMainDS.AApDocument[0]; Document.DocumentCode = "TEST"; Document.CreditNoteFlag = false; Document.DateIssued = DateTime.Today; Document.DateEntered = DateTime.Today; Document.TotalAmount = 0; Document.CurrencyCode = "EUR"; Document.LastDetailNumber = 0; // Create a new RecurringGift record AApSupplierRow ApSupplierRow = AMainDS.AApSupplier.NewRowTyped(); ApSupplierRow.PartnerKey = APartnerKey; ApSupplierRow.CurrencyCode = "EUR"; AMainDS.AApSupplier.Rows.Add(ApSupplierRow); Transaction.Commit(); return(Document); }
/// create new recurring gift info public static ARecurringGiftBatchRow CreateNewRecurringGiftInfo(Int64 APartnerKey, ref GiftBatchTDS AGiftDS) { ALedgerAccess.LoadAll(AGiftDS, DBAccess.GDBAccessObj.Transaction); AGiftDS = TGiftTransactionWebConnector.CreateARecurringGiftBatch(AGiftDS.ALedger[0].LedgerNumber); // Create a new RecurringGiftBatch ARecurringGiftBatchRow Batch = AGiftDS.ARecurringGiftBatch[0]; Batch.BankAccountCode = "6000"; Batch.CurrencyCode = "EUR"; // Create a new RecurringGift record ARecurringGiftRow RecurringGift = AGiftDS.ARecurringGift.NewRowTyped(); RecurringGift.LedgerNumber = Batch.LedgerNumber; RecurringGift.BatchNumber = Batch.BatchNumber; RecurringGift.GiftTransactionNumber = 1; RecurringGift.DonorKey = APartnerKey; AGiftDS.ARecurringGift.Rows.Add(RecurringGift); // Create a new RecurringGiftDetail record ARecurringGiftDetailRow RecurringGiftDetail = AGiftDS.ARecurringGiftDetail.NewRowTyped(); RecurringGiftDetail.LedgerNumber = Batch.LedgerNumber; RecurringGiftDetail.BatchNumber = Batch.BatchNumber; RecurringGiftDetail.GiftTransactionNumber = 1; RecurringGiftDetail.MotivationGroupCode = "GIFT"; RecurringGiftDetail.MotivationDetailCode = "SUPPORT"; RecurringGiftDetail.RecipientKey = APartnerKey; RecurringGiftDetail.RecipientLedgerNumber = APartnerKey; AGiftDS.ARecurringGiftDetail.Rows.Add(RecurringGiftDetail); return(Batch); }
/// create new gift info public static AGiftBatchRow CreateNewGiftInfo(Int64 APartnerKey, ref GiftBatchTDS AGiftDS, TDataBase ADataBase = null) { TDataBase db = DBAccess.Connect("CreateNewGiftInfo", ADataBase); bool NewTransaction; TDBTransaction Transaction = db.GetNewOrExistingTransaction(IsolationLevel.Serializable, out NewTransaction); ALedgerAccess.LoadAll(AGiftDS, Transaction); AGiftDS = TGiftTransactionWebConnector.CreateAGiftBatch(AGiftDS.ALedger[0].LedgerNumber, DateTime.Today, "Test batch", db); // Create a new GiftBatch AGiftBatchRow Batch = AGiftDS.AGiftBatch[0]; Batch.BankAccountCode = "6000"; Batch.BatchYear = 1; Batch.BatchPeriod = 1; Batch.CurrencyCode = "EUR"; Batch.BankCostCentre = Batch.LedgerNumber.ToString() + "00"; Batch.LastGiftNumber = 1; Batch.ExchangeRateToBase = 0.5M; // Create a new Gift record AGiftRow Gift = AGiftDS.AGift.NewRowTyped(); Gift.LedgerNumber = Batch.LedgerNumber; Gift.BatchNumber = Batch.BatchNumber; Gift.GiftTransactionNumber = 1; Gift.DonorKey = APartnerKey; AGiftDS.AGift.Rows.Add(Gift); // Create a new GiftDetail record AGiftDetailRow GiftDetail = AGiftDS.AGiftDetail.NewRowTyped(); GiftDetail.LedgerNumber = Gift.LedgerNumber; GiftDetail.BatchNumber = Gift.BatchNumber; GiftDetail.GiftTransactionNumber = Gift.GiftTransactionNumber; GiftDetail.DetailNumber = 1; GiftDetail.MotivationGroupCode = "GIFT"; GiftDetail.MotivationDetailCode = "SUPPORT"; // this won't work with RecipientKey 0 anymore. see https://github.com/openpetra/openpetra/issues/183 GiftDetail.RecipientKey = 43000000; GiftDetail.RecipientLedgerNumber = APartnerKey; GiftDetail.GiftTransactionAmount = 10; AGiftDS.AGiftDetail.Rows.Add(GiftDetail); if (NewTransaction) { Transaction.Rollback(); } return(Batch); }
public void Init() { TPetraServerConnector.Connect("../../etc/TestServer.config"); // These will be our test ledger numbers FTestLedgerList.AddRange(new int[] { 9997, 9998, 9999 }); // Load existing data FMainDS = new GLSetupTDS(); try { TDBTransaction transaction = new TDBTransaction(); TDataBase db = DBAccess.Connect("Init"); db.ReadTransaction( ref transaction, delegate { ALedgerAccess.LoadAll(FMainDS, transaction); }); // Check that our test rows are not in the database already if (!FindTestRows(FTestLedgerList)) { // Get the initial number of available ledgers FInitialLedgerCount = TGLSetupWebConnector.GetAvailableLedgers().DefaultView.Count; bool SubmitOK = true; db.WriteTransaction( ref transaction, ref SubmitOK, delegate { // Add our test rows AddTestRow(FTestLedgerList[0], "NUnitTestLedger1", false); AddTestRow(FTestLedgerList[1], "NUnitTestLedger2", true, "JPY"); AddTestRow(FTestLedgerList[2], "NUnitTestLedger2", true); // Save these new rows ALedgerAccess.SubmitChanges(FMainDS.ALedger, transaction); FMainDS.AcceptChanges(); }); FInitSucceeded = true; } } catch (Exception ex) { FInitExceptionMessage = ex.Message; } }
private void GetDataRow() { TDBTransaction Transaction = null; try { DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadUncommitted, TEnforceIsolationLevel.eilMinimum, ref Transaction, delegate { FLedgerTbl = ALedgerAccess.LoadAll(Transaction); // FLedgerTbl is static - this refreshes *any and all* TLedgerInfo objects. #region Validate Data 1 if ((FLedgerTbl == null) || (FLedgerTbl.Count == 0)) { throw new EFinanceSystemDataTableReturnedNoDataException(String.Format(Catalog.GetString( "Function:{0} - The Ledger table is empty or could not be accessed!"), Utilities.GetMethodName(true))); } #endregion Validate Data 1 FMyDataView = new DataView(FLedgerTbl); FMyDataView.RowFilter = String.Format("{0} = {1}", ALedgerTable.GetLedgerNumberDBName(), FLedgerNumber); //a_ledger_number_i #region Validate Data 2 if (FMyDataView.Count == 0) { throw new EFinanceSystemDataTableReturnedNoDataException(String.Format(Catalog.GetString( "Function:{0} - Ledger data for Ledger number {1} does not exist or could not be accessed!"), Utilities.GetMethodName(true), FLedgerNumber)); } #endregion Validate Data 2 FLedgerRow = (ALedgerRow)FMyDataView[0].Row; // More than one TLedgerInfo object may point to this same row. }); } catch (Exception ex) { TLogging.Log(String.Format("Method:{0} - Unexpected error!{1}{1}{2}", Utilities.GetMethodSignature(), Environment.NewLine, ex.Message)); throw ex; } }
/// <summary> /// Get Data Row /// </summary> private void GetDataRow() { TDBTransaction Transaction = new TDBTransaction(); try { TDataBase db = DBAccess.Connect("LedgerInfo.GetDataRow", FDataBase); db.ReadTransaction( ref Transaction, delegate { //Reload all ledgers each time FLedgerTbl = ALedgerAccess.LoadAll(Transaction); // FLedgerTbl is static - this refreshes *any and all* TLedgerInfo objects. #region Validate Data 1 if ((FLedgerTbl == null) || (FLedgerTbl.Count == 0)) { throw new EFinanceSystemDataTableReturnedNoDataException(String.Format(Catalog.GetString( "Function:{0} - The Ledger table is empty or could not be accessed!"), Utilities.GetMethodName(true))); } #endregion Validate Data 1 FMyDataView = new DataView(FLedgerTbl); FMyDataView.RowFilter = String.Format("{0} = {1}", ALedgerTable.GetLedgerNumberDBName(), FLedgerNumber); //a_ledger_number_i #region Validate Data 2 if (FMyDataView.Count == 0) { throw new EFinanceSystemDataTableReturnedNoDataException(String.Format(Catalog.GetString( "Function:{0} - Ledger data for Ledger number {1} does not exist or could not be accessed!"), Utilities.GetMethodName(true), FLedgerNumber)); } #endregion Validate Data 2 FLedgerRow = (FMyDataView.Count == 0?null:(ALedgerRow)FMyDataView[0].Row); }); if (FDataBase == null) { db.CloseDBConnection(); } } catch (Exception ex) { TLogging.LogException(ex, Utilities.GetMethodSignature()); throw; } }
public void UpdateRecord() { TDBTransaction ReadTransaction = new TDBTransaction(); GiftBatchTDS MainDS = new GiftBatchTDS(); TDataBase db = DBAccess.Connect("test"); db.ReadTransaction(ref ReadTransaction, delegate { ALedgerAccess.LoadAll(MainDS, ReadTransaction); }); ReadTransaction.Rollback(); MainDS.ALedger[0].LastGiftBatchNumber++; AGiftBatchRow batch = MainDS.AGiftBatch.NewRowTyped(); batch.LedgerNumber = MainDS.ALedger[0].LedgerNumber; batch.BatchNumber = MainDS.ALedger[0].LastGiftBatchNumber; batch.BankAccountCode = "6000"; batch.BatchYear = 0; batch.BatchPeriod = 1; batch.CurrencyCode = "EUR"; batch.BatchDescription = "test"; batch.BankCostCentre = (MainDS.ALedger[0].LedgerNumber * 100).ToString("0000"); batch.LastGiftNumber = 0; batch.HashTotal = 83; MainDS.AGiftBatch.Rows.Add(batch); GiftBatchTDSAccess.SubmitChanges(MainDS); MainDS.AcceptChanges(); MainDS.AGiftBatch[0].BatchDescription = "test2"; GiftBatchTDSAccess.SubmitChanges(MainDS); TDBTransaction transaction = new TDBTransaction(); AGiftBatchTable batches = null; db.ReadTransaction( ref transaction, delegate { batches = AGiftBatchAccess.LoadByPrimaryKey(batch.LedgerNumber, batch.BatchNumber, transaction); }); // some problems with sqlite and datagrid Assert.AreEqual(typeof(decimal), batches[0][AGiftBatchTable.ColumnHashTotalId].GetType(), "type decimal"); Assert.AreEqual(83.0m, batches[0].HashTotal, "gift batch hashtotal does not equal"); }
/// <summary> /// create a new ledger, with new ledgernumber /// </summary> /// <returns>ledgernumber of new ledger</returns> public static int CreateNewLedger(DateTime?AStartDate = null) { TDBTransaction ReadTransaction = null; ALedgerTable ledgers = null; DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction( IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, ref ReadTransaction, delegate { ledgers = ALedgerAccess.LoadAll(ReadTransaction); }); ledgers.DefaultView.Sort = ALedgerTable.GetLedgerNumberDBName() + " DESC"; int newLedgerNumber = ((ALedgerRow)ledgers.DefaultView[0].Row).LedgerNumber + 1; if (newLedgerNumber < 500) { // avoiding conflicts with foreign ledgers newLedgerNumber = 500; } if (AStartDate == null) { AStartDate = new DateTime(DateTime.Now.Year, 1, 1); } TLogging.Log("CommonNUnitFunctions.CreateNewLedger " + newLedgerNumber.ToString()); TVerificationResultCollection VerificationResult; TGLSetupWebConnector.CreateNewLedger(newLedgerNumber, "NUnit Test Ledger " + newLedgerNumber.ToString(), "99", "EUR", "USD", AStartDate.Value, 12, 1, 8, false, true, 1, true, out VerificationResult); return(newLedgerNumber); }
/// create new recurring gift info public static ARecurringGiftBatchRow CreateNewRecurringGiftInfo(Int64 APartnerKey, ref GiftBatchTDS AGiftDS, TDataBase ADataBase = null) { TDataBase db = DBAccess.Connect("CreateNewRecurringGiftInfo", ADataBase); bool NewTransaction; TDBTransaction Transaction = db.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, out NewTransaction); ALedgerAccess.LoadAll(AGiftDS, Transaction); AGiftDS = TGiftTransactionWebConnector.CreateARecurringGiftBatch(AGiftDS.ALedger[0].LedgerNumber, db); if (NewTransaction) { Transaction.Rollback(); } // Create a new RecurringGiftBatch ARecurringGiftBatchRow Batch = AGiftDS.ARecurringGiftBatch[0]; Batch.BankAccountCode = "6000"; Batch.CurrencyCode = "EUR"; // Create a new RecurringGift record ARecurringGiftRow RecurringGift = AGiftDS.ARecurringGift.NewRowTyped(); RecurringGift.LedgerNumber = Batch.LedgerNumber; RecurringGift.BatchNumber = Batch.BatchNumber; RecurringGift.GiftTransactionNumber = 1; RecurringGift.DonorKey = APartnerKey; AGiftDS.ARecurringGift.Rows.Add(RecurringGift); // Create a new RecurringGiftDetail record ARecurringGiftDetailRow RecurringGiftDetail = AGiftDS.ARecurringGiftDetail.NewRowTyped(); RecurringGiftDetail.LedgerNumber = Batch.LedgerNumber; RecurringGiftDetail.BatchNumber = Batch.BatchNumber; RecurringGiftDetail.GiftTransactionNumber = 1; RecurringGiftDetail.MotivationGroupCode = "GIFT"; RecurringGiftDetail.MotivationDetailCode = "SUPPORT"; RecurringGiftDetail.RecipientKey = 43000000; RecurringGiftDetail.RecipientLedgerNumber = APartnerKey; RecurringGiftDetail.GiftAmount = 10; AGiftDS.ARecurringGiftDetail.Rows.Add(RecurringGiftDetail); return(Batch); }
public void Init() { TPetraServerConnector.Connect("../../etc/TestServer.config"); // These will be our test ledger numbers FTestLedgerList.AddRange(new int[] { 9997, 9998, 9999 }); // Load existing data FMainDS = new GLSetupTDS(); try { TDBTransaction transaction = null; DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, ref transaction, delegate { ALedgerAccess.LoadAll(FMainDS, transaction); }); // Check that our test rows are not in the database already if (!FindTestRows(FTestLedgerList)) { // Get the initial number of available ledgers FInitialLedgerCount = TGLSetupWebConnector.GetAvailableLedgers().DefaultView.Count; // Add our test rows AddTestRow(FTestLedgerList[0], "NUnitTestLedger1", false); AddTestRow(FTestLedgerList[1], "NUnitTestLedger2", true, "JPY"); AddTestRow(FTestLedgerList[2], "NUnitTestLedger2", true); // Save these new rows ALedgerAccess.SubmitChanges(FMainDS.ALedger, null); FMainDS.AcceptChanges(); FInitSucceeded = true; } } catch (Exception ex) { FInitExceptionMessage = ex.Message; } }
/// <summary> /// create a new ledger, with new ledgernumber /// </summary> /// <returns>ledgernumber of new ledger</returns> public static int CreateNewLedger(DateTime?AStartDate = null) { TDBTransaction ReadTransaction = new TDBTransaction(); TDataBase db = DBAccess.Connect("NUnitFunctions.CreateNewLedger"); ALedgerTable ledgers = null; db.ReadTransaction(ref ReadTransaction, delegate { ledgers = ALedgerAccess.LoadAll(ReadTransaction); }); db.CloseDBConnection(); ledgers.DefaultView.Sort = ALedgerTable.GetLedgerNumberDBName() + " DESC"; int newLedgerNumber = ((ALedgerRow)ledgers.DefaultView[0].Row).LedgerNumber + 1; if (newLedgerNumber < 500) { // avoiding conflicts with foreign ledgers newLedgerNumber = 500; } if (AStartDate == null) { AStartDate = new DateTime(DateTime.Now.Year, 1, 1); } TLogging.Log("CommonNUnitFunctions.CreateNewLedger " + newLedgerNumber.ToString()); TVerificationResultCollection VerificationResult; TGLSetupWebConnector.CreateNewLedger(newLedgerNumber, "NUnit Test Ledger " + newLedgerNumber.ToString(), "99", "EUR", "USD", AStartDate.Value, 12, 1, 8, out VerificationResult); return(newLedgerNumber); }
/// create new gift info public static AGiftBatchRow CreateNewGiftInfo(Int64 APartnerKey, ref GiftBatchTDS AGiftDS) { ALedgerAccess.LoadAll(AGiftDS, DBAccess.GDBAccessObj.Transaction); AGiftDS = TGiftTransactionWebConnector.CreateAGiftBatch(AGiftDS.ALedger[0].LedgerNumber, DateTime.Today, "Test batch"); // Create a new GiftBatch AGiftBatchRow Batch = AGiftDS.AGiftBatch[0]; Batch.BankAccountCode = "6000"; Batch.BatchYear = 1; Batch.BatchPeriod = 1; Batch.CurrencyCode = "EUR"; Batch.BankCostCentre = Batch.LedgerNumber.ToString() + "00"; Batch.LastGiftNumber = 1; Batch.ExchangeRateToBase = 0.5M; // Create a new Gift record AGiftRow Gift = AGiftDS.AGift.NewRowTyped(); Gift.LedgerNumber = Batch.LedgerNumber; Gift.BatchNumber = Batch.BatchNumber; Gift.GiftTransactionNumber = 1; Gift.DonorKey = APartnerKey; AGiftDS.AGift.Rows.Add(Gift); // Create a new GiftDetail record AGiftDetailRow GiftDetail = AGiftDS.AGiftDetail.NewRowTyped(); GiftDetail.LedgerNumber = Gift.LedgerNumber; GiftDetail.BatchNumber = Gift.BatchNumber; GiftDetail.GiftTransactionNumber = Gift.GiftTransactionNumber; GiftDetail.DetailNumber = 1; GiftDetail.MotivationGroupCode = "GIFT"; GiftDetail.MotivationDetailCode = "SUPPORT"; GiftDetail.RecipientKey = 0; GiftDetail.RecipientLedgerNumber = APartnerKey; AGiftDS.AGiftDetail.Rows.Add(GiftDetail); return(Batch); }
private void GetDataRow() { bool NewTransaction = false; try { TDBTransaction transaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadUncommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); FLedgerTbl = ALedgerAccess.LoadAll(transaction); // FLedgerTbl is static - this refreshes *any and all* TLedgerInfo objects. MyView = new DataView(FLedgerTbl); MyView.RowFilter = "a_ledger_number_i = " + ledgerNumber; FLedgerRow = (ALedgerRow)MyView[0].Row; // More than one TLedgerInfo object may point to this same row. } finally { if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); } } }
public static void GetData(string ATablename, TSearchCriteria[] ASearchCriteria, out TTypedDataTable AResultTable, TDBTransaction AReadTransaction) { AResultTable = null; string context = string.Format("GetData {0}", SharedConstants.MODULE_ACCESS_MANAGER); // check access permissions for the current user TModuleAccessManager.CheckUserPermissionsForTable(ATablename, TTablePermissionEnum.eCanRead); // TODO: auto generate if (ATablename == AApSupplierTable.GetTableDBName()) { AResultTable = AApSupplierAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == AApDocumentTable.GetTableDBName()) { AResultTable = AApDocumentAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == ATransactionTypeTable.GetTableDBName()) { AResultTable = ATransactionTypeAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == ACurrencyTable.GetTableDBName()) { AResultTable = ACurrencyAccess.LoadAll(AReadTransaction); } else if (ATablename == ADailyExchangeRateTable.GetTableDBName()) { AResultTable = ADailyExchangeRateAccess.LoadAll(AReadTransaction); } else if (ATablename == ACorporateExchangeRateTable.GetTableDBName()) { AResultTable = ACorporateExchangeRateAccess.LoadAll(AReadTransaction); } else if (ATablename == ACurrencyLanguageTable.GetTableDBName()) { AResultTable = ACurrencyLanguageAccess.LoadAll(AReadTransaction); } else if (ATablename == AFeesPayableTable.GetTableDBName()) { AResultTable = AFeesPayableAccess.LoadAll(AReadTransaction); } else if (ATablename == AFeesReceivableTable.GetTableDBName()) { AResultTable = AFeesReceivableAccess.LoadAll(AReadTransaction); } else if (ATablename == AAnalysisTypeTable.GetTableDBName()) { AResultTable = AAnalysisTypeAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == AGiftBatchTable.GetTableDBName()) { AResultTable = AGiftBatchAccess.LoadAll(AReadTransaction); } else if (ATablename == AJournalTable.GetTableDBName()) { AResultTable = AJournalAccess.LoadAll(AReadTransaction); } else if (ATablename == ALedgerTable.GetTableDBName()) { AResultTable = ALedgerAccess.LoadAll(AReadTransaction); } else if (ATablename == MExtractMasterTable.GetTableDBName()) { if (ASearchCriteria == null) { AResultTable = MExtractMasterAccess.LoadAll(AReadTransaction); } else { AResultTable = MExtractMasterAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } } else if (ATablename == MExtractTable.GetTableDBName()) { // it does not make sense to load ALL extract rows for all extract masters so search criteria needs to be set if (ASearchCriteria != null) { AResultTable = MExtractAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } } else if (ATablename == PcAttendeeTable.GetTableDBName()) { AResultTable = PcAttendeeAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == PcConferenceCostTable.GetTableDBName()) { AResultTable = PcConferenceCostAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == PcEarlyLateTable.GetTableDBName()) { AResultTable = PcEarlyLateAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == PcSupplementTable.GetTableDBName()) { AResultTable = PcSupplementAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == PcDiscountTable.GetTableDBName()) { AResultTable = PcDiscountAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == PCountryTable.GetTableDBName()) { AResultTable = PCountryAccess.LoadAll(AReadTransaction); } else if (ATablename == PFormTable.GetTableDBName()) { string[] columns = TTypedDataTable.GetColumnStringList(PFormTable.TableId); StringCollection fieldList = new StringCollection(); for (int i = 0; i < columns.Length; i++) { // Do not load the template document - we don't display it and it is big! if (columns[i] != PFormTable.GetTemplateDocumentDBName()) { fieldList.Add(columns[i]); } } AResultTable = PFormAccess.LoadAll(fieldList, AReadTransaction); } else if (ATablename == PInternationalPostalTypeTable.GetTableDBName()) { AResultTable = PInternationalPostalTypeAccess.LoadAll(AReadTransaction); } else if (ATablename == PtApplicationTypeTable.GetTableDBName()) { AResultTable = PtApplicationTypeAccess.LoadAll(AReadTransaction); } else if (ATablename == PFormalityTable.GetTableDBName()) { AResultTable = PFormalityAccess.LoadAll(AReadTransaction); } else if (ATablename == PMailingTable.GetTableDBName()) { AResultTable = PMailingAccess.LoadAll(AReadTransaction); } else if (ATablename == PPartnerGiftDestinationTable.GetTableDBName()) { AResultTable = PPartnerGiftDestinationAccess.LoadUsingTemplate(ASearchCriteria, AReadTransaction); } else if (ATablename == PmDocumentTypeTable.GetTableDBName()) { AResultTable = PmDocumentTypeAccess.LoadAll(AReadTransaction); } else if (ATablename == SGroupTable.GetTableDBName()) { TSecurityChecks.CheckUserModulePermissions(SharedConstants.PETRAMODULE_SYSADMIN, context); AResultTable = SGroupAccess.LoadAll(AReadTransaction); } else if (ATablename == SSystemDefaultsTable.GetTableDBName()) { TSecurityChecks.CheckUserModulePermissions(SharedConstants.PETRAMODULE_SYSADMIN, context); AResultTable = SSystemDefaultsAccess.LoadAll(AReadTransaction); } else if (ATablename == SSystemDefaultsGuiTable.GetTableDBName()) { AResultTable = SSystemDefaultsGuiAccess.LoadAll(AReadTransaction); } else { throw new Exception("TCommonDataReader.GetData: unknown table " + ATablename); } // Accept row changes here so that the Client gets 'unmodified' rows AResultTable.AcceptChanges(); }
public static bool CreateUser(string AUsername, string APassword, string AFirstName, string AFamilyName, string AModulePermissions) { TDBTransaction ReadTransaction = null; TDBTransaction SubmitChangesTransaction = null; bool UserExists = false; bool SubmissionOK = false; // TODO: check permissions. is the current user allowed to create other users? SUserTable userTable = new SUserTable(); SUserRow newUser = userTable.NewRowTyped(); newUser.UserId = AUsername; newUser.FirstName = AFirstName; newUser.LastName = AFamilyName; if (AUsername.Contains("@")) { newUser.EmailAddress = AUsername; newUser.UserId = AUsername.Substring(0, AUsername.IndexOf("@")). Replace(".", string.Empty). Replace("_", string.Empty).ToUpper(); } // Check whether the user that we are asked to create already exists DBAccess.GDBAccessObj.BeginAutoReadTransaction(IsolationLevel.ReadCommitted, ref ReadTransaction, delegate { if (SUserAccess.Exists(newUser.UserId, ReadTransaction)) { TLogging.Log("Cannot create new user as a user with User Name '" + newUser.UserId + "' already exists!"); UserExists = true; } }); if (UserExists) { return(false); } userTable.Rows.Add(newUser); string UserAuthenticationMethod = TAppSettingsManager.GetValue("UserAuthenticationMethod", "OpenPetraDBSUser", false); if (UserAuthenticationMethod == "OpenPetraDBSUser") { if (APassword.Length > 0) { newUser.PasswordSalt = PasswordHelper.GetNewPasswordSalt(); newUser.PasswordHash = PasswordHelper.GetPasswordHash(APassword, newUser.PasswordSalt); newUser.PasswordNeedsChange = true; } } else { try { IUserAuthentication auth = TUserManagerWebConnector.LoadAuthAssembly(UserAuthenticationMethod); if (!auth.CreateUser(AUsername, APassword, AFirstName, AFamilyName)) { newUser = null; } } catch (Exception e) { TLogging.Log("Problem loading user authentication method " + UserAuthenticationMethod + ": " + e.ToString()); return(false); } } if (newUser != null) { DBAccess.GDBAccessObj.BeginAutoTransaction(IsolationLevel.Serializable, ref SubmitChangesTransaction, ref SubmissionOK, delegate { SUserAccess.SubmitChanges(userTable, SubmitChangesTransaction); List <string> modules = new List <string>(); if (AModulePermissions == DEMOMODULEPERMISSIONS) { modules.Add("PTNRUSER"); modules.Add("FINANCE-1"); ALedgerTable theLedgers = ALedgerAccess.LoadAll(SubmitChangesTransaction); foreach (ALedgerRow ledger in theLedgers.Rows) { modules.Add("LEDGER" + ledger.LedgerNumber.ToString("0000")); } } else { string[] modulePermissions = AModulePermissions.Split(new char[] { ',' }); foreach (string s in modulePermissions) { if (s.Trim().Length > 0) { modules.Add(s.Trim()); } } } SUserModuleAccessPermissionTable moduleAccessPermissionTable = new SUserModuleAccessPermissionTable(); foreach (string module in modules) { SUserModuleAccessPermissionRow moduleAccessPermissionRow = moduleAccessPermissionTable.NewRowTyped(); moduleAccessPermissionRow.UserId = newUser.UserId; moduleAccessPermissionRow.ModuleId = module; moduleAccessPermissionRow.CanAccess = true; moduleAccessPermissionTable.Rows.Add(moduleAccessPermissionRow); } SUserModuleAccessPermissionAccess.SubmitChanges(moduleAccessPermissionTable, SubmitChangesTransaction); // TODO: table permissions should be set by the module list // TODO: add p_data_label... tables here so user can generally have access string[] tables = new string[] { "p_bank", "p_church", "p_family", "p_location", "p_organisation", "p_partner", "p_partner_location", "p_partner_type", "p_person", "p_unit", "p_venue", "p_data_label", "p_data_label_lookup", "p_data_label_lookup_category", "p_data_label_use", "p_data_label_value_partner", }; SUserTableAccessPermissionTable tableAccessPermissionTable = new SUserTableAccessPermissionTable(); foreach (string table in tables) { SUserTableAccessPermissionRow tableAccessPermissionRow = tableAccessPermissionTable.NewRowTyped(); tableAccessPermissionRow.UserId = newUser.UserId; tableAccessPermissionRow.TableName = table; tableAccessPermissionTable.Rows.Add(tableAccessPermissionRow); } SUserTableAccessPermissionAccess.SubmitChanges(tableAccessPermissionTable, SubmitChangesTransaction); SubmissionOK = true; }); return(true); } return(false); }
public static bool GetData(string ATablename, TSearchCriteria[] ASearchCriteria, out TTypedDataTable AResultTable) { // TODO: check access permissions for the current user bool NewTransaction = false; TDBTransaction ReadTransaction; TTypedDataTable tempTable = null; try { ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.RepeatableRead, TEnforceIsolationLevel.eilMinimum, out NewTransaction); // TODO: auto generate if (ATablename == AApSupplierTable.GetTableDBName()) { tempTable = AApSupplierAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == AApDocumentTable.GetTableDBName()) { tempTable = AApDocumentAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == ATransactionTypeTable.GetTableDBName()) { tempTable = ATransactionTypeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == ACurrencyTable.GetTableDBName()) { tempTable = ACurrencyAccess.LoadAll(ReadTransaction); } else if (ATablename == ADailyExchangeRateTable.GetTableDBName()) { tempTable = ADailyExchangeRateAccess.LoadAll(ReadTransaction); } else if (ATablename == ACorporateExchangeRateTable.GetTableDBName()) { tempTable = ACorporateExchangeRateAccess.LoadAll(ReadTransaction); } else if (ATablename == ACurrencyLanguageTable.GetTableDBName()) { tempTable = ACurrencyLanguageAccess.LoadAll(ReadTransaction); } else if (ATablename == AFeesPayableTable.GetTableDBName()) { tempTable = AFeesPayableAccess.LoadAll(ReadTransaction); } else if (ATablename == AFeesReceivableTable.GetTableDBName()) { tempTable = AFeesReceivableAccess.LoadAll(ReadTransaction); } else if (ATablename == AAnalysisTypeTable.GetTableDBName()) { tempTable = AAnalysisTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == AGiftBatchTable.GetTableDBName()) { tempTable = AGiftBatchAccess.LoadAll(ReadTransaction); } else if (ATablename == AJournalTable.GetTableDBName()) { tempTable = AJournalAccess.LoadAll(ReadTransaction); } else if (ATablename == ALedgerTable.GetTableDBName()) { tempTable = ALedgerAccess.LoadAll(ReadTransaction); } else if (ATablename == MExtractMasterTable.GetTableDBName()) { if (ASearchCriteria == null) { tempTable = MExtractMasterAccess.LoadAll(ReadTransaction); } else { tempTable = MExtractMasterAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } } else if (ATablename == MExtractTable.GetTableDBName()) { // it does not make sense to load ALL extract rows for all extract masters so search criteria needs to be set if (ASearchCriteria != null) { tempTable = MExtractAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } } else if (ATablename == PcAttendeeTable.GetTableDBName()) { tempTable = PcAttendeeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcConferenceCostTable.GetTableDBName()) { tempTable = PcConferenceCostAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcEarlyLateTable.GetTableDBName()) { tempTable = PcEarlyLateAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcSupplementTable.GetTableDBName()) { tempTable = PcSupplementAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcDiscountTable.GetTableDBName()) { tempTable = PcDiscountAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PInternationalPostalTypeTable.GetTableDBName()) { tempTable = PInternationalPostalTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == PtApplicationTypeTable.GetTableDBName()) { tempTable = PtApplicationTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == PMailingTable.GetTableDBName()) { tempTable = PMailingAccess.LoadAll(ReadTransaction); } else if (ATablename == PPartnerGiftDestinationTable.GetTableDBName()) { tempTable = PPartnerGiftDestinationAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PmDocumentTypeTable.GetTableDBName()) { tempTable = PmDocumentTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == SGroupTable.GetTableDBName()) { tempTable = SGroupAccess.LoadAll(ReadTransaction); } else { throw new Exception("TCommonDataReader.GetData: unknown table " + ATablename); } } catch (Exception Exp) { DBAccess.GDBAccessObj.RollbackTransaction(); TLogging.Log("TCommonDataReader.GetData exception: " + Exp.ToString(), TLoggingType.ToLogfile); TLogging.Log(Exp.StackTrace, TLoggingType.ToLogfile); throw; } finally { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "TCommonDataReader.GetData: committed own transaction."); } } // Accept row changes here so that the Client gets 'unmodified' rows tempTable.AcceptChanges(); // return the table AResultTable = tempTable; return(true); }
public static bool CreateUser(string AUsername, string APassword, string AFirstName, string AFamilyName, string AModulePermissions, string AClientComputerName, string AClientIPAddress, TDBTransaction ATransaction = null) { TDataBase DBConnectionObj = DBAccess.GetDBAccessObj(ATransaction); TDBTransaction ReadWriteTransaction = null; bool SeparateDBConnectionEstablished = false; bool NewTransaction; bool SubmissionOK = false; // TODO: check permissions. is the current user allowed to create other users? SUserTable userTable = new SUserTable(); SUserRow newUser = userTable.NewRowTyped(); newUser.UserId = AUsername; newUser.FirstName = AFirstName; newUser.LastName = AFamilyName; if (AUsername.Contains("@")) { newUser.EmailAddress = AUsername; newUser.UserId = AUsername.Substring(0, AUsername.IndexOf("@")). Replace(".", string.Empty). Replace("_", string.Empty).ToUpper(); } if (DBConnectionObj == null) { // ATransaction was null and GDBAccess is also null: we need to establish a DB Connection manually here! DBConnectionObj = DBAccess.SimpleEstablishDBConnection("CreateUser"); SeparateDBConnectionEstablished = true; } ReadWriteTransaction = DBConnectionObj.GetNewOrExistingTransaction( IsolationLevel.Serializable, out NewTransaction, "CreateUser"); try { // Check whether the user that we are asked to create already exists if (SUserAccess.Exists(newUser.UserId, ReadWriteTransaction)) { TLogging.Log("Cannot create new user because a user with User Name '" + newUser.UserId + "' already exists!"); return(false); } newUser.PwdSchemeVersion = TPasswordHelper.CurrentPasswordSchemeNumber; userTable.Rows.Add(newUser); string UserAuthenticationMethod = TAppSettingsManager.GetValue("UserAuthenticationMethod", "OpenPetraDBSUser", false); if (UserAuthenticationMethod == "OpenPetraDBSUser") { if (APassword.Length > 0) { SetNewPasswordHashAndSaltForUser(newUser, APassword, AClientComputerName, AClientIPAddress, ReadWriteTransaction); if (AModulePermissions != TMaintenanceWebConnector.DEMOMODULEPERMISSIONS) { newUser.PasswordNeedsChange = true; } } } else { try { IUserAuthentication auth = TUserManagerWebConnector.LoadAuthAssembly(UserAuthenticationMethod); if (!auth.CreateUser(AUsername, APassword, AFirstName, AFamilyName)) { newUser = null; } } catch (Exception e) { TLogging.Log("Problem loading user authentication method " + UserAuthenticationMethod + ": " + e.ToString()); return(false); } } if (newUser != null) { SUserAccess.SubmitChanges(userTable, ReadWriteTransaction); List <string> modules = new List <string>(); if (AModulePermissions == DEMOMODULEPERMISSIONS) { modules.Add("PTNRUSER"); modules.Add("FINANCE-1"); ALedgerTable theLedgers = ALedgerAccess.LoadAll(ReadWriteTransaction); foreach (ALedgerRow ledger in theLedgers.Rows) { modules.Add("LEDGER" + ledger.LedgerNumber.ToString("0000")); } } else { string[] modulePermissions = AModulePermissions.Split(new char[] { ',' }); foreach (string s in modulePermissions) { if (s.Trim().Length > 0) { modules.Add(s.Trim()); } } } SUserModuleAccessPermissionTable moduleAccessPermissionTable = new SUserModuleAccessPermissionTable(); foreach (string module in modules) { SUserModuleAccessPermissionRow moduleAccessPermissionRow = moduleAccessPermissionTable.NewRowTyped(); moduleAccessPermissionRow.UserId = newUser.UserId; moduleAccessPermissionRow.ModuleId = module; moduleAccessPermissionRow.CanAccess = true; moduleAccessPermissionTable.Rows.Add(moduleAccessPermissionRow); } SUserModuleAccessPermissionAccess.SubmitChanges(moduleAccessPermissionTable, ReadWriteTransaction); // TODO: table permissions should be set by the module list // TODO: add p_data_label... tables here so user can generally have access string[] tables = new string[] { "p_bank", "p_church", "p_family", "p_location", "p_organisation", "p_partner", "p_partner_location", "p_partner_type", "p_person", "p_unit", "p_venue", "p_data_label", "p_data_label_lookup", "p_data_label_lookup_category", "p_data_label_use", "p_data_label_value_partner", }; SUserTableAccessPermissionTable tableAccessPermissionTable = new SUserTableAccessPermissionTable(); foreach (string table in tables) { SUserTableAccessPermissionRow tableAccessPermissionRow = tableAccessPermissionTable.NewRowTyped(); tableAccessPermissionRow.UserId = newUser.UserId; tableAccessPermissionRow.TableName = table; tableAccessPermissionTable.Rows.Add(tableAccessPermissionRow); } SUserTableAccessPermissionAccess.SubmitChanges(tableAccessPermissionTable, ReadWriteTransaction); TUserAccountActivityLog.AddUserAccountActivityLogEntry(newUser.UserId, TUserAccountActivityLog.USER_ACTIVITY_USER_RECORD_CREATED, String.Format(Catalog.GetString("The user record for the new user {0} got created by user {1}. "), newUser.UserId, UserInfo.GUserInfo.UserID) + String.Format(ResourceTexts.StrRequestCallerInfo, AClientComputerName, AClientIPAddress), ReadWriteTransaction); SubmissionOK = true; return(true); } } finally { if (NewTransaction) { if (SubmissionOK) { ReadWriteTransaction.DataBaseObj.CommitTransaction(); } else { ReadWriteTransaction.DataBaseObj.RollbackTransaction(); } if (SeparateDBConnectionEstablished) { DBConnectionObj.CloseDBConnection(); } } } return(false); }
public static bool GetData(string ATablename, TSearchCriteria[] ASearchCriteria, out TTypedDataTable AResultTable) { // TODO: check access permissions for the current user TDBTransaction ReadTransaction = null; TTypedDataTable tempTable = null; DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.RepeatableRead, TEnforceIsolationLevel.eilMinimum, ref ReadTransaction, delegate { // TODO: auto generate if (ATablename == AApSupplierTable.GetTableDBName()) { tempTable = AApSupplierAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == AApDocumentTable.GetTableDBName()) { tempTable = AApDocumentAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == ATransactionTypeTable.GetTableDBName()) { tempTable = ATransactionTypeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == ACurrencyTable.GetTableDBName()) { tempTable = ACurrencyAccess.LoadAll(ReadTransaction); } else if (ATablename == ADailyExchangeRateTable.GetTableDBName()) { tempTable = ADailyExchangeRateAccess.LoadAll(ReadTransaction); } else if (ATablename == ACorporateExchangeRateTable.GetTableDBName()) { tempTable = ACorporateExchangeRateAccess.LoadAll(ReadTransaction); } else if (ATablename == ACurrencyLanguageTable.GetTableDBName()) { tempTable = ACurrencyLanguageAccess.LoadAll(ReadTransaction); } else if (ATablename == AFeesPayableTable.GetTableDBName()) { tempTable = AFeesPayableAccess.LoadAll(ReadTransaction); } else if (ATablename == AFeesReceivableTable.GetTableDBName()) { tempTable = AFeesReceivableAccess.LoadAll(ReadTransaction); } else if (ATablename == AAnalysisTypeTable.GetTableDBName()) { tempTable = AAnalysisTypeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == AGiftBatchTable.GetTableDBName()) { tempTable = AGiftBatchAccess.LoadAll(ReadTransaction); } else if (ATablename == AJournalTable.GetTableDBName()) { tempTable = AJournalAccess.LoadAll(ReadTransaction); } else if (ATablename == ALedgerTable.GetTableDBName()) { tempTable = ALedgerAccess.LoadAll(ReadTransaction); } else if (ATablename == MExtractMasterTable.GetTableDBName()) { if (ASearchCriteria == null) { tempTable = MExtractMasterAccess.LoadAll(ReadTransaction); } else { tempTable = MExtractMasterAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } } else if (ATablename == MExtractTable.GetTableDBName()) { // it does not make sense to load ALL extract rows for all extract masters so search criteria needs to be set if (ASearchCriteria != null) { tempTable = MExtractAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } } else if (ATablename == PcAttendeeTable.GetTableDBName()) { tempTable = PcAttendeeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcConferenceCostTable.GetTableDBName()) { tempTable = PcConferenceCostAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcEarlyLateTable.GetTableDBName()) { tempTable = PcEarlyLateAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcSupplementTable.GetTableDBName()) { tempTable = PcSupplementAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcDiscountTable.GetTableDBName()) { tempTable = PcDiscountAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PFormTable.GetTableDBName()) { string[] columns = TTypedDataTable.GetColumnStringList(PFormTable.TableId); StringCollection fieldList = new StringCollection(); for (int i = 0; i < columns.Length; i++) { // Do not load the template document - we don't display it and it is big! if (columns[i] != PFormTable.GetTemplateDocumentDBName()) { fieldList.Add(columns[i]); } } tempTable = PFormAccess.LoadAll(fieldList, ReadTransaction); } else if (ATablename == PInternationalPostalTypeTable.GetTableDBName()) { tempTable = PInternationalPostalTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == PtApplicationTypeTable.GetTableDBName()) { tempTable = PtApplicationTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == PFormalityTable.GetTableDBName()) { tempTable = PFormalityAccess.LoadAll(ReadTransaction); } else if (ATablename == PMailingTable.GetTableDBName()) { tempTable = PMailingAccess.LoadAll(ReadTransaction); } else if (ATablename == PPartnerGiftDestinationTable.GetTableDBName()) { tempTable = PPartnerGiftDestinationAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PmDocumentTypeTable.GetTableDBName()) { tempTable = PmDocumentTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == SGroupTable.GetTableDBName()) { tempTable = SGroupAccess.LoadAll(ReadTransaction); } else { throw new Exception("TCommonDataReader.GetData: unknown table " + ATablename); } }); // Accept row changes here so that the Client gets 'unmodified' rows tempTable.AcceptChanges(); // return the table AResultTable = tempTable; return(true); }