Skip to content

SAIF.Business.Provider.PaymentPreference business rules

This page captures business rules enforced by this library.

BR-01: PaperlessEOBFlag is set to "Y" only when ExtUserTypeSeqNum is non-zero and non-empty at insert time; otherwise defaults to "N".

Field Value
Statement PaperlessEOBFlag is set to "Y" only when ExtUserTypeSeqNum is non-zero and non-empty at insert time; otherwise defaults to "N".
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEOB.BeforeInsert
Outcome PaperlessEOBFlag is set to "Y" only when ExtUserTypeSeqNum is non-zero and non-empty at insert time; otherwise defaults to "N".
Confidence Verified
Tables PROVIDER_EOB_INTERFACE
SQL SQL-001
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOB.vb

BR-02: DefaultPrimaryFlag is always initialized to "N" on new EOB creation.

Field Value
Statement DefaultPrimaryFlag is always initialized to "N" on new EOB creation.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEOB.Create and clsProviderEOB.BeforeInsert
Outcome DefaultPrimaryFlag is always initialized to "N" on new EOB creation.
Confidence Verified
Tables PROVIDER_EOB_INTERFACE
SQL SQL-001
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOB.vb

BR-03: Insert contention check: if RowsAffected <> 1 after insert, an InsertError error message is added and the record is not marked old.

Field Value
Statement Insert contention check: if RowsAffected <> 1 after insert, an InsertError error message is added and the record is not marked old.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEOB.AfterInsert
Outcome Insert contention check: if RowsAffected <> 1 after insert, an InsertError error message is added and the record is not marked old.
Confidence Verified
Tables PROVIDER_EOB_INTERFACE
SQL SQL-001
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOB.vb

BR-04: Update contention check: if RowsAffected <> 1 after update, DBContentionError is added. UPDATE_NUM must match for the WHERE clause to succeed.

Field Value
Statement Update contention check: if RowsAffected <> 1 after update, DBContentionError is added. UPDATE_NUM must match for the WHERE clause to succeed.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEOB.AfterUpdate; SQL WHERE UPDATE_NUM = :UpdateNum
Outcome Update contention check: if RowsAffected <> 1 after update, DBContentionError is added. UPDATE_NUM must match for the WHERE clause to succeed.
Confidence Verified
Tables PROVIDER_EOB_INTERFACE
SQL SQL-013
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOB.vb

BR-05: Delete contention check: if RowsAffected <> 1 after delete, DBContentionError is added.

Field Value
Statement Delete contention check: if RowsAffected <> 1 after delete, DBContentionError is added.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEOB.AfterDelete
Outcome Delete contention check: if RowsAffected <> 1 after delete, DBContentionError is added.
Confidence Verified
Tables PROVIDER_EOB_INTERFACE
SQL SQL-015
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOB.vb

BR-06: An EFT record is considered active only when today falls within [EffDate, ExpDate] (inclusive). If either date is null, IsActive = False.

Field Value
Statement An EFT record is considered active only when today falls within [EffDate, ExpDate] (inclusive). If either date is null, IsActive = False.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.IsActive
Outcome An EFT record is considered active only when today falls within [EffDate, ExpDate] (inclusive). If either date is null, IsActive = False.
Confidence Verified
Tables PROVIDER_EFT_INTERFACE, EXT_USER_TYPE, EXT_USER, PERSON
SQL SQL-008
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-07: A provider location has EFT (direct deposit) only when PaymentPreferenceType = DirectDeposit AND IsRevokeDateNull (authorization has not been revoked).

Field Value
Statement A provider location has EFT (direct deposit) only when PaymentPreferenceType = DirectDeposit AND IsRevokeDateNull (authorization has not been revoked).
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.LocationHasEFT
Outcome A provider location has EFT (direct deposit) only when PaymentPreferenceType = DirectDeposit AND IsRevokeDateNull (authorization has not been revoked).
Confidence Verified
Tables PROVIDER_EFT_INTERFACE, EXT_USER_TYPE, EXT_USER, PERSON
SQL SQL-008
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-08: When assigning a new payment preference to an EFT that is already saved and currently Direct Deposit, the existing authorization is revoked before the new one is applied. If the existing EFT is new (unsaved) or is a Check-type, it is simply overwritten.

