Skip to content

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

  1. Create a new output-control record. clsOutputControl.NewOutputControl fetches the next sequence value (SQL-004, DUAL) and initializes the record representing one generated output artifact.
  2. Insert. BeforeInsert/AfterInsert executes INSERT INTO OUTPUT_CONTROL (...) (SQL-014, OUTPUT_CONTROL).
  3. On failure (RowsAffected <> 1): adds an InsertError message (BR-EFT-05).
  4. Retrieve a single record. BeforeRetrieve/AfterRetrieve selects the full row by output-control sequence number (SQL-051, OUTPUT_CONTROL).
  5. Track pending vs. completed output. clsOutputControlCollection retrieves rows by print date; a row with PRINTED_DATE IS NULL represents output still pending print/transmission (SQL-052).
  6. Mark output as printed/transmitted. Once the artifact has been transmitted, UPDATE OUTPUT_CONTROL SET PRINTED_DATE = ... closes out the pending state (SQL-082).
  7. On failure (RowsAffected <> 1): adds an UpdateError message (BR-EFT-05).
  8. Delete a record. A physical delete is available for correcting an erroneously-created output-control record (SQL-093).
  9. Look up the ACH file identifier/description code (reference data). clsAchFileID retrieves 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.*
  10. Look up the configured payment batch number (reference data). clsPaymentBatchNumber retrieves the full PAYMENT_BATCH_NUMBER reference 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; like clsAchFileID, every CRUD SQL property throws NotImplementedException except retrieval.
  11. Because the lookup collection is cached at the shared/static level, a configuration change to PAYMENT_BATCH_NUMBER made after the first lookup in a running process will not be picked up until the cache is cleared or the process restarts.*
  12. Look up the output document code (reference data). clsOutputDocumentCode retrieves a single code or all codes as a collection (SQL-053, SQL-054, OUTPUT_DOCUMENT_CODE), describing the type of document represented by an OUTPUT_CONTROL row (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

  • clsAchFileID and clsPaymentBatchNumber are 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; only clsOutputControl performs 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 the PAYMENT_BATCH_NUMBER reference table would not be visible until the cache is invalidated or the process restarts.*
  • Output rows with PRINTED_DATE IS NULL represent 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.*

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.vb
  • Business\SAIF.Business.Payment.EFT\clsOutputControlCollection.vb
  • Business\SAIF.Business.Payment.EFT\clsAchFileID.vb
  • Business\SAIF.Business.Payment.EFT\clsAchFileIDCollection.vb
  • Business\SAIF.Business.Payment.EFT\clsPaymentBatchNumber.vb
  • Business\SAIF.Business.Payment.EFT\clsOutputDocumentCode.vb
  • Business\SAIF.Business.Payment.EFT\clsOutputDocumentCodeCollection.vb