---
title: clsProducer
summary: API reference for clsProducer.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Agency
reference_type: package
---

# clsProducer

`clsProducer` is the read-only producer view over `AGENT`. It exposes identity, activity, and exclusion helpers for producer rows and also publishes the application-layer helper that looks up the agent of record for a policy.

## Purpose
- Represent one producer row from `AGENT` with business-friendly flags and display formatting.
- Detect whether a producer row actually represents the agency itself.
- Provide the direct `POLICY` agent-of-record lookup helper used outside the normal criteria path.

## Context
- Namespace: `SAIF.Business.Policy.Agency`
- Assembly/package: `SAIF.Business.Policy.Agency`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `SAIFAgentNumber` | `Public Const SAIFAgentNumber As Decimal = 0` | Publishes the special agent number used in producer comparisons. |
| `RETRIEVE_OR_AGENT_SQL` | `Public Const RETRIEVE_OR_AGENT_SQL As String` | Publishes the scalar policy lookup SQL used by `GetAgent`. |
| `Agency` | `Public ReadOnly Property Agency() As clsAgency` | Lazy-loads the owning agency for this producer, letting callers navigate from producer back up to agency data. |
| `AgencySeqNum` | `Public ReadOnly Property AgencySeqNum() As Decimal` | Identifies the owning agency for the producer row. |
| `AgentNumber` | `Public ReadOnly Property AgentNumber() As Decimal` | Exposes the producer's business identity key sourced from `AGENT_NUM`. |
| `CreateDate` | `Public ReadOnly Property CreateDate() As Date` | Returns the date the producer record was created, for audit history. |
| `CreateUser` | `Public ReadOnly Property CreateUser() As String` | Returns the user ID that created the producer record, for audit history. |
| `EffectiveDate` | `Public ReadOnly Property EffectiveDate() As Date` | Returns the date the producer appointment became effective, used by `IsActive`. |
| `ExpirationDate` | `Public ReadOnly Property ExpirationDate() As Date` | Returns the date the producer appointment expires, used by `IsActive`. |
| `InterfaceDate` | `Public ReadOnly Property InterfaceDate() As Date` | Returns the date the producer row was last interfaced from the source system. |
| `IsProducerAgency` | `Public ReadOnly Property IsProducerAgency As Boolean` | Reports whether the producer row is actually the agency row. |
| `IsActive` | `Public ReadOnly Property IsActive(ByVal inDate As Date) As Boolean` | Applies the effective/expiration-window test to the producer. |
| `IsExcludedFromListOfValues` | `Public ReadOnly Property IsExcludedFromListOfValues() As Boolean` | Reports whether the producer is excluded from LOV-driven selection. |
| `IsExcludedFromServiceCenter` | `Public ReadOnly Property IsExcludedFromServiceCenter() As Boolean` | Reports whether the producer is excluded from service-center assignment. |
| `IsLocation` | `Public ReadOnly Property IsLocation() As Boolean` | Reports whether the producer row represents a physical office/location rather than an individual producer. |
| `MailAddressLocationSeqNum` | `Public ReadOnly Property MailAddressLocationSeqNum() As Decimal` | Returns the address-location sequence number where mail is sent for this producer. |
| `Name` | `Public ReadOnly Property Name() As String` | Returns the producer's display name from the underlying agent row. |
| `NameAbbreviated` | `Public ReadOnly Property NameAbbreviated() As String` | Returns the shortened producer display name used by callers. |
| `UpdateDate` | `Public ReadOnly Property UpdateDate() As Date` | Returns the date the producer record was last updated, for audit history. |
| `UpdateUser` | `Public ReadOnly Property UpdateUser() As String` | Returns the user ID that last updated the producer record, for audit history. |
| `IsValid` | `Public Overrides ReadOnly Property IsValid() As Boolean` | Reports whether the producer currently satisfies its base-class validation rules. |
| `IsDirty` | `Public Overrides ReadOnly Property IsDirty() As Boolean` | Reports whether the producer has unsaved field changes, per the base-class dirty-tracking state. |
| `IsCreateDateNull` | `Public Function IsCreateDateNull() As Boolean` | Reports whether `CreateDate` has no assigned value. |
| `IsEffectiveDateNull` | `Public Function IsEffectiveDateNull() As Boolean` | Reports whether the producer has no recorded effective date. |
| `IsExpirationDateNull` | `Public Function IsExpirationDateNull() As Boolean` | Reports whether the producer has no recorded expiration date. |
| `IsInterfaceDateNull` | `Public Function IsInterfaceDateNull() As Boolean` | Reports whether `InterfaceDate` has no assigned value. |
| `IsMailAddressLocationSeqNumNull` | `Public Function IsMailAddressLocationSeqNumNull() As Boolean` | Reports whether `MailAddressLocationSeqNum` has no assigned value. |
| `IsUpdateDateNull` | `Public Function IsUpdateDateNull() As Boolean` | Reports whether `UpdateDate` has no assigned value. |
| `IsUpdateUserNull` | `Public Function IsUpdateUserNull() As Boolean` | Reports whether `UpdateUser` has no assigned value. |
| `GetProducer` | `Public Shared Function GetProducer(ByVal inDataportal As IDataPortalInfo, ByVal inAgentNum As Decimal) As clsProducer` | Entry point for keyed BOF retrieval of one producer. |
| `GetAgent` | `Public Shared Function GetAgent(ByVal inDataportal As IDataPortalInfo, ByVal inPolicyNum As Decimal) As Decimal` | Returns the policy's agent-of-record key through a direct scalar lookup. |
| `Equals` (shared) | `Public Overloads Shared Function Equals(ByVal objA As Object, ByVal objB As Object) As Boolean` | Compares two objects for producer-identity equality when both are `clsProducer` instances. |
| `Equals` (override) | `Public Overloads Overrides Function Equals(ByVal inObject As Object) As Boolean` | Compares this producer to another object by delegating to the identity-based `Equals(clsProducer)` overload. |
| `Equals` | `Public Overloads Function Equals(ByVal inObject As clsProducer) As Boolean` | Compares producers by their business identity key. |
| `GetHashCode` | `Public Overrides Function GetHashCode() As Integer` | Returns a hash code derived from the agent number, for use in hash-based collections. |
| `ToString` | `Public Overrides Function ToString() As String` | Returns the agent number as a string, used for display and lookups. |

## Inherited public members

Members in this section are inherited from `clsBusinessBase` in `SAIF.Framework.Core`. They are available on this type through inheritance.

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| `Rules` | `Property Rules As clsRulesManager` | Exposes the shared BOF validation surface available to producer objects.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `BeginEdit` | `Sub BeginEdit()` | Opens a BOF edit scope.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `CancelEdit` | `Sub CancelEdit()` | Rolls back a BOF edit scope.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `ApplyEdit` | `Sub ApplyEdit()` | Commits a BOF edit scope.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `SetPreviousLink` | `Sub SetPreviousLink(item As ILinkItem)` | Establishes a backward link to another business object for linked-list traversal scenarios.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `SetNextLink` | `Sub SetNextLink(item As ILinkItem)` | Establishes a forward link to another business object for linked-list traversal scenarios.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `InsertLinkAfter` | `Sub InsertLinkAfter(item As ILinkItem)` | Inserts a linked item immediately after this producer in the linked chain.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `InsertLinkBefore` | `Sub InsertLinkBefore(item As ILinkItem)` | Inserts a linked item immediately before this producer in the linked chain.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `RemoveLinks` | `Sub RemoveLinks()` | Detaches this producer from its linked neighbors, repairing the remaining chain.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `Error` | `ReadOnly Property Error As String` (via `IDataErrorInfo`) | Returns a summary validation-error message for the producer, sourced from broken-rule state.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `Item(columnName)` | `ReadOnly Property Item(columnName As String) As String` (via `IDataErrorInfo`) | Returns a per-property validation-error message for the producer.* | `SAIF.Framework.Core` — `clsBusinessBase` |
| `AllowCache` | `Public Property AllowCache() As Boolean` | Controls whether the BOF runtime may cache the producer object.* | `SAIF.Framework.Core` — `clsUndoableBase` |
| `DumpState` | `Public Sub DumpState()` | Writes the producer object's field data to the debugger output window, for diagnostic use.* | `SAIF.Framework.Core` — `clsUndoableBase` |

## Behavioral notes
- The direct `GetAgent` helper is the only public API surface in the library that executes SQL outside a BOF criteria class.
- Producer rows can overlap with agency identity when `AgencySeqNum` equals `AgentNumber`.
- `IsValid` and `IsDirty` delegate directly to the base-class implementation; this producer adds no additional child-object validation of its own.*

## Constraints and usage notes
- Retrieval is read-only; the type exposes no persistence lifecycle.
- Consumers should distinguish keyed producer retrieval from the policy agent-of-record lookup helper.

> **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
- `Business\SAIF.Business.Policy.Agency\clsProducer.vb`
