---
title: Retrieve period rating information
summary: `clsPeriodRatingInfo.GetPeriodRatingInfo` and `.GetCurrentPeriodRatingInfo` (`clsPeriodRatingInfo.vb:197-243`)
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Rating
reference_type: package
operation_id: OP-010
trigger: Any rating call that needs the period context (ARD, market type, rate tier, dates)
---

# Retrieve period rating information

`clsPeriodRatingInfo.GetPeriodRatingInfo` and `.GetCurrentPeriodRatingInfo` (`clsPeriodRatingInfo.vb:197-243`)

| Field | Value |
| --- | --- |
| **Operation ID** | OP-010 |
| **Trigger** | Any rating call that needs the period context (ARD, market type, rate tier, dates) |
| **Inputs** | Policy number, and (for the dated overload) policy period effective date |
| **Outputs** | A `clsPeriodRatingInfo` — empty when no row matches |
| **Primary components** | ``clsPeriodRatingInfo.GetPeriodRatingInfo` and `.GetCurrentPeriodRatingInfo` (`clsPeriodRatingInfo.vb:197-243`)` |
| **Entry point** | `Business\SAIF.Business.Policy.Rating\clsPeriodRatingInfo.vb` |

## Steps

1. Build the statement as `RetrieveSQL` + suffix + `" Union "` + `LegacyRetrieveSQL` + suffix.
2. For `GetPeriodRatingInfo` the suffix is
3. Set `RequestType = ResultSet`, `ID = "GetPeriodRatingInfo"` / `"GetCurrentPeriodRatingInfo"`, and
4. `ProcessPortalRequest`.
5. If `Reader.Count > 0`, `Fill(Reader.First)` mapping AnniversaryRatingDate, MarketType (via
6. Return the object — **always non-`Nothing`**, even when nothing was found ([BR-017](../business-rules.md#br-017-period-rating-info-retrieval-always-returns-an-object-an-empty-default-instance-is-returned-when-no-row-matches)).
7. Use the related data-access statements and tables for this operation: [SQL-027](../sql/SQL-027-saif-business-policy-rating.md), [POLICY](../database-tables.md#policy), [POLICY_PERIOD](../database-tables.md#policy_period), [POLICY_PERIOD_NON_WCIS](../database-tables.md#policy_period_non_wcis).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
  Start([Trigger: rating call needs period context]) --> S1[Build UNION statement: RetrieveSQL + LegacyRetrieveSQL]
  S1 --> S2[Set RequestType=ResultSet with overload-specific request ID]
  S2 --> S3[ProcessPortalRequest]
  S3 --> D1{Reader.Count greater than 0?}
  D1 -->|Yes| S4[Fill from first row: AnniversaryRatingDate, MarketType, dates]
  D1 -->|No| S5[Leave object at default values]
  S4 --> Done([Return clsPeriodRatingInfo - always non-Nothing per BR-017])
  S5 --> Done
```

## Failure and edge-case behavior
- Review the linked business rules and SQL documents for the validation or data-access conditions that can block this operation.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

> **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.Rating\clsPeriodRatingInfo.vb`
