---
title: clsXPrintControl
summary: API reference for clsXPrintControl.
status: draft
owner: <owner>
last_reviewed: 2026-07-24
library: SAIF.Services.Printing.Remote
reference_type: package
---

# clsXPrintControl

`clsXPrintControl` represents a single print-control batch header, storing the directory, duplex mode, processed date, IDM path, XML file name, and MD5 hash for a set of documents queued for print processing. It extends `clsBusinessBase` and uses a nested `Criteria` class implementing `IBusinessCriteria` to manage Oracle SQL for insert, retrieve, update, and delete operations against `XPRINT_CONTROL`.

## Purpose
- Persist and retrieve a print-control batch header row in `XPRINT_CONTROL`.
- Translate the `DuplexModes` enum to/from fixed 5-character database codes.
- Default `IDMPathName` to `"PROMPT"` when no imaging destination is pre-configured.

## Context
- Namespace: `SAIF.Services.Printing.Remote`
- Assembly/package: `SAIF.BOF.Services.Printing.Remote`
- Base class: `clsBusinessBase` (from `SAIF.BOF.Framework`/`SAIF.BOF.Business`)

## Public members

| Member | Signature | Purpose |
| --- | --- | --- |
| `NewXPrintControl` | `Public Shared Function NewXPrintControl() As clsXPrintControl` | Factory method — creates a new, empty `clsXPrintControl` instance via the BOF `Create()` lifecycle.* |
| `GetXPrintControl` | `Public Shared Function GetXPrintControl(inSeqNum As Decimal) As clsXPrintControl` | Factory method — retrieves an existing batch header by `XPrintControlSeqNum` via [SQL-013](../../sql/SQL-013-saif-services-printing-remote.md).* |
| `XPrintControlSeqNum` | `Public Property XPrintControlSeqNum As Decimal` | Primary key. Caller-supplied — no live sequence generation for `XPRINT_CONTROL` in this library. |
| `DirectoryName` | `Public Property DirectoryName As String` | Output directory for the print batch. Max length 120.* |
| `DuplexMode` | `Public Property DuplexMode As DuplexModes` | Duplex printing mode; translates between `DuplexModes` enum and fixed 5-char codes (`DEFLT`/`HORIZ`/`VERTL`/`SIMPL`). Unrecognized stored codes yield an implicit VB default.** |
| `ProcessedDate` | `Public Property ProcessedDate As SmartDate` | Date the batch was processed. Nullable.* |
| `IDMPathName` | `Public Property IDMPathName As String` | Imaging destination path. Defaults to `"PROMPT"` per [BR-006](../../business-rules.md#br-006-idm-path-default).* |
| `XMLFileName` | `Public Property XMLFileName As String` | Generated XML file name for the batch. Max length 120.* |
| `MD5HashValue` | `Public Property MD5HashValue As String` | MD5 hash of the generated XML file. Max length 40.* |
| `Criteria` (nested class) | `Public Class Criteria Implements IBusinessCriteria` | Holds SQL text for CRUD operations: `InsertSQL` ([SQL-007](../../sql/SQL-007-saif-services-printing-remote.md)), `RetrieveSQL` ([SQL-013](../../sql/SQL-013-saif-services-printing-remote.md)), `UpdateSQL` ([SQL-017](../../sql/SQL-017-saif-services-printing-remote.md)), `DeleteSQL` ([SQL-022](../../sql/SQL-022-saif-services-printing-remote.md)); `CreateSQL` unconditionally throws (empty). |

## Behavioral notes
- `DuplexMode` setter maps the `DuplexModes` enum to a 5-character code stored in `DuplexCode`; getter reverses the mapping. An unrecognized stored code falls through the `Select Case` with no explicit `Return`, yielding an implicit VB default (`SIMPLEX`, ordinal 0).**
- `IDMPathName` defaults to `"PROMPT"` indicating the imaging destination must be resolved by a downstream consumer.** See [BR-006](../../business-rules.md#br-006-idm-path-default).
- `AfterInsert`, `AfterUpdate`, and `AfterDelete` enforce [BR-001](../../business-rules.md#br-001-row-count-contention-check) by checking `RowsAffected <> 1`.
- No live sequence generation — `XPrintControlSeqNum` must be supplied by the caller before insert.*

## Constraints and usage notes
- Requires a valid `XPrintControlSeqNum` before calling insert lifecycle.
- The `CreateSQL` property unconditionally throws; use `NewXPrintControl()` (which skips `CreateSQL`) for object creation.*
- Consumed exclusively via NuGet package `SAIF.BOF.Services.Printing.Remote` — not via local project reference.

> **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.Printing.Remote\clsXPrintControl.vb`
- `Services\SAIF.Services.Printing.Remote\Enums.vb`
