Provider EFT collection retrieval¶
clsProviderEFTCollection exposes four shared factory methods that return different slices of provider location EFT data — records that already have an EFT row for a specific provider, a batch export of every EFT row in the system, every location for a provider whether or not it has an EFT row yet, and the same location set enriched with the administering external user's email address. All four populate the same collection type and are read-only, so they are documented together; the collection also exposes LINQ filter properties (UnAssignedPaymentLocations, AssignedPaymentLocations, AllPaymentLocations) that classify the retrieved rows for callers.
| Field | Value |
|---|---|
| Operation ID | OP-PP-05 |
| Trigger | GetProviderEFTColl, GetAllEFTsColl, GetProviderEFTLocations, or GetProviderEFTLocEmails on clsProviderEFTCollection |
| Inputs | ProviderSeqNum (except GetAllEFTsColl); for the location-based queries: IsUserSAIFEmployee, AdminUserTypeSeqNum, MaskBankNumbers, BankValidatorXML |
| Outputs | Populated clsProviderEFTCollection; UnAssignedPaymentLocations/AssignedPaymentLocations/AllPaymentLocations filtered views over that collection |
| Primary components | clsProviderEFTCollection.GetProviderEFTColl, clsProviderEFTCollection.GetAllEFTsColl, clsProviderEFTCollection.GetProviderEFTLocations, clsProviderEFTCollection.GetProviderEFTLocEmails, clsProviderEFTCollection.UnAssignedPaymentLocations, clsProviderEFTCollection.AssignedPaymentLocations, clsProviderEFTCollection.AllPaymentLocations |
| Entry point | Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb |
Steps¶
- List EFTs for a provider.
GetProviderEFTColl(dpi, providerSeqNum)selects everyPROVIDER_EFT_INTERFACErow for the provider (SQL-010, PROVIDER_EFT_INTERFACE); every row therefore represents a location that already has an EFT record. - List all EFTs (batch).
GetAllEFTsColl(dpi)selects everyPROVIDER_EFT_INTERFACErow in the table with no filter (SQL-009), intended for batch/system-wide processing rather than a single provider's data. - List all locations with EFT status.
GetProviderEFTLocations(dpi, providerID, isUserSAIFEmployee, adminUserTypeSeqNum, maskBankNumbers, bankValidatorXML)left-outer-joinsPROVIDER_LOCATIONtoPROVIDER_EFT_INTERFACE, additionally left-outer-joiningPROVIDER_ADDRESSand filtering to locations with an active physical address (SQL-011, BR-15). Locations without a matching EFT row are still returned, flagged via acase when EFT.UPDATE_USER IS NULL then 'Y' else 'N'computedIsNewEFTFlagcolumn, so every eligible location appears exactly once whether or not it has EFT data yet. - The four masking/context inputs (
IsUserSAIFEmployee,AdminUserTypeSeqNum,MaskBankNumbers,BankValidatorXML) are stored on the collection itself after the query runs, for use by child objects retrieved through it. - List all locations with administering-user email.
GetProviderEFTLocEmails(dpi, providerID, isUserSAIFEmployee, adminUserTypeSeqNum, maskBankNumbers, bankValidatorXML)runs the same location/EFT left-outer-join as step 3, additionally chaining throughEXT_USER_TYPE→EXT_USER→EMAIL_ADDRESSto populateExtUserEmailAddrfor each row (SQL-012). It does not include the physical-address eligibility filter present in step 3's query. This method was not present in the prior operations catalog for this library.* - Records retrieved this way carry a populated
ExtUserEmailAddr, which EFT payment location assignment copies intoCustomerContactEmailAddresswhenAssignPaymentLocationis called on one of these objects. - Classify locations after retrieval. Once a
clsProviderEFTCollectionis populated (typically via step 3 or 4), callers can read: UnAssignedPaymentLocations— every record whereLocationHasEFTis false (BR-07).AssignedPaymentLocations— every record whereLocationHasEFTis true andIsActiveis true (both today falls within[EffDate, ExpDate]and the location currently has an active direct-deposit preference) (BR-06, BR-07).AllPaymentLocations— every record that is either currently active or does not yet have EFT, i.e. everything except an inactive/expired-but-still-EFT-flagged record.
Process flow¶
flowchart TD
Start([Caller requests a collection]) --> Which{Which query?}
Which -->|By provider, existing EFT rows| ByProvider[GetProviderEFTColl:<br>select PROVIDER_EFT_INTERFACE by ProviderSeqNum]
Which -->|All rows, batch| AllRows[GetAllEFTsColl:<br>select every PROVIDER_EFT_INTERFACE row]
Which -->|All locations + EFT status| AllLocs[GetProviderEFTLocations:<br>left outer join Location to EFT,<br>filter to active physical address]
Which -->|All locations + admin email| AllLocsEmail[GetProviderEFTLocEmails:<br>left outer join Location to EFT to<br>ExtUserType to ExtUser to Email]
ByProvider --> Collection[Populated clsProviderEFTCollection]
AllRows --> Collection
AllLocs --> StoreCtx[Store IsUserSAIFEmployee,<br>AdminUserTypeSeqNum, MaskBankNumbers,<br>BankValidatorXML on collection]
AllLocsEmail --> StoreCtx
StoreCtx --> Collection
Collection --> Classify{Caller filters by status?}
Classify -->|Unassigned| Unassigned([UnAssignedPaymentLocations:<br>not LocationHasEFT])
Classify -->|Assigned/active| Assigned([AssignedPaymentLocations:<br>LocationHasEFT and IsActive])
Classify -->|All eligible| AllPref([AllPaymentLocations:<br>IsActive or not LocationHasEFT])
Failure and edge-case behavior¶
GetProviderEFTLocationsrestricts results to locations with an active physical address (BR-15), butGetProviderEFTLocEmailsdoes not apply the same filter, so the two "all locations" queries can return a different set of locations for the same provider.*GetAllEFTsCollhas noWHEREclause at all; it is intended for batch/system-wide callers (per source comments referencingACH0015_UpdateDirectDepositStatus) and returning it for interactive per-provider use would be a misuse of the method.*GetProviderEFTCollandGetAllEFTsCollonly return locations that already have aPROVIDER_EFT_INTERFACErow; a provider location with no EFT history at all will never appear in either result, even though it would appear (flagged as new) inGetProviderEFTLocations/GetProviderEFTLocEmails.
Related documentation¶
Note: Statements marked with
*were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.
Sources¶
Business\SAIF.Business.Provider.PaymentPreference\clsProviderEFT.vb