Output control tracking¶
clsOutputControl is the only genuine create/update/delete business object involved in tracking output generation in this library — it records one row per generated output artifact (e.g., a check-print run or an ACH file) and whether that artifact has since been printed/transmitted. Two related classes, clsAchFileID and clsPaymentBatchNumber, are read-only reference/code tables rather than per-run transactional records: clsAchFileID looks up ACH file identifier/description codes, and clsPaymentBatchNumber is a cached, read-only lookup matching a payment type/authorization type/banking network combination to its configured batch number and description. Both are documented alongside the other reference tables in Code table lookups; this page covers only the transactional OUTPUT_CONTROL lifecycle.
| Field | Value |
|---|---|
| Operation ID | OP-EFT-06 |
| Trigger | Output/batch process calls clsOutputControl.NewOutputControl when a new output artifact is generated, and updates the row once it has been printed/transmitted |
| Inputs | Output document code, claim/policy reference, payment/authorization/banking-network type codes |
| Outputs | Persisted/updated OUTPUT_CONTROL row; PRINTED_DATE populated once transmitted |
| Primary components | clsOutputControl.BeforeCreate/Insert/Retrieve/Update/Delete; clsOutputControlCollection |
| Entry point | Business\SAIF.Business.Payment.EFT\clsOutputControl.vb |
Steps¶
- Create a new output-control record.
clsOutputControl.NewOutputControlfetches the next sequence value (SQL-004, DUAL) and initializes the record representing one generated output artifact. - Insert.
BeforeInsert/AfterInsertexecutesINSERT INTO OUTPUT_CONTROL (...)(SQL-014, OUTPUT_CONTROL). - On failure (
RowsAffected <> 1): adds anInsertErrormessage (BR-EFT-05). - Retrieve a single record.
BeforeRetrieve/AfterRetrieveselects the full row by output-control sequence number (SQL-051, OUTPUT_CONTROL). - Track pending vs. completed output.
clsOutputControlCollectionretrieves rows by print date; a row withPRINTED_DATE IS NULLrepresents output still pending print/transmission (SQL-052). - Mark output as printed/transmitted. Once the artifact has been transmitted,
UPDATE OUTPUT_CONTROL SET PRINTED_DATE = ...closes out the pending state (SQL-082). - On failure (
RowsAffected <> 1): adds anUpdateErrormessage (BR-EFT-05). - Delete a record. A physical delete is available for correcting an erroneously-created output-control record (SQL-093).
- Look up the ACH file identifier/description code (reference data).
clsAchFileIDretrieves a single code (SQL-022, ACH_FILE_ID) or all codes as a collection (SQL-023); it implements only retrieval — Insert/Update/Delete are not implemented, confirming this is reference data maintained outside the application rather than a per-file-generation-run record.* - Look up the configured payment batch number (reference data).
clsPaymentBatchNumberretrieves the fullPAYMENT_BATCH_NUMBERreference table once per application-domain lifetime into a static, shared collection cache, then looks up the row matching a given payment-type/authorization-type/banking-network combination in memory; likeclsAchFileID, every CRUD SQL property throwsNotImplementedExceptionexcept retrieval. - Because the lookup collection is cached at the shared/static level, a configuration change to
PAYMENT_BATCH_NUMBERmade after the first lookup in a running process will not be picked up until the cache is cleared or the process restarts.* - Look up the output document code (reference data).
clsOutputDocumentCoderetrieves a single code or all codes as a collection (SQL-053, SQL-054, OUTPUT_DOCUMENT_CODE), describing the type of document represented by anOUTPUT_CONTROLrow (see Code table lookups).
Process flow¶
flowchart TD
Start([Output artifact generated]) --> Create[NewOutputControl]
Create --> Insert[INSERT OUTPUT_CONTROL]
Insert --> Rows{RowsAffected = 1?}
Rows -->|No| Err([InsertError added])
Rows -->|Yes| Pending{Transmitted?}
Pending -->|No| Queue([Remains in pending queue:<br>PRINTED_DATE IS NULL])
Pending -->|Yes| Mark[UPDATE PRINTED_DATE]
Mark --> Done([Output cycle complete])
Failure and edge-case behavior¶
clsAchFileIDandclsPaymentBatchNumberare both read-only reference/code tables from the application's perspective — despite their names suggesting active file/batch generation, neither creates, updates, or deletes rows; onlyclsOutputControlperforms real transactional writes for output tracking.*clsPaymentBatchNumber's shared/static cache is populated once per process and never automatically refreshed — any mid-process change to thePAYMENT_BATCH_NUMBERreference table would not be visible until the cache is invalidated or the process restarts.*- Output rows with
PRINTED_DATE IS NULLrepresent the authoritative "still pending" queue; any process that bypasses updating this field after successful transmission would cause the same output to be reprocessed on the next run.*
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.Payment.EFT\clsOutputControl.vbBusiness\SAIF.Business.Payment.EFT\clsOutputControlCollection.vbBusiness\SAIF.Business.Payment.EFT\clsAchFileID.vbBusiness\SAIF.Business.Payment.EFT\clsAchFileIDCollection.vbBusiness\SAIF.Business.Payment.EFT\clsPaymentBatchNumber.vbBusiness\SAIF.Business.Payment.EFT\clsOutputDocumentCode.vbBusiness\SAIF.Business.Payment.EFT\clsOutputDocumentCodeCollection.vb