Field Value
Statement When assigning a new payment preference to an EFT that is already saved and currently Direct Deposit, the existing authorization is revoked before the new one is applied. If the existing EFT is new (unsaved) or is a Check-type, it is simply overwritten.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.ProviderPaymentPreference setter
Outcome When assigning a new payment preference to an EFT that is already saved and currently Direct Deposit, the existing authorization is revoked before the new one is applied. If the existing EFT is new (unsaved) or is a Check-type, it is simply overwritten.
Confidence Verified
Tables PROVIDER_EFT_INTERFACE
SQL SQL-003
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-09: On AssignPaymentLocation, CustomerEmailNotificationFlag is always set to "Y" and CustomerContactEmailAddress is populated from ExtUserEmailAddr, ensuring the customer receives notification of an EFT assignment.

Field Value
Statement On AssignPaymentLocation, CustomerEmailNotificationFlag is always set to "Y" and CustomerContactEmailAddress is populated from ExtUserEmailAddr, ensuring the customer receives notification of an EFT assignment.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.AssignPaymentLocation
Outcome On AssignPaymentLocation, CustomerEmailNotificationFlag is always set to "Y" and CustomerContactEmailAddress is populated from ExtUserEmailAddr, ensuring the customer receives notification of an EFT assignment.
Confidence Verified
Tables PROVIDER_LOCATION, PROVIDER_EFT_INTERFACE, EXT_USER_TYPE, EXT_USER, EMAIL_ADDRESS
SQL SQL-012
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-10: On UnAssignPaymentLocation, ExpDate is set to today, and the active authorization is revoked. For SAIF employees (IsUserSAIFEmployee = True), authorization is revoked with False (internal path); for non-employees, with True (external path).

Field Value
Statement On UnAssignPaymentLocation, ExpDate is set to today, and the active authorization is revoked. For SAIF employees (IsUserSAIFEmployee = True), authorization is revoked with False (internal path); for non-employees, with True (external path).
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.UnAssignPaymentLocation, RevokeAuthorization
Outcome On UnAssignPaymentLocation, ExpDate is set to today, and the active authorization is revoked. For SAIF employees (IsUserSAIFEmployee = True), authorization is revoked with False (internal path); for non-employees, with True (external path).
Confidence Verified
Tables PROVIDER_EFT_INTERFACE
SQL SQL-014
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-11: ExtUserTypeSeqNum is cleared (set empty) when the EFT is being expired (ExpDate > MinValue and no explicit new value supplied) or when no admin user is present. It is set from the incoming inValue when a new EFT is being opened, and from adminUserSeqNum otherwise.

Field Value
Statement ExtUserTypeSeqNum is cleared (set empty) when the EFT is being expired (ExpDate > MinValue and no explicit new value supplied) or when no admin user is present. It is set from the incoming inValue when a new EFT is being opened, and from adminUserSeqNum otherwise.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.SetExtUserTypeSeqNum
Outcome ExtUserTypeSeqNum is cleared (set empty) when the EFT is being expired (ExpDate > MinValue and no explicit new value supplied) or when no admin user is present. It is set from the incoming inValue when a new EFT is being opened, and from adminUserSeqNum otherwise.
Confidence Verified
Tables PROVIDER_EFT_INTERFACE
SQL SQL-003
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-12: EFT insert contention: RowsAffected <> 1 triggers InsertError. Child payment preferences are saved only after a successful insert (SaveChildObject called in AfterInsert).

Field Value
Statement EFT insert contention: RowsAffected <> 1 triggers InsertError. Child payment preferences are saved only after a successful insert (SaveChildObject called in AfterInsert).
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.AfterInsert
Outcome EFT insert contention: RowsAffected <> 1 triggers InsertError. Child payment preferences are saved only after a successful insert (SaveChildObject called in AfterInsert).
Confidence Verified
Tables PROVIDER_EFT_INTERFACE
SQL SQL-003
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-13: EFT update contention: RowsAffected <> 1 triggers DBContentionError. UPDATE_NUM is incremented and child preferences saved only on success.

Field Value
Statement EFT update contention: RowsAffected <> 1 triggers DBContentionError. UPDATE_NUM is incremented and child preferences saved only on success.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.AfterUpdate
Outcome EFT update contention: RowsAffected <> 1 triggers DBContentionError. UPDATE_NUM is incremented and child preferences saved only on success.
Confidence Verified
Tables PROVIDER_EFT_INTERFACE
SQL SQL-014
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-14: Bank account status 'DELET' is excluded from all bank account retrievals for a provider.

Field Value
Statement Bank account status 'DELET' is excluded from all bank account retrievals for a provider.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderBankAccountCollection.GetProviderBankAccounts SQL
Outcome Bank account status 'DELET' is excluded from all bank account retrievals for a provider.
Confidence Verified
Tables BANK_ACCOUNT, PAYMENT_AUTHORIZATION, PROVIDER_LOCATION
SQL SQL-004
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderBankAccounts.vb

BR-15: Provider location EFT eligibility requires an active physical address (PROVIDER_ADDRESS_CODE = 'PHY', EFF_DATE <= trunc(sysdate), EXP_DATE > trunc(sysdate) OR EXP_DATE IS NULL).

Field Value
Statement Provider location EFT eligibility requires an active physical address (PROVIDER_ADDRESS_CODE = 'PHY', EFF_DATE <= trunc(sysdate), EXP_DATE > trunc(sysdate) OR EXP_DATE IS NULL).
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFTCollection.GetProviderEFTLocations SQL
Outcome Provider location EFT eligibility requires an active physical address (PROVIDER_ADDRESS_CODE = 'PHY', EFF_DATE <= trunc(sysdate), EXP_DATE > trunc(sysdate) OR EXP_DATE IS NULL).
Confidence Verified
Tables PROVIDER_LOCATION, PROVIDER_EFT_INTERFACE, PROVIDER_ADDRESS
SQL SQL-011
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-16: If EffDate is Date.MinValue at update time, it is defaulted to Today.Date before persisting.

Field Value
Statement If EffDate is Date.MinValue at update time, it is defaulted to Today.Date before persisting.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEFT.BeforeUpdate
Outcome If EffDate is Date.MinValue at update time, it is defaulted to Today.Date before persisting.
Confidence Verified
Tables PROVIDER_EFT_INTERFACE
SQL SQL-014
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

BR-17: UserName on clsProviderEOB returns the constant PAPER_EOB = "Paper EOB" when the underlying name is blank, indicating no external user is linked to the record.

Field Value
Statement UserName on clsProviderEOB returns the constant PAPER_EOB = "Paper EOB" when the underlying name is blank, indicating no external user is linked to the record.
Trigger Invoking the related property, save hook, or retrieval path.
Enforcement clsProviderEOB.UserName getter
Outcome UserName on clsProviderEOB returns the constant PAPER_EOB = "Paper EOB" when the underlying name is blank, indicating no external user is linked to the record.
Confidence Verified
Tables PROVIDER_EOB_INTERFACE, EXT_USER_TYPE, EXT_USER, EMAIL_ADDRESS, PERSON, PROVIDER_LOCATION
SQL SQL-005, SQL-006, SQL-007
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOB.vb

BR-18: A retrieved EOB preference row with UpdateNum equal to zero is treated as unsaved and marked New so Save falls through to Insert instead of Update.

Field Value
Statement A retrieved EOB preference row with UpdateNum equal to zero is treated as unsaved and marked New so Save falls through to Insert instead of Update.
Trigger clsProviderEOB.Fill runs after any retrieval — a single-object GetProviderEOB fetch or a row loaded into clsProviderEOBCollection via GetProviderEOBs.
Enforcement clsProviderEOB.Fill: If Row.GetDecimal("UpdateNum") = 0 Then MarkNew() Else MarkOld().
Outcome Provider locations that have never had an EOB preference row still appear in the collection (via the left-outer-joined listing query) but are flagged New, so editing and saving one performs an Insert instead of failing an Update against a nonexistent row.
Confidence Verified
Tables PROVIDER_EOB_INTERFACE, PROVIDER_LOCATION
SQL SQL-005, SQL-006, SQL-007
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOB.vb

PBR-001: Only the provider primary tax ID row supplies the correspondence address

Field Value
Statement Only the provider primary tax ID row supplies the correspondence address copied into PROVIDER_CORR_HIST.
Trigger FETCH_TIN_ADDRESS runs for EFT_CORR_HIST or EOB_CORR_HIST.
Enforcement FETCH_TIN_ADDRESS joins PROVIDER_TAX_ID to PROVIDER on provider.PRIMARY_TAX_ID = provider_tax_id.TAX_ID.
Outcome History rows copy mailing-address fields only from the provider primary tax-ID record.
Confidence Verified
Stored procedure PK83548_PROVIDER_CORR_HIST.FETCH_TIN_ADDRESS
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

PBR-002: The tax ID row must be effective on the supplied EFT effective date

Field Value
Statement The correspondence-address lookup uses only tax ID rows whose effective dates cover the supplied effective date.
Trigger FETCH_TIN_ADDRESS evaluates in_eff_date during the address lookup.
Enforcement The query requires PROVIDER_TAX_ID.EFF_DATE <= in_eff_date and (PROVIDER_TAX_ID.EXP_DATE IS NULL OR PROVIDER_TAX_ID.EXP_DATE >= in_eff_date).
Outcome Expired or not-yet-effective tax ID addresses are excluded from correspondence-history inserts.
Confidence Verified
Stored procedure PK83548_PROVIDER_CORR_HIST.FETCH_TIN_ADDRESS
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

PBR-003: Fetch TIN address returns only the first matching tax ID address row

Field Value
Statement FETCH_TIN_ADDRESS returns only the first matching tax ID address row.
Trigger Multiple rows satisfy the helper query.
Enforcement The fetch loop exits when %ROWCOUNT > 1, leaving the first fetched TIN_Address record as the return value.
Outcome At most one address record is returned to EFT_CORR_HIST or EOB_CORR_HIST.
Confidence Verified
Stored procedure PK83548_PROVIDER_CORR_HIST.FETCH_TIN_ADDRESS
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

PBR-004: EFT correspondence history inserts are always marked as authorization letter events

Field Value
Statement Every EFT correspondence-history insert is flagged as an authorization-letter event.
Trigger EFT_CORR_HIST inserts a PROVIDER_CORR_HIST row.
Enforcement EFT_CORR_HIST sets PCH.EFT_AUTH_LTR_FLAG to 'Y' in the insert statement.
Outcome Stored history rows identify the correspondence as an EFT authorization letter.
Confidence Verified
Stored procedure PK83548_PROVIDER_CORR_HIST.EFT_CORR_HIST
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

PBR-005: Foreign address history values are normalized to Y or N during insert

Field Value
Statement Foreign-address history values are normalized to N when the source flag is null and to Y otherwise.
Trigger EFT_CORR_HIST or EOB_CORR_HIST writes a PROVIDER_CORR_HIST row.
Enforcement Both insert statements use case when TIN_Address_rec.FOREIGN_ADDRESS_FLAG is null then'N'else'Y'end.
Outcome PROVIDER_CORR_HIST.FOREIGN_ADDRESS_FLAG is always stored as Y or N.
Confidence Verified
Stored procedure PK83548_PROVIDER_CORR_HIST.EFT_CORR_HIST; PK83548_PROVIDER_CORR_HIST.EOB_CORR_HIST
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

PBR-006: Correspondence history rows always stamp create date create number and create user

Field Value
Statement Correspondence-history rows always stamp CREATE_DATE, CREATE_NUM, and CREATE_USER during insert.
Trigger EFT_CORR_HIST or EOB_CORR_HIST inserts into PROVIDER_CORR_HIST.
Enforcement Both insert statements set CREATE_DATE = sysdate, CREATE_NUM = 0, and CREATE_USER = in_UPDATE_USER.
Outcome Each inserted history row receives consistent audit values from the package.
Confidence Verified
Stored procedure PK83548_PROVIDER_CORR_HIST.EFT_CORR_HIST; PK83548_PROVIDER_CORR_HIST.EOB_CORR_HIST
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

PBR-007: Tax ID lookup failures are raised instead of silently ignored

Field Value
Statement Tax ID lookup failures are raised instead of being silently ignored.
Trigger FETCH_TIN_ADDRESS does not resolve a row or encounters another query error.
Enforcement FETCH_TIN_ADDRESS re-raises NO_DATA_FOUND and raises the package-local v_error exception for other failures.
Outcome Calling procedures do not continue with an unhandled missing-address lookup.
Confidence Verified
Stored procedure PK83548_PROVIDER_CORR_HIST.FETCH_TIN_ADDRESS
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

PBR-008: Correspondence history insert failures are re-raised as the package local exception

Field Value
Statement Correspondence-history insert failures are re-raised as the package-local exception.
Trigger The INSERT INTO PROVIDER_CORR_HIST statement fails in EFT_CORR_HIST or EOB_CORR_HIST.
Enforcement Each procedure catches WHEN OTHERS, captures SQLERRM text in outResult, and then raises v_error.
Outcome Insert failures stop normal procedure completion instead of being swallowed.
Confidence Verified
Stored procedure PK83548_PROVIDER_CORR_HIST.EFT_CORR_HIST; PK83548_PROVIDER_CORR_HIST.EOB_CORR_HIST
Source Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb

Notes

  • The stored-procedure rules above are derived directly from WCIS_DBA.PK83548_PROVIDER_CORR_HIST and cross-reference the package documentation.

Sources

  • Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOB.vb
  • Business\SAIF.Business.Provider.PaymentPreference\clsProviderEOBCollection.vb
  • Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb
  • Business\SAIF.Business.Provider.PaymentPreference\clsProviderBankAccounts.vb
  • Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb