Cite C6 rather than C3.2 for the heat-network standing charge rule 🟪

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Daniel Roth 2026-07-15 13:53:59 +00:00
parent a412c8942b
commit 589eedba8a

View file

@ -1995,16 +1995,15 @@ def _is_community_heating_hw_from_main(epc: EpcPropertyData) -> bool:
def _heat_network_standing_charge_gbp(
epc: EpcPropertyData, main: Optional[MainHeatingDetail]
) -> Optional[float]:
"""SAP 10.2 Table 12 note (l) + §C3.2 heat-network standing charge, or
None when the dwelling is not on a heat network (caller then falls back
to the fuel-based `additional_standing_charges_gbp`).
"""SAP 10.2 Table 12 note (l) + §C6 heat-network standing charge that
REPLACES the dwelling's fuel-based standing, or None when no replacement
applies (`_standing_charges_total_gbp` then composes the fuel-based
`additional_standing_charges_gbp` itself).
A heat network carries the Table 12 £120/yr standing charge regardless
of the network fuel full when the SPACE heating is on the network
(§C3.2 "the total standing charge is the normal heat network standing
charge"), halved to £60 when ONLY DHW is provided by the heat network
(note (l)). This REPLACES the fuel-based gas/off-peak standing for a
heat-network main, so it must not be added on top of
(§C6 p.55 "the total standing charge is the normal heat network standing
charge"). Being a TOTAL, it must not be added on top of
`additional_standing_charges_gbp` (which would double-count: a
Summary-path community-gas main lodges Table-32 code 1 and already
draws the £120 gas standing). Worksheet-validated: simulated case 14
@ -2013,6 +2012,17 @@ def _heat_network_standing_charge_gbp(
The API path under-counted this: an EPC community fuel (e.g. 20 = mains
gas community) is not a Table-32 gas code, so `_is_gas_code` returned
False and the standing came out £0 cert 9390 lost the whole £120.
The £60 branch is reachable ONLY for WHC 914 (`_water_heating_main`
returns Main 2 for 914 alone, and 901/902's Main 1 would already have
hit the branch above). Main 2 is a MAIN heating system, so it carries a
space-heating fraction meaning the space heating IS also a heat
network, which is precisely C6's "unless", pointing at the full £120.
#1608 tracks that; it is deliberately left as-is here.
NOTE: this is NOT the C6 half charge for water-only networks (WHC
950/951/952) that one is additive and lives in
`_standing_charges_total_gbp`.
"""
if is_heat_network_main(main):
return _HEAT_NETWORK_STANDING_CHARGE_GBP