mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +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
|
"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:
|
class Costs:
|
||||||
"""
|
"""
|
||||||
|
|
@ -1100,7 +1104,7 @@ class Costs:
|
||||||
"labour_days": labour_days,
|
"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
|
Based on a basic estimate of median value £2600 to install a low carbon combi boiler
|
||||||
:return:
|
:return:
|
||||||
|
|
@ -1118,6 +1122,18 @@ class Costs:
|
||||||
labour_cost = labour_rate * self.labour_adjustment_factor * labour_days
|
labour_cost = labour_rate * self.labour_adjustment_factor * labour_days
|
||||||
# Add contingency and preliminaries
|
# Add contingency and preliminaries
|
||||||
labour_cost = labour_cost * (1 + self.CONTINGENCY + self.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
|
vat = labour_cost * self.VAT_RATE
|
||||||
|
|
||||||
subtotal_before_vat = unit_cost + labour_cost
|
subtotal_before_vat = unit_cost + labour_cost
|
||||||
|
|
|
||||||
|
|
@ -43,14 +43,36 @@ class HeatingRecommender:
|
||||||
'No system present, electric heaters assumed'
|
'No system present, electric heaters assumed'
|
||||||
] and self.property.data["mains-gas-flag"]
|
] 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
|
# 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"]
|
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
|
# 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
|
# an overhaul to the system - right now, this is all reasons, apart from if there is an existing boiler
|
||||||
system_change = not has_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
|
return
|
||||||
|
|
||||||
|
|
@ -262,7 +284,7 @@ class HeatingRecommender:
|
||||||
|
|
||||||
return closest_size
|
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
|
This boiler recommendation will only recommend a like-for-like upgrade, since changing the system
|
||||||
is generally more expensive
|
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
|
: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
|
if the home didn't have a heating system in place, or if the home had electric heating
|
||||||
previously
|
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:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -329,7 +353,12 @@ class HeatingRecommender:
|
||||||
"hot_water_energy_eff_ending": "Good"
|
"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 = {
|
boiler_recommendation = {
|
||||||
"phase": recommendation_phase,
|
"phase": recommendation_phase,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue