Calculation type

PercentageAdjustment

Rescales each charge's allowed amount to a percentage looked up per-code from a named fee schedule, rather than a single configured percentage.

88
uses
7
customers
Adjustment
category
Charge
applies at

What it computes

records = GetFeeScheduleRecords(ctx, ScheduleType); for i in 1..NumCharges: if !IgnoreCharge(calc,charge,ctx) && records[i]!=null: detail.Adjust(detail.Amount * records[i].Amount / 100.0M, calc)

Parameters

KeyMeaning
ScheduleTypeKey of the named fee schedule whose per-code Amount value supplies the percentage multiplier for that charge's code; charges with no matching schedule record are left unadjusted

Gotchas

Unlike FlatPercentageAdjustment/ModifierAdjustment, this arithmetic (detail.Amount * records[i].Amount / 100.0M) is pure decimal division with no explicit rounding call at all -- it inherits whatever precision decimal division produces, which differs from the double-based, 2-decimal-rounded MoneyMath.Percentage used by its sibling types. PercentageAdjustment declares no Percentage property of its own -- it is a ScheduleTypeCalculation whose only configuration is ScheduleType, so the percentage varies per charge code rather than being a single configured value. CalculationLevel is hardcoded Charge (not derived from ScheduleType).

In the source

class · /home/cary/src/mdc/MdClarity/MDClarity/MDClarityCore/Backend/CustomerDataModel.cs:947
dispatch · CalculationEngine.cs:747-748 (case PercentageAdjustment percentageAdjustment: CalculatePercentageAdjustment(...))

CONFIRMED - class declaration at CustomerDataModel.cs:947-963 (ScheduleTypeCalculation, IAdjustment; CalculationLevel hardcoded Charge), dispatch at CalculationEngine.cs:747-748, algorithm read in full at CalculationEngine.cs:1803-1816. Draft matched code exactly; added the no-explicit-rounding gotcha the draft omitted.