extend recommendations to cover portable electric heaters

This commit is contained in:
Khalim Conn-Kowlessar 2024-04-11 18:14:38 +01:00
parent 88f43bcc82
commit 61584a6320
2 changed files with 50 additions and 5 deletions

View file

@ -79,6 +79,10 @@ CONVENTIONAL_BOILER_COSTS = {
"40kw": 1776
}
# Assumes 3 hours to remove each heater (including re-decorating)
ROOM_HEATER_REMOVAL_COST = 120
ROOM_HEATER_REMOVAL_LABOUR_HOURS = 3
class Costs:
"""
@ -1100,7 +1104,7 @@ class Costs:
"labour_days": labour_days,
}
def low_carbon_boiler(self, is_combi, size):
def boiler(self, is_combi, size, exising_room_heaters, n_heated_rooms):
"""
Based on a basic estimate of median value £2600 to install a low carbon combi boiler
:return:
@ -1118,6 +1122,18 @@ class Costs:
labour_cost = labour_rate * self.labour_adjustment_factor * labour_days
# Add contingency and preliminaries
labour_cost = labour_cost * (1 + self.CONTINGENCY + self.PRELIMINARIES)
# if there are existing room heaters, we need to add the cost of removing them
if exising_room_heaters:
removal_cost = ROOM_HEATER_REMOVAL_COST * n_heated_rooms
removal_labour_hours = ROOM_HEATER_REMOVAL_LABOUR_HOURS * n_heated_rooms
else:
removal_cost = 0
removal_labour_hours = 0
labour_cost = labour_cost + removal_cost
labour_days = labour_days + (removal_labour_hours / 8)
vat = labour_cost * self.VAT_RATE
subtotal_before_vat = unit_cost + labour_cost

View file

@ -43,14 +43,36 @@ class HeatingRecommender:
'No system present, electric heaters assumed'
] and self.property.data["mains-gas-flag"]
has_gas_heaters = (
self.property.main_heating["clean_description"] in ["Room heaters, mains gas"] and
self.property.data["mains-gas-flag"]
)
# We also check if the property has electric heating, but it has access to the mains gas
electic_heating_has_mains = has_electric_heating_description and self.property.data["mains-gas-flag"]
if has_boiler or no_heating_has_mains or electic_heating_has_mains:
portable_heaters_has_mains = (
self.property.main_heating["clean_description"] in ["Portable electric heaters assumed for most rooms"] and
self.property.data["mains-gas-flag"]
)
if (
has_boiler or
no_heating_has_mains or
electic_heating_has_mains or
has_gas_heaters or
portable_heaters_has_mains
):
# This indicates that the home previously did not have a boiler in place and so would require
# an overhaul to the system - right now, this is all reasons, apart from if there is an existing boiler
system_change = not has_boiler
self.recommend_boiler_upgrades(phase=phase, system_change=system_change)
exising_room_heaters = self.property.main_heating["clean_description"] in [
"Room heaters, electric", "Room heaters, mains gas"
]
self.recommend_boiler_upgrades(
phase=phase, system_change=system_change, exising_room_heaters=exising_room_heaters
)
return
@ -262,7 +284,7 @@ class HeatingRecommender:
return closest_size
def recommend_boiler_upgrades(self, phase, system_change):
def recommend_boiler_upgrades(self, phase, system_change, exising_room_heaters):
"""
This boiler recommendation will only recommend a like-for-like upgrade, since changing the system
is generally more expensive
@ -270,6 +292,8 @@ class HeatingRecommender:
:param system_change: Indicates if the property would be undergoing a heating system change. This could be true
if the home didn't have a heating system in place, or if the home had electric heating
previously
:param exising_room_heaters: Indicates if the property had room heaters previously - if so, a boiler
recommendation will need to be accompanied by removal of the room heaters
:return:
"""
@ -329,7 +353,12 @@ class HeatingRecommender:
"hot_water_energy_eff_ending": "Good"
}
boiler_costs = self.costs.low_carbon_boiler(is_combi=is_combi, size=f"{boiler_size}kw")
boiler_costs = self.costs.boiler(
is_combi=is_combi,
size=f"{boiler_size}kw",
exising_room_heaters=exising_room_heaters,
n_heated_rooms=self.property.data["number-heated-rooms"]
)
boiler_recommendation = {
"phase": recommendation_phase,