Skip to content

clsPaymentPreference

clsPaymentPreference is the claimant payment-method preference business object. It implements the iPaymentPreference interface defined in SAIF.Business.Payment, enabling application-layer code to work with payment preference objects through a common contract. It determines how a claimant wants to receive payments (check, direct deposit, or debit card).

Purpose

  • Persist and retrieve payment method preferences for claimants.
  • Implement the iPaymentPreference contract to integrate with the broader SAIF payment framework.
  • Expose AllowDebitCard to control whether the debit-card payment option is available to this payee.

Context

  • Namespace: SAIF.Business.Payment.EFT
  • Assembly/package: SAIF.BOF.Business.Payment.EFT (NuGet)
  • Implements: iPaymentPreference (SAIF.Business.Payment), IBusinessCriteria
  • Inherits: clsBusinessBase (SAIF.BOF.Framework)

Public members

Member Signature Purpose
PAYMENT_PREFERENCE_TYPE_CHECK Public Const PAYMENT_PREFERENCE_TYPE_CHECK = "CHK" Code constant representing the check payment preference type.
PAYMENT_PREFERENCE_TYPE_DIRECTDEPOSIT Public Const PAYMENT_PREFERENCE_TYPE_DIRECTDEPOSIT = "DD" Code constant representing the direct-deposit payment preference type.
PAYMENT_PREFERENCE_TYPE_DEBITCARD Public Const PAYMENT_PREFERENCE_TYPE_DEBITCARD = "DC" Code constant representing the debit-card payment preference type.
AllowDebitCard Public ReadOnly Property AllowDebitCard As Boolean Indicates whether debit-card payment is allowed for this payee; true only when the payee's PayeeType is Worker.
BankAccountNumber Public Property BankAccountNumber As String Gets or sets the decrypted (or masked, per MyCriteria.MaskBankNumbers) bank account number stored on PaymentAuthorization.BankAccount; setting a changed value flags the account for re-validation.
BankAccountTypeCode Public Property BankAccountTypeCode As String Gets or sets the bank account type code delegated to PaymentAuthorization.BankAccount.BankAccountTypeCode.
BankRoutingNumber Public Property BankRoutingNumber As String Gets or sets the decrypted (or masked) bank routing number stored on PaymentAuthorization.BankAccount; setting a changed value flags the account for re-validation.
Payee Public ReadOnly Property Payee As iPayee The payee (claimant) associated with this payment preference.
IsBusinessAccount Public Property IsBusinessAccount As Boolean Gets or sets whether the bank account is a business account, mapped to clsConsumerBusinessCode.BUSINESS/CONSUMER on PaymentAuthorization.BankAccount.
SendEmailNotification Public Property SendEmailNotification As Boolean Gets or sets whether the customer receives email notifications; setting True populates PaymentAuthorization.CustomerContactEmailAddress from Payee.EmailAddress.
PaymentPreferenceType Public ReadOnly Property PaymentPreferenceType As iPaymentPreference.PaymentPreferenceTypes The strongly-typed payment preference type (Check, DirectDeposit, DebitCard) selected for this payee.
PaymentPreferenceTypeCode Public ReadOnly Property PaymentPreferenceTypeCode As String The short code (CHK/DD/DC) corresponding to PaymentPreferenceType; returns "?????" for an unrecognized type.*
MaskedBankAccountNumber Public ReadOnly Property MaskedBankAccountNumber As String The masked bank account number from PaymentAuthorization.BankAccount, or empty string if no authorization has been created yet.
MaskedBankRoutingNumber Public ReadOnly Property MaskedBankRoutingNumber As String The masked bank routing number from PaymentAuthorization.BankAccount, or empty string if no authorization has been created yet.
PayeeHasForeignOrIATAddress Public ReadOnly Property PayeeHasForeignOrIATAddress As Boolean True when any IAT address field (IATCity, IATStreet, IATCountryCode, IATPostalCode, IATStateOrProvince) is populated, or when Payee.Address.IsForeign is true.
MaskedSSNTaxID Public ReadOnly Property MaskedSSNTaxID As String The masked SSN/tax ID, showing only the last four digits of DebitCard.PrimaryTaxID.
SSNTaxID Public Property SSNTaxID As String Gets or sets DebitCard.PrimaryTaxID; get returns the masked value when MyCriteria.MaskBankNumbers is set.
IsIAT Public Property IsIAT As Boolean Gets or sets PaymentAuthorization.IATFlag (International ACH Transaction flag) as a boolean.
IATCity Public Property IATCity As String Gets or sets PaymentAuthorization.IATCity.
IATCountryCode Public Property IATCountryCode As String Gets or sets PaymentAuthorization.IATCountryCode.
CountryCodeList Public ReadOnly Property CountryCodeList As SAIF.Business.CodeMappings.clsCountryCodeList Lazily-loaded, statically-cached country code list retrieved via SAIF.Business.CodeMappings.GetCountryCodeList.
IATCountryName Public ReadOnly Property IATCountryName As String The description text for IATCountryCode looked up from CountryCodeList; returns empty string if the lookup fails.
IATStateOrProvince Public Property IATStateOrProvince As String Gets or sets PaymentAuthorization.IATStateProvince.
IATPostalCode Public Property IATPostalCode As String Gets or sets PaymentAuthorization.IATPostalCode.
IATStreet Public Property IATStreet As String Gets or sets PaymentAuthorization.IATStreetAddress.
SecondBankAccountNumber Public Property SecondBankAccountNumber As String A secondary bank account number used for confirmation/re-entry during account entry or change.*
DebitCard Public ReadOnly Property DebitCard As clsDebitCardEnrollmentRequest The associated debit-card enrollment request; retrieves an existing request when PaymentAuthorization is a debit-card authorization with a populated EnrollRequestSeqNum, otherwise creates a new one via clsDebitCardEnrollmentRequest.NewDebitCardEnrollmentRequest. Added as a child object.
PaymentAuthorization Public ReadOnly Property PaymentAuthorization As clsEFTAuthorization The underlying clsEFTAuthorization child object that backs most bank-account and IAT properties on this class.
BankAccountTypeDescription Public ReadOnly Property BankAccountTypeDescription As String Localized description ("Checking"/"Savings") for the bank account type, resolved from Resources.Business_Payment_EFT.
PaymentPreferenceTypeDescription Public ReadOnly Property PaymentPreferenceTypeDescription As String Localized description of PaymentPreferenceType ("Check"/"Debit card"/"Direct deposit"), resolved from Resources.Business_Payment_EFT.
NewPaymentPreference Public Shared Function NewPaymentPreference(inDataPortal As IDataPortalInfo, inPayee As iPayee, inPaymentPreferenceType As iPaymentPreference.PaymentPreferenceTypes, inIsSAIFUser As Boolean, inMaskBankNumbers As Boolean, inBankValidatorXMLDocument As XDocument) As clsPaymentPreference Creates a new, unsaved clsPaymentPreference for the given payee and preference type.
GetPaymentPreference Public Shared Function GetPaymentPreference(inDataPortal As IDataPortalInfo, inPayee As iPayee, inIsUserSAIFEmployee As Boolean, inMaskBankNumbers As Boolean, inBankValidatorXMLDocument As XDocument) As clsPaymentPreference Retrieves the existing payment preference for the given payee.
IsValidPayee Public Function IsValidPayee() As Boolean Returns true when Payee.Name is populated and is not the "empty payee" placeholder message (clsEligPayeeClaimCollection.MSG_EMPTY_PAYEE).
IsValid Public Overrides ReadOnly Property IsValid As Boolean Triggers bank-number validation when needed, validates the PaymentAuthorization and DebitCard child objects, and returns true only when no validation errors are outstanding.
IsDirty Public Overrides ReadOnly Property IsDirty As Boolean True when the base object or either the PaymentAuthorization or DebitCard child object has unsaved changes.
ConvertToPaymentPreferenceType Public Shared Function ConvertToPaymentPreferenceType(inPaymentPreferenceTypeCode As String) As iPaymentPreference.PaymentPreferenceTypes Converts a short payment-preference code (CHK/DD/DC) to the corresponding iPaymentPreference.PaymentPreferenceTypes value.
Save Public Overrides Function Save() As Boolean Persists the payment preference and its child objects (PaymentAuthorization, DebitCard) through the data portal.

Inherited public members

Member Signature Purpose
DataPortalInfo (via Criteria) Public Property DataPortalInfo() As IDataPortalInfo implemented from IBusinessCriteria on the nested Criteria class Carries the data-portal connection/context information used for retrieve/insert/update/delete operations.*

Behavioral notes

  • AllowDebitCard governs whether the calling application layer presents the debit-card payment option; exact eligibility condition not traced to source.**
  • The full iPaymentPreference interface contract members are defined in SAIF.BOF.Business.Payment; all contract members are implemented here.*

Constraints and usage notes

  • Scope is claimants; use clsProviderPaymentPreference for medical/service providers.
  • The iPaymentPreference contract is defined in SAIF.BOF.Business.Payment; breaking changes there directly impact this class.

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.

Sources

  • Business\SAIF.Business.Payment.EFT\clsPaymentPreference.vb