Business\SAIF.Business.Claim\cls1502Transfer.vb (AfterUpdate, AfterDelete) and peer mutable BOF objects that perform the same single-row concurrency check
BR-009: Released scheduled payments are truncated to one remaining payment¶
Field
Value
Statement
When a claim change stops a benefit payment schedule, a scheduled payment that already has a released financial transaction is kept with its remaining payment count set to 1; a scheduled payment with no released transaction is deleted outright
Trigger
ProcessBenefitPayment evaluates each schedule row with a remaining payment count greater than zero
Enforcement
clsBenefitSchedule.ProcessBenefitPayment and clsActiveBenefitSchedule.ProcessBenefitPayment, using ClaimServices.hasReleasedScheduledPayment to classify the row
Outcome
The schedule is truncated (stop status "released") or the payment row is deleted (stop status "deleted"); a zero row count raises #PAYUPD# or #PAYDEL# and aborts the remaining rows
BR-010: Stopping a benefit payment schedule posts an adjuster review task¶
Field
Value
Statement
Stopping a benefit payment schedule creates a claim task describing the triggering change and whether the schedule was deleted or a released payment will still be issued, unless the caller declared that it posts its own task and the payment was released
Trigger
A schedule row has been truncated or deleted by ProcessBenefitPayment
Enforcement
clsBenefitSchedule.ReturnTask composes the text and clsClaimTaskGenerator.AddTask posts it
Outcome
A claim task is created for the adjuster, due the current date; clsActiveBenefitSchedule never posts a task
BR-011: Setting an award to pending resets its benefit payments to in-progress¶
Field
Value
Statement
Only the claim's active award may be moved to pending status, and once it is, its benefit payment rows are returned to in-progress status with the approver nulled and the initiator blanked so the payment must be re-initiated and re-approved
Trigger
clsSetAwardPaymentPending is retrieved for a claim and saved
Enforcement
clsSetAwardPaymentPending.BeforeUpdate and clsSetAwardPaymentPending.ProcessBenefitPayment
Outcome
CL_AWARD.AWARD_STATUS_CODE becomes P and CL_BENEFIT_PAYMENT.BENEFIT_STATUS_CODE becomes 0; a failed award update prevents the payment reset and raises UpdateError
BR-012: Award benefit payment collections default to federal benefit types¶
Field
Value
Statement
When a caller requests an award's benefit payments without supplying benefit type codes, the retrieval is restricted to the federal benefit types 4, 5, and 6
Trigger
clsAwardBenefitPaymentCollection.BeforeRetrieve finds an empty benefit type code list
Enforcement
clsAwardBenefitPaymentCollection.BeforeRetrieve
Outcome
The dynamic benefit type predicate is completed with the three federal codes, so state-only payments are excluded from the result
BR-013: The primary injured body part is mirrored onto the claim header¶
Field
Value
Statement
After an injured body part marked as primary is inserted or updated, its body part code, body side code, and injury nature code are written onto the claim header; a clearing request writes placeholder values instead
Trigger
AfterInsert or AfterUpdate on a dirty body part carrying the primary flag
Enforcement
clsWorkerInjuredBodyPart.UpdateClaimBodyPart
Outcome
The claim header's primary body part, side, and injury nature columns are kept in step with the detail rows; the cascade performs no rows-affected check
BR-014: Only 1502 transfers with no processed date are eligible for transfer¶
Field
Value
Statement
A 1502 transfer record is outstanding only while its processed date is null; both transfer-queue queries exclude records that already carry a processed date, and the whole-queue query returns them in file name order
Trigger
GetTransferList or GetUnprocessedTransferList is called
Enforcement
cls1502Transfer.GetTransferList and cls1502Transfer.GetUnprocessedTransferList
Outcome
Transferred documents drop out of the queue once their processed date is written
BR-015: Employee work address ZIP codes are stored numerically and normalized to five digits¶
Field
Value
Statement
The employee work address ZIP code is stored as a number; a stored value of zero is treated as no ZIP code, and any other value is left-padded with zeros to five digits when the object is filled
Trigger
Fill reads an employee work address row
Enforcement
clsClaimEmployeeWorkAddress.Fill
Outcome
Leading-zero ZIP codes are restored for display and validation; a genuine ZIP of 00000 cannot be represented
BR-016: Time-loss due dates falling on a non-working day roll to the next state working day¶
Field
Value
Statement
The time-loss due date returned by the first-payment timeliness assessment is evaluated against the state holidays calendar rather than SAIF's own calendar, and a due date falling on a non-working day is reported as the next working day
Trigger
A caller reads the time-loss due date from a timeliness assessment
Enforcement
clsTimelinessOfFirstPayment.TimeLossDueDate over a smart date constructed with the STATEHOLIDAYS calendar
Outcome
Statutory deadlines follow the state's non-working days, so the reported due date can differ from the raw procedure output
BR-017: Scheduled PPD awards use the latest rate effective on or before the award date¶
Field
Value
Statement
A scheduled permanent partial disability award is priced using the last per-degree rate whose effective date is on or before the supplied award date; when no rate qualifies the amount is zero
Trigger
GetAwardAmount is called on the scheduled degree award table
Enforcement
clsPPDScheduledDegreeAwards.GetAwardAmount
Outcome
Awards are priced at the rate in force when they became effective; a date earlier than every rate yields zero
BR-018: Unscheduled PPD awards accumulate across cumulative degree bands¶
Field
Value
Statement
An unscheduled permanent partial disability award is priced by allocating the degree count across the degree bands effective on the award date in ascending degree order, multiplying the degrees allocated to each band by that band's per-degree rate and accumulating the total
Trigger
GetAwardAmount is called on the unscheduled degree award table with a degree count and effective date
Enforcement
clsPPDUnscheduledDegreeAwards.GetAwardAmount
Outcome
The award amount is returned together with a step-by-step calculation proof recording each band's contribution
BR-019: Work status and work release retrieval returns only the most recent sequence¶
Field
Value
Statement
Retrieving a claim's work status or work release status returns only the row carrying the highest sequence number for that claim, so callers always act on the latest history entry
Trigger
GetClaimWorkStatus or GetClaimWorkReleaseStatus is called for a claim
Enforcement
clsClaimWorkStatus and clsClaimWorkReleaseStatus retrieve statements, which filter on the maximum sequence number for the claim
Outcome
Earlier history entries are unreachable through these objects
Confidence
Verified
Source
Business\SAIF.Business.Claim\clsClaimWorkStatus.vb and Business\SAIF.Business.Claim\clsClaimWorkReleaseStatus.vb (Criteria RetrieveSQL)
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.