diff --git a/domain/sap10_calculator/rdsap/cert_to_inputs.py b/domain/sap10_calculator/rdsap/cert_to_inputs.py index f39b006d..5298b0c5 100644 --- a/domain/sap10_calculator/rdsap/cert_to_inputs.py +++ b/domain/sap10_calculator/rdsap/cert_to_inputs.py @@ -792,6 +792,12 @@ _SECONDARY_HEATING_FRACTION_BY_CATEGORY: Final[dict[int, float]] = { 5: 0.10, 6: 0.10, 7: 0.15, + 9: 0.10, # Warm-air systems (NOT heat pump): a gas/oil warm-air unit + # is an "All gas, liquid and solid fuel systems" row (0.10), + # and electric warm air is "Other electric systems" (also + # 0.10) — so 0.10 regardless of fuel (SAP 10.2 Table 11 + # p.188). Cert 0380 (warm air mains gas, code 506, + + # electric room-heater secondary) raised here before. 10: 0.20, } _SECONDARY_HEATING_FRACTION_DEFAULT: Final[float] = 0.10 diff --git a/tests/domain/sap10_calculator/rdsap/test_cert_to_inputs.py b/tests/domain/sap10_calculator/rdsap/test_cert_to_inputs.py index 4b2d13c3..08a25d75 100644 --- a/tests/domain/sap10_calculator/rdsap/test_cert_to_inputs.py +++ b/tests/domain/sap10_calculator/rdsap/test_cert_to_inputs.py @@ -3352,6 +3352,13 @@ def test_secondary_heating_fraction_for_category_full_table_11_coverage() -> Non assert _secondary_heating_fraction_for_category(5) == 0.10 assert _secondary_heating_fraction_for_category(6) == 0.10 assert _secondary_heating_fraction_for_category(7) == 0.15 + # Category 9 = warm-air systems (NOT heat pump). A gas/oil warm-air + # unit is an "All gas, liquid and solid fuel systems" row (0.10); + # electric warm air is "Other electric systems" (also 0.10) — so 0.10 + # regardless of fuel (SAP 10.2 Table 11 p.188). Cert 0380-2197-2590- + # 2996-2715 (warm air mains gas, code 506, + electric room-heater + # secondary) previously raised UnmappedSapCode here, blocking it. + assert _secondary_heating_fraction_for_category(9) == 0.10 assert _secondary_heating_fraction_for_category(10) == 0.20 # Absent assert _secondary_heating_fraction_for_category(None) == 0.10