mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
extend recommendations to cover portable electric heaters
This commit is contained in:
parent
88f43bcc82
commit
61584a6320
2 changed files with 50 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue