diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index f9e8f0d1..e500c32e 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -1867,6 +1867,12 @@ _ELMHURST_PARTY_WALL_CODE_TO_SAP10: Dict[str, int] = { "CU": 4, # Cavity masonry unfilled — same U=0.5 cascade; Elmhurst # encodes party-wall cavity type with the masonry sub-code # (CU vs CF filled) — observed first on cert 001479 Main. + # "U Unable to determine" — the cohort's modal lodgement. The cohort + # hand-built convention uses 0 as the explicit "unknown" sentinel + # (rather than None) so cross-mapper field parity is preserved; the + # cascade resolves 0 to the same `u_party_wall` default (0.25) as + # None, so cascade output is unchanged for cohort-style certs. + "U": 0, } diff --git a/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000474.py b/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000474.py index 6e953323..8b2d8dbd 100644 --- a/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000474.py +++ b/packages/domain/src/domain/sap/worksheet/tests/_elmhurst_worksheet_000474.py @@ -221,6 +221,11 @@ def build_epc() -> EpcPropertyData: epc.sap_heating.shower_outlets = ShowerOutlets( shower_outlet=ShowerOutlet(shower_outlet_type="Non-electric shower"), ) + # Summary §14 "Heat pump age: Unknown" — surfaced by the Elmhurst + # mapper as the str dual-encoding that internal_gains.py reads. + # `make_main_heating_detail` doesn't expose the str kwarg, so set + # here post-construction for cross-mapper field parity. + epc.sap_heating.main_heating_details[0].central_heating_pump_age_str = "Unknown" return epc