/// <summary> /// Validates the ReallocationJournal Dialog. /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AAmountEnabled">True if txtDetailAmount is enabled (rather than txtDetailPercentage).</param> /// <param name="ATotalAmount">The total amount for the allocation.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> /// <returns>True if the validation found no data validation errors, otherwise false.</returns> public static bool ValidateReallocationJournalDialog(object AContext, GLBatchTDSATransactionRow ARow, bool AAmountEnabled, decimal?ATotalAmount, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TScreenVerificationResult VerificationResult = null; int VerifResultCollAddedCount = 0; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return(true); } ValidationColumn = ARow.Table.Columns[GLBatchTDSATransactionTable.ColumnTransactionAmountId]; // an individual amount cannot be great than total amount if (AAmountEnabled && (ARow.TransactionAmount > ATotalAmount)) { if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = new TScreenVerificationResult( new TVerificationResult(AContext, ErrorCodes.GetErrorInfo( PetraErrorCodes.ERR_AMOUNT_TOO_LARGE, new string[] { ARow.TransactionAmount.ToString() })), ValidationColumn, ValidationControlsData.ValidationControl); } } // Handle addition to/removal from TVerificationResultCollection if (AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn)) { VerifResultCollAddedCount++; } VerificationResult = null; ValidationColumn = ARow.Table.Columns[GLBatchTDSATransactionTable.ColumnPercentageId]; // a percentage cannot be greater than 100% if (!AAmountEnabled && (ARow.Percentage > 100)) { if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = new TScreenVerificationResult( new TVerificationResult(AContext, ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_PERCENTAGE_TOO_LARGE)), ValidationColumn, ValidationControlsData.ValidationControl); } } // Handle addition to/removal from TVerificationResultCollection if (AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn)) { VerifResultCollAddedCount++; } return(VerifResultCollAddedCount == 0); }
/// <summary> /// Additional manual validation for Form Design Setup /// </summary> /// <param name="AContext">Context that describes what I'm validating.</param> /// <param name="ARow">DataRow with the the data I'm validating</param> /// <param name="AVerificationResultCollection">Will be filled with TVerificationResult items if data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> public static void ValidateFormDesignManual(object AContext, PFormRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult; // FormTypeCode must not be blank DataColumn ValidationColumn = ARow.Table.Columns[PFormTable.ColumnFormTypeCodeId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TStringChecks.StringMustNotBeEmpty(ARow.FormTypeCode, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } // MinimumAmount must be zero or positive ValidationColumn = ARow.Table.Columns[PFormTable.ColumnMinimumAmountId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TNumericalChecks.IsPositiveOrZeroDecimal(ARow.MinimumAmount, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } // Description must not be blank ValidationColumn = ARow.Table.Columns[PFormTable.ColumnFormDescriptionId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TStringChecks.StringMustNotBeEmpty(ARow.FormDescription, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } // Formality level must be between 1 and 6 ValidationColumn = ARow.Table.Columns[PFormTable.ColumnFormalityLevelId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TNumericalChecks.IsInRange(ARow.FormalityLevel, 1, 6, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }
/// <summary> /// Check that Foreign Currency Accounts are using a valid currency /// </summary> /// <param name="AContext">Context that describes what I'm validating.</param> /// <param name="ARow">DataRow with the the data I'm validating</param> /// <param name="AVerificationResultCollection">Will be filled with TVerificationResult items if data validation errors occur.</param> public static void ValidateAccountDetailManual(object AContext, GLSetupTDSAAccountRow ARow, ref TVerificationResultCollection AVerificationResultCollection) { // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } if (ARow.ForeignCurrencyFlag) { if ((ARow.AccountType != MFinanceConstants.ACCOUNT_TYPE_ASSET) && (ARow.AccountType != MFinanceConstants.ACCOUNT_TYPE_LIABILITY)) { DataColumn ValidationColumn = ARow.Table.Columns[AAccountTable.ColumnAccountTypeId]; TScreenVerificationResult VerificationResult = new TScreenVerificationResult( AContext, ValidationColumn, string.Format(Catalog.GetString("A foreign currency account's Account Type must be either '{0}' or '{1}'."), MFinanceConstants.ACCOUNT_TYPE_ASSET, MFinanceConstants.ACCOUNT_TYPE_LIABILITY), TResultSeverity.Resv_Critical); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult); } if (!ARow.PostingStatus) { DataColumn ValidationColumn = ARow.Table.Columns[AAccountTable.ColumnPostingStatusId]; TScreenVerificationResult VerificationResult = new TScreenVerificationResult( AContext, ValidationColumn, Catalog.GetString("A foreign currency account must be a posting account; it cannot be a summary account."), TResultSeverity.Resv_Critical); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult); } // If this account is foreign, its currency must be assigned! if (ARow.ForeignCurrencyCode == "") { DataColumn ValidationColumn = ARow.Table.Columns[AAccountTable.ColumnForeignCurrencyCodeId]; TScreenVerificationResult VerificationResult = new TScreenVerificationResult( AContext, ValidationColumn, Catalog.GetString("Currency Code must be specified for foreign accounts."), TResultSeverity.Resv_Critical); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult); } } else // If the Account is not foreign, I have nothing at all to say about the contents of the currency field. { AVerificationResultCollection.AddOrRemove(null, ARow.Table.Columns[AAccountTable.ColumnForeignCurrencyCodeId]); } }
private void ValidateDataDetailsManual(GLBatchTDSATransactionRow ARow) { TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; TSharedFinanceValidation_GL.ValidateAllocationJournalDialog(this, ARow, rbtAmountOption.Checked, txtTotalAmount.NumberValueDecimal, ref VerificationResultCollection, FPetraUtilsObject.ValidationControlsDict); if (!FAnalysisAttributesLogic.AccountAnalysisAttributeCountIsCorrect(ARow.TransactionNumber, ARow.AccountCode, FMainDS)) { DataColumn ValidationColumn; TVerificationResult VerificationResult = null; object ValidationContext; ValidationColumn = ARow.Table.Columns[ATransactionTable.ColumnAccountCodeId]; ValidationContext = "unused because of OverrideResultText"; // This code is only running because of failure, so cause an error to occur. VerificationResult = TStringChecks.StringMustNotBeEmpty("", ValidationContext.ToString(), this, ValidationColumn, null); VerificationResult.OverrideResultText(String.Format(Catalog.GetString( "A value must be entered for the 'Analysis Attribute' for the 'From Allocation's' Account Code {0}."), ARow.AccountCode)); // Handle addition/removal to/from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(grdToAnalAttributes, VerificationResult, ValidationColumn, true); } String ValueRequiredForType; if (!FAnalysisAttributesLogic.AccountAnalysisAttributesValuesExist(ARow.TransactionNumber, ARow.AccountCode, FMainDS, out ValueRequiredForType)) { DataColumn ValidationColumn; TVerificationResult VerificationResult = null; object ValidationContext; ValidationColumn = ARow.Table.Columns[ATransactionTable.ColumnAccountCodeId]; ValidationContext = String.Format("Analysis code {0} for Account Code {1}", ValueRequiredForType, ARow.AccountCode); // This code is only running because of failure, so cause an error to occur. VerificationResult = TStringChecks.StringMustNotBeEmpty("", ValidationContext.ToString(), this, ValidationColumn, null); // Handle addition/removal to/from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn, true); } if ((VerificationResultCollection.Count == 0) && FValidateEverything) { ValidateEverything(); } }
/// <summary> /// Validates the Corporate Exchange Rates screen data. /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> public static void ValidateCorporateExchangeRate(object AContext, ACorporateExchangeRateRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } // RateOfExchange must be positive (definitely not zero because we can invert it) ValidationColumn = ARow.Table.Columns[ACorporateExchangeRateTable.ColumnRateOfExchangeId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TNumericalChecks.IsPositiveDecimal(ARow.RateOfExchange, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } // Date must not be empty ValidationColumn = ARow.Table.Columns[ACorporateExchangeRateTable.ColumnDateEffectiveFromId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TDateChecks.IsNotUndefinedDateTime(ARow.DateEffectiveFrom, ValidationControlsData.ValidationControlLabel, true, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } // Date must be first of month ValidationColumn = ARow.Table.Columns[ACorporateExchangeRateTable.ColumnDateEffectiveFromId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TDateChecks.IsNotCorporateDateTime(ARow.DateEffectiveFrom, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }
private void ValidateDataManual(PcConferenceRow ARow) { PcDiscountTable DiscountTable = FMainDS.PcDiscount; TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; TValidationControlsData ValidationControlsData; TScreenVerificationResult VerificationResult = null; DataColumn ValidationColumn; List <string> CriteriaCodesUsed = new List <string>(); foreach (PcDiscountRow Row in DiscountTable.Rows) { if ((Row.RowState != DataRowState.Deleted) && (Row.DiscountCriteriaCode != "CHILD")) { if (Row.Discount > 100) { ValidationColumn = Row.Table.Columns[PcDiscountTable.ColumnDiscountId]; // displays a warning message VerificationResult = new TScreenVerificationResult(new TVerificationResult(this, ErrorCodes.GetErrorInfo( PetraErrorCodes.ERR_DISCOUNT_PERCENTAGE_GREATER_THAN_100)), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn); } if (!CriteriaCodesUsed.Exists(element => element == Row.DiscountCriteriaCode)) { CriteriaCodesUsed.Add(Row.DiscountCriteriaCode); } } } string[] CriteriaCodesUsedArray = CriteriaCodesUsed.ToArray(); if (!TRemote.MConference.Conference.WebConnectors.CheckDiscountCriteriaCodeExists(CriteriaCodesUsedArray)) { ValidationColumn = DiscountTable.Columns[PcDiscountTable.ColumnDiscountCriteriaCodeId]; // displays a warning message VerificationResult = new TScreenVerificationResult(new TVerificationResult(this, ErrorCodes.GetErrorInfo( PetraErrorCodes.ERR_DISCOUNT_CRITERIA_CODE_DOES_NOT_EXIST)), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn); } }
/// <summary> /// Validates the GL Batch Date dialog. /// </summary> /// <param name="ABatchDate">The Data being validated</param> /// <param name="ADescription">Description of control</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AStartDateCurrentPeriod">If the caller knows this value it can be supplied. Otherwise the server will supply the value for the ledger.</param> /// <param name="AEndDateLastForwardingPeriod">If the caller knows this value it can be supplied. Otherwise the server will supply the value for the ledger.</param> /// <param name="AControl"></param> /// <returns>True if the validation found no data validation errors, otherwise false.</returns> public static bool ValidateGLBatchDateManual(DateTime?ABatchDate, string ADescription, ref TVerificationResultCollection AVerificationResultCollection, DateTime AStartDateCurrentPeriod, DateTime AEndDateLastForwardingPeriod, Control AControl) { TScreenVerificationResult VerificationResult = null; int VerifResultCollAddedCount = 0; // 'Reversal Date' must be a valid date TVerificationResult Result = TSharedValidationControlHelper.IsNotInvalidDate(ABatchDate, ADescription, AVerificationResultCollection, true, AControl, null, AControl); if (Result != null) { VerificationResult = new TScreenVerificationResult(Result, null, AControl); } // Handle addition/removal to/from TVerificationResultCollection if (AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AControl, VerificationResult, null, true)) { VerifResultCollAddedCount++; } else { // 'Reversal Date' must lie within the required date range Result = TDateChecks.IsDateBetweenDates(ABatchDate, AStartDateCurrentPeriod, AEndDateLastForwardingPeriod, ADescription, TDateBetweenDatesCheckType.dbdctUnspecific, TDateBetweenDatesCheckType.dbdctUnspecific, AControl, null, AControl); if (Result != null) { VerificationResult = new TScreenVerificationResult(Result, null, AControl); } // Handle addition/removal to/from TVerificationResultCollection if (AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AControl, VerificationResult, null, true)) { VerifResultCollAddedCount++; } } return(VerifResultCollAddedCount == 0); }
/// <summary> /// Detail 'Amount' must be positive or 0 /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> public static void ValidateApDocumentDetailManual(object AContext, AApDocumentDetailRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } // 'Detail Amount' must be positive or 0 ValidationColumn = ARow.Table.Columns[AApDocumentDetailTable.ColumnAmountId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TNumericalChecks.IsPositiveOrZeroDecimal(ARow.Amount, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }
/// <summary> /// Validates the MPartner Marital Status screen data. /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> public static void ValidateConferenceCostType(object AContext, PcCostTypeRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult = null; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } // 'UnassignableDate' must not be empty if the flag is set ValidationColumn = ARow.Table.Columns[PcCostTypeTable.ColumnUnassignableDateId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { if (ARow.UnassignableFlag) { VerificationResult = TSharedValidationControlHelper.IsNotInvalidDate(ARow.UnassignableDate, ValidationControlsData.ValidationControlLabel, AVerificationResultCollection, true, AContext, ValidationColumn, ValidationControlsData.ValidationControl); } // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }
private void ValidateDataDetailsManual(ABatchRow ARow) { if ((ARow == null) || (ARow.BatchStatus != MFinanceConstants.BATCH_UNPOSTED)) { return; } TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; ParseHashTotal(ARow); TSharedFinanceValidation_GL.ValidateGLBatchManual(this, ARow, ref VerificationResultCollection, FValidationControlsDict, FStartDateCurrentPeriod, FEndDateLastForwardingPeriod); //TODO: remove this once database definition is set for Batch Description to be NOT NULL // Description is mandatory then make sure it is set if (txtDetailBatchDescription.Text.Length == 0) { DataColumn ValidationColumn; TVerificationResult VerificationResult = null; object ValidationContext; ValidationColumn = ARow.Table.Columns[ABatchTable.ColumnBatchDescriptionId]; ValidationContext = String.Format("Batch number {0}", ARow.BatchNumber); VerificationResult = TStringChecks.StringMustNotBeEmpty(ARow.BatchDescription, "Description of " + ValidationContext, this, ValidationColumn, null); // Handle addition/removal to/from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn, true); } }
/// <summary> /// Detail 'Amount' must be positive or 0 /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> public static void ValidateApDocumentDetailManual(object AContext, AApDocumentDetailRow ARow, ref TVerificationResultCollection AVerificationResultCollection) { DataColumn ValidationColumn; TVerificationResult VerificationResult; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } // 'Detail Amount' must be positive or 0 ValidationColumn = ARow.Table.Columns[AApDocumentDetailTable.ColumnAmountId]; if (true) { VerificationResult = TNumericalChecks.IsPositiveOrZeroDecimal(ARow.IsAmountNull() ? 0 : ARow.Amount, String.Empty, AContext, ValidationColumn); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult); } }
private void ValidateDataDetailsManual(ARecurringJournalRow ARow) { TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; TSharedFinanceValidation_GL.ValidateRecurringGLJournalManual(this, ARow, ref VerificationResultCollection, FValidationControlsDict); //TODO: remove this once database definition is set for Batch Description to be NOT NULL // Description is mandatory then make sure it is set if (txtDetailJournalDescription.Text.Length == 0) { DataColumn ValidationColumn; TVerificationResult VerificationResult = null; object ValidationContext; ValidationColumn = ARow.Table.Columns[ARecurringJournalTable.ColumnJournalDescriptionId]; ValidationContext = String.Format("Recurring Batch no.: {0}, Journal no.: {1}", ARow.BatchNumber, ARow.JournalNumber); VerificationResult = TStringChecks.StringMustNotBeEmpty(ARow.JournalDescription, "Description of " + ValidationContext, this, ValidationColumn, null); // Handle addition/removal to/from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn, true); } }
private void ValidateDataDetailsManual(ARecurringGiftBatchRow ARow) { if (ARow == null) { return; } TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; //Hash total special case in view of the textbox handling ParseHashTotal(ARow); TSharedFinanceValidation_Gift.ValidateRecurringGiftBatchManual(this, ARow, ref VerificationResultCollection, FValidationControlsDict); //TODO: remove this once database definition is set for Batch Description to be NOT NULL // Description is mandatory then make sure it is set if (txtDetailBatchDescription.Text.Length == 0) { DataColumn ValidationColumn; TVerificationResult VerificationResult = null; object ValidationContext; ValidationColumn = ARow.Table.Columns[ARecurringGiftBatchTable.ColumnBatchDescriptionId]; ValidationContext = String.Format("Recurring Batch number {0}", ARow.BatchNumber); VerificationResult = TStringChecks.StringMustNotBeEmpty(ARow.BatchDescription, "Description of " + ValidationContext, this, ValidationColumn, null); // Handle addition/removal to/from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn, true); } }
/// <summary> /// /// </summary> /// <param name="AContext"></param> /// <param name="ARow"></param> /// <param name="AVerificationResultCollection"></param> /// <param name="AValidationControlsDict"></param> public static void ValidateAdminGrantReceivable(object AContext, AFeesReceivableRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { // ChargeOption = { "Minimum", "Maximum", "Fixed", "Percentage" } // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } if (ARow.ChargeOption == "Percentage") { DataColumn ValidationColumn = ARow.Table.Columns[AFeesReceivableTable.ColumnChargePercentageId]; TValidationControlsData ValidationControlsData; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { decimal enteredValue = (ARow.IsChargePercentageNull() ? -1 : ARow.ChargePercentage); // If the user has cleared the value in the control, I'll treat it as -1. TVerificationResult VerificationResult = TNumericalChecks.IsPositiveDecimal(enteredValue, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } } else // the ChargeOption relates to an amount { DataColumn ValidationColumn = ARow.Table.Columns[AFeesReceivableTable.ColumnChargeAmountId]; TValidationControlsData ValidationControlsData; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { decimal enteredValue = (ARow.IsChargeAmountNull() ? -1 : ARow.ChargeAmount); // If the user has cleared the value in the control, I'll treat it as -1. TVerificationResult VerificationResult = TNumericalChecks.IsPositiveDecimal(enteredValue, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } } }
private void ValidateDataDetailsManual(AMotivationDetailRow ARow) { TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult; Boolean KeyMinistryActive; // Partner Key must be for a Key Ministry and Key Ministry must not be deactivated if (Convert.ToInt64(txtDetailRecipientKey.Text) != 0) { ValidationColumn = FMainDS.AMotivationDetail[0].Table.Columns[AMotivationDetailTable.ColumnRecipientKeyId]; if (FPetraUtilsObject.ValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { if (TRemote.MFinance.Gift.WebConnectors.KeyMinistryExists(Convert.ToInt64(txtDetailRecipientKey.Text), out KeyMinistryActive)) { if (!KeyMinistryActive) { // Key Ministry is deactivated and therefore can't be used here VerificationResult = new TScreenVerificationResult(new TVerificationResult(this, ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_KEY_MINISTRY_DEACTIVATED)), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection. VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn); } } else { // Partner Key does not refer to Key Ministry VerificationResult = new TScreenVerificationResult(new TVerificationResult(this, ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_NOT_A_KEY_MINISTRY)), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection. VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn); } } } TSharedFinanceValidation_Gift.ValidateGiftMotivationSetupManual(this, ARow, FTaxDeductiblePercentageEnabled, ref VerificationResultCollection, FPetraUtilsObject.ValidationControlsDict); }
/// <summary> /// Validates the GL Batch data. /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> /// <param name="AStartDateCurrentPeriod">If the caller knows this value it can be supplied. Otherwise the server will supply the value for the ledger.</param> /// <param name="AEndDateLastForwardingPeriod">If the caller knows this value it can be supplied. Otherwise the server will supply the value for the ledger.</param> /// <returns>True if the validation found no data validation errors, otherwise false.</returns> public static bool ValidateGLBatchManual(object AContext, ABatchRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict, DateTime?AStartDateCurrentPeriod = null, DateTime?AEndDateLastForwardingPeriod = null) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TScreenVerificationResult VerificationResult; object ValidationContext; int VerifResultCollAddedCount = 0; // Don't validate deleted or posted DataRows if ((ARow.RowState == DataRowState.Deleted) || (ARow.BatchStatus == MFinanceConstants.BATCH_POSTED)) { return(true); } bool isImporting = AContext.ToString().Contains("Importing"); // 'Effective From Date' must be valid ValidationColumn = ARow.Table.Columns[ABatchTable.ColumnDateEffectiveId]; ValidationContext = ARow.BatchNumber; DateTime StartDateCurrentPeriod; DateTime EndDateLastForwardingPeriod; if ((AStartDateCurrentPeriod == null) || (AEndDateLastForwardingPeriod == null)) { TSharedFinanceValidationHelper.GetValidPostingDateRange(ARow.LedgerNumber, out StartDateCurrentPeriod, out EndDateLastForwardingPeriod); } else { StartDateCurrentPeriod = AStartDateCurrentPeriod.Value; EndDateLastForwardingPeriod = AEndDateLastForwardingPeriod.Value; } if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = (TScreenVerificationResult)TDateChecks.IsDateBetweenDates(ARow.DateEffective, StartDateCurrentPeriod, EndDateLastForwardingPeriod, ValidationControlsData.ValidationControlLabel + (isImporting ? String.Empty : " of Batch Number " + ValidationContext.ToString()), TDateBetweenDatesCheckType.dbdctUnspecific, TDateBetweenDatesCheckType.dbdctUnspecific, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition/removal to/from TVerificationResultCollection if (AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn, true)) { VerifResultCollAddedCount++; } } return(VerifResultCollAddedCount == 0); }
private void ValidateDataDetailsManual(PcDiscountRow ARow) { if (txtDetailDiscount.Text == "") { ARow.Discount = 0; } // check that default data exists in database TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; TValidationControlsData ValidationControlsData; TScreenVerificationResult VerificationResult = null; DataColumn ValidationColumn; if (ARow.RowState != DataRowState.Deleted) { if (!TRemote.MConference.Conference.WebConnectors.CheckDiscountCriteriaCodeExists(new string[] { ARow.DiscountCriteriaCode })) { ValidationColumn = ARow.Table.Columns[PcDiscountTable.ColumnDiscountCriteriaCodeId]; // displays a warning message VerificationResult = new TScreenVerificationResult(new TVerificationResult(this, ErrorCodes.GetErrorInfo( PetraErrorCodes.ERR_DISCOUNT_CRITERIA_CODE_DOES_NOT_EXIST)), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn); } if (!TRemote.MConference.Conference.WebConnectors.CheckCostTypeExists(ARow.CostTypeCode)) { ValidationColumn = ARow.Table.Columns[PcDiscountTable.ColumnCostTypeCodeId]; // displays a warning message VerificationResult = new TScreenVerificationResult(new TVerificationResult(this, ErrorCodes.GetErrorInfo( PetraErrorCodes.ERR_COST_TYPE_CODE_DOES_NOT_EXIST)), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn); } } EnableOrDisableCmb(ARow); }
/// <summary> /// Validates the MConference Standard Cost Setup screen data. /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> /// <param name="AGridData">A <see cref="TValidationControlsDict" />Contains all rows that are included in the grid</param> public static void ValidateConferenceStandardCost(object AContext, PcConferenceCostRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict, DataRowCollection AGridData) { // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } // Check the row being validated is consistent with the rest of the data in the table PcConferenceCostRow ARowCompare = null; Boolean StandardCostInconsistency = false; string[] InconsistentRows = new string[2]; // used for the error message int i = 0; while (i < AGridData.Count) { ARowCompare = (PcConferenceCostRow)AGridData[i]; if ((ARowCompare.RowState != DataRowState.Deleted) && (ARowCompare.OptionDays > ARow.OptionDays) && (ARowCompare.Charge < ARow.Charge)) { StandardCostInconsistency = true; InconsistentRows[0] = ARow.OptionDays.ToString(); InconsistentRows[1] = ARowCompare.OptionDays.ToString(); break; } else if ((ARowCompare.RowState != DataRowState.Deleted) && (ARowCompare.OptionDays < ARow.OptionDays) && (ARowCompare.Charge > ARow.Charge)) { StandardCostInconsistency = true; InconsistentRows[0] = ARowCompare.OptionDays.ToString(); InconsistentRows[1] = ARow.OptionDays.ToString(); break; } i++; } // if an inconsistency is found if (StandardCostInconsistency == true) { TValidationControlsData ValidationControlsData; TScreenVerificationResult VerificationResult = null; DataColumn ValidationColumn = ARow.Table.Columns[PcConferenceCostTable.ColumnChargeId]; // displays a warning message (non-critical error) VerificationResult = new TScreenVerificationResult(new TVerificationResult(AContext, ErrorCodes.GetErrorInfo( PetraErrorCodes.ERR_STANDARD_COST_INCONSISTENCY, InconsistentRows)), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }
/// <summary> /// Validates SUser Details /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> public static void ValidateSUserDetails(object AContext, SUserRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult = null; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } ValidationColumn = ARow.Table.Columns[SUserTable.ColumnPasswordHashId]; AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData); // PasswordHash must not be empty. if ((ARow.RowState != DataRowState.Unchanged) && string.IsNullOrEmpty(ARow.PasswordHash)) { VerificationResult = new TScreenVerificationResult(new TVerificationResult(AContext, ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_MISSING_PASSWORD, new string[] { ARow.UserId })), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } // If this is a first password (no salt) check that the password is valid. if ((ARow.RowState != DataRowState.Unchanged) && string.IsNullOrEmpty(ARow.PasswordSalt) && !string.IsNullOrEmpty(ARow.PasswordHash)) { VerificationResult = null; if (!CheckPasswordQuality(ARow.PasswordHash, out VerificationResult)) { VerificationResult = new TScreenVerificationResult(VerificationResult, ValidationColumn, ValidationControlsData.ValidationControl); AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } } }
private void ValidateFeeCode(string AFeeCode, TVerificationResultCollection AVerificationResultCollection) { TScreenVerificationResult result = null; string context = "ReceivableCrossCodeCheck"; if (FExtraDS.AFeesPayable.DefaultView.Find(new object[] { LedgerNumber, AFeeCode }) >= 0) { // oops - we have this code in the other data set result = new TScreenVerificationResult(context, FMainDS.AFeesReceivable.ColumnFeeCode, Catalog.GetString("The Fee Code has already been used as a Fee Code in the 'Payable Administration Grants' screen"), CommonErrorCodes.ERR_DUPLICATE_RECORD, txtDetailFeeCode, TResultSeverity.Resv_Critical); } AVerificationResultCollection.Auto_Add_Or_AddOrRemove(context, result, FMainDS.AFeesReceivable.ColumnFeeCode); }
/// <summary> /// /// </summary> /// <param name="AContext"></param> /// <param name="ARow"></param> /// <param name="AVerificationResultCollection"></param> public static void ValidateAccountingPeriod(object AContext, AAccountingPeriodRow ARow, ref TVerificationResultCollection AVerificationResultCollection) { DataColumn ValidationColumn; TVerificationResult VerificationResult; // 'Period End Date' must be later than 'Period Start Date' ValidationColumn = ARow.Table.Columns[AAccountingPeriodTable.ColumnPeriodEndDateId]; if (true) { VerificationResult = TDateChecks.FirstGreaterOrEqualThanSecondDate(ARow.PeriodEndDate, ARow.PeriodStartDate, String.Empty, String.Empty, AContext, ValidationColumn); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult); } }
/// <summary> /// A public validation method that can be called from the screen in ManualValidation. /// It checks that there were no errors in displaying the controls on the screen. /// </summary> /// <param name="ARowValue">The current value for the setting</param> /// <param name="ADataColum">The data column that holds the value</param> /// <param name="AContext">A validation context</param> /// <param name="AVerificationResults">The verification result collection to add any errors to</param> /// <returns>True if there are no errors, false otherwise</returns> public bool Validate(string ARowValue, DataColumn ADataColum, object AContext, TVerificationResultCollection AVerificationResults) { TVerificationResult verificationResult = null; if (ARowValue == TGuiControlsDataTable.CONTROL_DEFINITION_ERROR) { // This message should not occur in production because any control definition errors should have been discovered in testing. // They arise if the content of the s_system_defaults_gui_controls table is not correct or if // the default value contains an array of values that does not match the array size of the controls in the controls table. string message = Catalog.GetString("There is an error in the database relating to the set-up of this row. "); message += Catalog.GetString( "In order to avoid saving badly constructed data to the System Settings table you must close the screen. "); message += Catalog.GetString( "You can re-open it and continue to change the settings in other rows, but do not select the current row until the problem is fixed."); verificationResult = new TScreenVerificationResult(AContext, ADataColum, message, null, TResultSeverity.Resv_Critical); } AVerificationResults.Auto_Add_Or_AddOrRemove(AContext, verificationResult, ADataColum); return(verificationResult == null); }
/// <summary> /// /// </summary> /// <param name="AContext"></param> /// <param name="ARow"></param> /// <param name="AVerificationResultCollection"></param> /// <param name="AValidationControlsDict"></param> public static void ValidateAccountingPeriod(object AContext, AAccountingPeriodRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult; // 'Period End Date' must be later than 'Period Start Date' ValidationColumn = ARow.Table.Columns[AAccountingPeriodTable.ColumnPeriodEndDateId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TDateChecks.FirstGreaterOrEqualThanSecondDate(ARow.PeriodEndDate, ARow.PeriodStartDate, ValidationControlsData.ValidationControlLabel, ValidationControlsData.SecondValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }
private void ValidateDataDetailsManual(AGiftBatchRow ARow) { if ((ARow == null) || (ARow.BatchStatus != MFinanceConstants.BATCH_UNPOSTED)) { return; } TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; //Hash total special case in view of the textbox handling ParseHashTotal(ARow); //Check if the user has made a Bank Cost Centre or Account Code inactive //this was removed because of speed issues! //TODO: Revisit this //RefreshBankCostCentreAndAccountCodes(); TSharedFinanceValidation_Gift.ValidateGiftBatchManual(this, ARow, ref VerificationResultCollection, FValidationControlsDict, FAccountTable, FCostCentreTable); //TODO: remove this once database definition is set for Batch Description to be NOT NULL // Description is mandatory then make sure it is set if (txtDetailBatchDescription.Text.Length == 0) { DataColumn ValidationColumn; TVerificationResult VerificationResult = null; object ValidationContext; ValidationColumn = ARow.Table.Columns[AGiftBatchTable.ColumnBatchDescriptionId]; ValidationContext = String.Format("Batch number {0}", ARow.BatchNumber); VerificationResult = TStringChecks.StringMustNotBeEmpty(ARow.BatchDescription, "Description of " + ValidationContext, this, ValidationColumn, null); // Handle addition/removal to/from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn, true); } }
/// <summary> /// Check that Foreign Currency Accounts are using a valid currency /// </summary> /// <param name="AContext">Context that describes what I'm validating.</param> /// <param name="ARow">DataRow with the the data I'm validating</param> /// <param name="AVerificationResultCollection">Will be filled with TVerificationResult items if data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> public static void ValidateAccountDetailManual(object AContext, GLSetupTDSAAccountRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } TValidationControlsData ValidationControlsData; // If this account is foreign, its currency must be assigned! if (ARow.ForeignCurrencyFlag) { if (ARow.ForeignCurrencyCode == "") { DataColumn ValidationColumn = ARow.Table.Columns[AAccountTable.ColumnForeignCurrencyCodeId]; Control targetControl = null; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { targetControl = ValidationControlsData.ValidationControl; } TScreenVerificationResult VerificationResult = new TScreenVerificationResult( AContext, ValidationColumn, Catalog.GetString("Currency Code must be specified for foreign accounts."), targetControl, TResultSeverity.Resv_Critical); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } } else // If the Account is not foreign, I have nothing at all to say about the contents of the currency field. { AVerificationResultCollection.AddOrRemove(null, ARow.Table.Columns[AAccountTable.ColumnForeignCurrencyCodeId]); } }
private void ValidateDataDetailsManual(PDataLabelRow ARow) { // For this validation we have to validate the UsedBy data here in the manual code. // This is because it is not backed directly by a row in a data table. // Nor is the control associated with a column in any data table TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; DataColumn ValidationColumn; TVerificationResult VerificationResult = null; // Personnel context is bound to be valid because it has no UsedBy UI if ((CurrentContext == Context.Partner) || (CurrentContext == Context.Application)) { // The added column at the end of the table, which is a concatenated string of checkedListBox entries, must not be empty ValidationColumn = ARow.Table.Columns[UsedByColumnOrdinal]; VerificationResult = TStringChecks.StringMustNotBeEmpty(ARow[UsedByColumnOrdinal].ToString(), GUIUsedBy, this, ValidationColumn, clbUsedBy); if (VerificationResult != null) { if (CurrentContext == Context.Partner) { VerificationResult.OverrideResultText(Catalog.GetString("You must check at least one box in the list of Partner classes.")); } else if (CurrentContext == Context.Application) { VerificationResult.OverrideResultText(Catalog.GetString("You must check at least one box in the list of Application types.")); } } // Handle addition to/removal from TVerificationResultCollection. VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn, false); } // Now call the central validation routine for the other verification tasks TSharedValidation_CacheableDataTables.ValidateLocalDataFieldSetup(this, ARow, ref VerificationResultCollection, FPetraUtilsObject.ValidationControlsDict); }
private void ValidateDataManual(PmGeneralApplicationRow ARow) { TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult = null; TSharedPersonnelValidation_Personnel.ValidateGeneralApplicationManual(this, ARow, true, ref VerificationResultCollection, FValidationControlsDict); TSharedPersonnelValidation_Personnel.ValidateEventApplicationManual(this, FMainDS.PmShortTermApplication[0], ref VerificationResultCollection, FValidationControlsDict); if (FDelegateCheckEventApplicationDuplicate != null) { // Same 'Event' must only exist for one application per person ValidationColumn = FMainDS.PmShortTermApplication[0].Table.Columns[PmShortTermApplicationTable.ColumnStConfirmedOptionId]; if (FValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { if (FDelegateCheckEventApplicationDuplicate(ARow.ApplicationKey, ARow.RegistrationOffice, FMainDS.PmShortTermApplication[0].StConfirmedOption)) { VerificationResult = new TScreenVerificationResult(new TVerificationResult(this, ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_APPLICATION_DUPLICATE_EVENT, new string[] { FMainDS.PmShortTermApplication[0].StConfirmedOption.ToString() })), ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection. // Only add/remove verification result if duplicate found as same field has already been // handled in TSharedPersonnelValidation_Personnel.ValidateEventApplicationManual VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn); } } } }
private void ValidateDataDetailsManual(SSystemDefaultsRow ARow) { if (FShowingSysAdminCodes) { return; } TVerificationResultCollection verificationResults = FPetraUtilsObject.VerificationResultCollection; DataColumn validationColumn = ARow.Table.Columns[SSystemDefaultsTable.ColumnDefaultValueId]; TVerificationResult verificationResult = null; // First we need to validate that there were no errors setting up the controls for this row if (!FControlsDataTable.Validate(ARow.DefaultValue, validationColumn, this, verificationResults)) { // No point in carrying on with other validations because the controls are all messed up return; } // Individual rows can be validated to check that settings code values are ok. if (string.Compare(ARow.DefaultCode, SharedConstants.SYSDEFAULT_LOCALISEDCOUNTYLABEL, true) == 0) { Control[] validationControl = pnlValues.Controls.Find("cValue_0", true); if (validationControl.Length > 0) { verificationResult = TStringChecks.StringMustNotBeEmpty(ARow.DefaultValue, "", this, validationColumn, validationControl[0]); if (verificationResult != null) { verificationResult.OverrideResultText(CommonResourcestrings.StrSettingCannotBeEmpty); } } verificationResults.Auto_Add_Or_AddOrRemove(this, verificationResult, validationColumn); } }
private void ValidateDataDetailsManual(ARecurringJournalRow ARow) { TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; // Description is mandatory then make sure it is set if (ARow.ExchangeRateToBase <= 0) { DataColumn ValidationColumn; TVerificationResult VerificationResult = null; object ValidationContext; ValidationColumn = ARow.Table.Columns[ARecurringJournalTable.ColumnExchangeRateToBaseId]; ValidationContext = String.Format("Recurring Batch no.: {0}, Journal no.: {1}", ARow.BatchNumber, ARow.JournalNumber); VerificationResult = TNumericalChecks.IsNegativeOrZeroDecimal(ARow.ExchangeRateToBase, "Exchange rate of " + ValidationContext, this, ValidationColumn, null); // Handle addition/removal to/from TVerificationResultCollection VerificationResultCollection.Auto_Add_Or_AddOrRemove(this, VerificationResult, ValidationColumn, true); } }
/// <summary> /// Validates the Daily Exchange Rates screen data. /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> /// <param name="AMinDateTime">The earliest allowable date.</param> /// <param name="AMaxDateTime">The latest allowable date.</param> public static void ValidateDailyExchangeRate(object AContext, ADailyExchangeRateRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict, DateTime AMinDateTime, DateTime AMaxDateTime) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } // RateOfExchange must be positive (definitely not zero because we can invert it) ValidationColumn = ARow.Table.Columns[ADailyExchangeRateTable.ColumnRateOfExchangeId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TNumericalChecks.IsPositiveDecimal(ARow.RateOfExchange, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } // Date must not be empty and must be in range ValidationColumn = ARow.Table.Columns[ADailyExchangeRateTable.ColumnDateEffectiveFromId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TSharedValidationControlHelper.IsNotInvalidDate(ARow.DateEffectiveFrom, ValidationControlsData.ValidationControlLabel, AVerificationResultCollection, true, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); if (VerificationResult == null) { if ((AMinDateTime > DateTime.MinValue) && (AMaxDateTime < DateTime.MaxValue)) { // Check that the date is in range VerificationResult = TDateChecks.IsDateBetweenDates(ARow.DateEffectiveFrom, AMinDateTime, AMaxDateTime, ValidationControlsData.ValidationControlLabel, TDateBetweenDatesCheckType.dbdctUnspecific, TDateBetweenDatesCheckType.dbdctUnspecific, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } else if (AMaxDateTime < DateTime.MaxValue) { VerificationResult = TDateChecks.FirstLesserOrEqualThanSecondDate(ARow.DateEffectiveFrom, AMaxDateTime, ValidationControlsData.ValidationControlLabel, Ict.Common.StringHelper.DateToLocalizedString(AMaxDateTime), AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } else if (AMinDateTime > DateTime.MinValue) { VerificationResult = TDateChecks.FirstGreaterOrEqualThanSecondDate(ARow.DateEffectiveFrom, AMinDateTime, ValidationControlsData.ValidationControlLabel, Ict.Common.StringHelper.DateToLocalizedString(AMinDateTime), AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } } } // Time must not be negative (indicating an error) ValidationColumn = ARow.Table.Columns[ADailyExchangeRateTable.ColumnTimeEffectiveFromId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TTimeChecks.IsValidIntegerTime(ARow.TimeEffectiveFrom, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }