---
title: Denial, fraud, and refund date helpers
summary: Thin read-only wrapper classes that retrieve denial-flag, final-denial-date, fraud-recovery-date, and refund-date values from the PK73304_LOSS_SUMMARY Oracle package.
status: draft
owner: SAIF
last_reviewed: 2026-07-30
library: SAIF.Business.UnitStat.Claim
reference_type: package
operation_id: OP-USC-06
trigger: Caller invokes clsDeniedFinal.GetDeniedFinal, clsFinalDenial.GetFinalDenial, clsFraudRecovery.GetFraudRecoveryDate, or clsRefund.GetRefundDates
---

# Denial, fraud, and refund date helpers

`clsDeniedFinal`, `clsFinalDenial`, and the read-only date-lookup members of `clsFraudRecovery` and `clsRefund` are thin business-object wrappers around single `PK73304_LOSS_SUMMARY` package calls. Each retrieves one scalar or small result set describing a claim's denial status or a relevant offset date, and none of them perform their own SQL beyond invoking the package function/procedure ([BR-005](../business-rules.md#br-005-loss-summary-derivations-stay-centralized-in-the-oracle-package)).

| Field | Value |
| --- | --- |
| **Operation ID** | OP-USC-06 |
| **Trigger** | `clsDeniedFinal.GetDeniedFinal(dpi, claimID)`, `clsFinalDenial.GetFinalDenial(dpi, claimID)`, `clsFraudRecovery.GetFraudRecoveryDate(dpi, claimID)`, `clsRefund.GetRefundDates(dpi, claimID)` |
| **Inputs** | `ClaimID` |
| **Outputs** | `clsDeniedFinal` (denied/final flag), `clsFinalDenial` (final denial date), fraud recovery date, refund date(s) |
| **Primary components** | `clsDeniedFinal`, `clsFinalDenial`, `clsFraudRecovery` (date-lookup portion), `clsRefund` (date-lookup portion) |
| **Entry point** | `Business\SAIF.Business.UnitStat.Claim\Loss Summary\clsDeniedFinal.vb`, `Business\SAIF.Business.UnitStat.Claim\Loss Summary\clsFinalDenial.vb`, `Business\SAIF.Business.UnitStat.Claim\Loss Summary\clsFraudRecovery.vb`, `Business\SAIF.Business.UnitStat.Claim\Loss Summary\clsRefund.vb` |

## Steps

1. **Denied/final flag lookup.** `clsDeniedFinal.BeforeRetrieve` binds `ClaimID` and calls `PK73304_LOSS_SUMMARY.get_denied_final_flag` ([SQL-008](../sql/sql-008-pk73304_loss_summary-get_denied_final_flag.md)); `AfterRetrieve` loads the returned flag and calls `MarkOld()`.
2. **Final denial date lookup.** `clsFinalDenial.BeforeRetrieve` binds `ClaimID` and calls `PK73304_LOSS_SUMMARY.get_final_denial_date` ([SQL-009](../sql/sql-009-pk73304_loss_summary-get_final_denial_date.md)); `AfterRetrieve` loads the returned date and calls `MarkOld()`.
3. **Fraud recovery date lookup.** `clsFraudRecovery.GetFraudRecoveryDate` binds `ClaimID` and calls `PK73304_LOSS_SUMMARY.get_fraud_recovery_date` ([SQL-010](../sql/sql-010-pk73304_loss_summary-get_fraud_recovery_date.md)) to determine the date from which fraud-recovery offsets should apply. This date feeds the (currently no-op — see [Loss valuation orchestration](loss-valuation-orchestration.md)) fraud-offset creation logic in `clsFraudRecovery.CreateOffsets`.
4. **Refund dates lookup.** `clsRefund.GetRefundDates` binds `ClaimID` and calls `PK73304_LOSS_SUMMARY.get_refund_dates` ([SQL-013](../sql/sql-013-pk73304_loss_summary-get_refund_dates.md)) to determine the applicable refund date window, consumed by `clsRefund.CreateOffsets` during [Loss valuation orchestration](loss-valuation-orchestration.md).
5. **Common pattern.** All four lookups follow the same shape: bind `ClaimID`, invoke exactly one `PK73304_LOSS_SUMMARY` function or procedure, and load the scalar/row result into simple properties — no additional business logic, joins, or child-object retrieval occurs in these classes.

## Process flow

```mermaid
flowchart TD
	Start([Caller requests a denial/fraud/refund date lookup]) --> Which{Which lookup?}
	Which -->|Denied/final flag| A[Call get_denied_final_flag]
	Which -->|Final denial date| B[Call get_final_denial_date]
	Which -->|Fraud recovery date| C[Call get_fraud_recovery_date]
	Which -->|Refund dates| D[Call get_refund_dates]
	A --> Loaded([Result loaded into object])
	B --> Loaded
	C --> Loaded
	D --> Loaded
```

## Failure and edge-case behavior
- None of these four lookups perform their own validation or error handling beyond the framework's standard data-portal retrieval path; a claim with no denial/fraud/refund history is expected to return an empty or null result from the package call rather than raising an exception.*
- Because these are read-only lookups (no insert/update/delete paths were found for any of the four classes), there is no create/update/delete failure behavior to document for 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.UnitStat.Claim\Loss Summary\clsDeniedFinal.vb`
- `Business\SAIF.Business.UnitStat.Claim\Loss Summary\clsFinalDenial.vb`
- `Business\SAIF.Business.UnitStat.Claim\Loss Summary\clsFraudRecovery.vb`
- `Business\SAIF.Business.UnitStat.Claim\Loss Summary\clsRefund.vb`
