PositivePayService¶
Implements IPositivePayService, building the bank Positive Pay fixed-width file that reports newly issued and newly canceled checks for a given processing date, using PositivePayView reporting data. It depends only on IUnitOfWork for querying PositivePayView; it writes the resulting file via the FileWriter<PositivePayView> helper and PositivePayConfig layout.
Purpose¶
- Identifies newly issued checks (unreleased/reconciled statuses excluded) and newly canceled checks for a processing date, tagging each as a detail record.
- Builds a summary totals record (record count and total dollar amount) to append after the detail records.
- Writes the accumulated detail and totals records to a fixed-width
.prnfile at the requested output path. - Exposes any exception encountered during processing via a settable
DataExceptionproperty.
Context¶
- Namespace:
SAIF.Services.PositivePay - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| PositivePayService(...) | public PositivePayService(IUnitOfWork uow) |
Validates uow is non-null via Enforce.ArgumentNotNull and wires it in. |
| DataException | public Exception DataException { get; set; } |
Holds an exception captured by the caller during file processing, for later inspection; not set internally by this type. |
| ProcessDetailRecords | public bool ProcessDetailRecords(DateTime positivePayDate) |
Loads newly issued checks (issue date matches, status in {1,3,4,5,6}, not yet reconciled) and newly canceled checks (reconciliation date matches, status in {3,4,5,6}) for the given date, tags them as detail records, and returns whether any records were found. |
| CreatePositivePayFile | public int CreatePositivePayFile(ILogWriter controlLog, string outputFilePath, string fileName, DateTime positivePayDate) |
Calls ProcessDetailRecords, and if any detail records were produced, appends a totals record and writes the full record set to {outputFilePath}\{fileName}.prn; returns the number of detail records processed (0 if none). |
Behavioral notes¶
- Detail record accumulation (
_positivePayFileRecords) is instance state built up across calls toProcessDetailRecords, so calling it more than once on the same instance for different dates would accumulate records from all calls rather than replacing them*. - The totals record's dollar amount is computed by parsing each detail record's
DollarAmountstring as along, implying Positive Pay amounts are represented as whole-cent or whole-dollar integer strings rather than decimals*. - No output file is written at all when there are zero detail records for the requested date, avoiding an empty/header-only Positive Pay submission to the bank.
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¶
- Services/SAIF.Services/PositivePay/PositivePayService.cs