Model/etl/customers/ealing/prepare_for_hubspot.py
2025-07-09 17:41:21 +01:00

75 lines
3.1 KiB
Python

import numpy as np
import pandas as pd
from asset_list.hubspot.config import HubspotProcessStatus
project_data = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/Ealing/Hubspot/Ealing Flats Completion Tracker JW "
"170625.xlsx",
sheet_name="All_Flats"
)
project_data["hubspot_status"] = None
project_data["hubspot_status"] = np.where(
(project_data["Status"] == "Submitted") & (project_data["PAS"] == "PAS2023"),
HubspotProcessStatus.SURVEYED_COMPLETED_SIGNED_OFF.label,
project_data["hubspot_status"]
)
project_data["hubspot_status"] = np.where(
(project_data["Status"] == "Submitted") & (project_data["PAS"] == "PAS2019"),
"SURVEYED UNDER 2019 - NEEDS RE-SURVEY",
project_data["hubspot_status"]
)
project_data["project_code"] = "EALING-FLATS-" + project_data["Block Ref"].astype(str)
asset_list = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/Ealing/Hubspot/20250707 Ealing Flats - Standardised.xlsx",
sheet_name="Standardised Asset List"
)
asset_list["landlord_property_id"] = asset_list["landlord_property_id"].astype(str)
asset_list["incorrect_landlord_property_id"] = asset_list["incorrect_landlord_property_id"].astype(str)
project_data["Property ref"] = project_data["Property ref"].astype(str)
# We need to update the status of properties that already been surveyed
asset_list2 = asset_list.merge(
project_data[["Property ref", "hubspot_status", "project_code"]],
how="left",
right_on="Property ref",
left_on="incorrect_landlord_property_id",
suffixes=("", "_project")
)
asset_list2["hubspot_status"] = np.where(
~pd.isna(asset_list2["hubspot_status_project"]),
asset_list2["hubspot_status_project"],
asset_list2["hubspot_status"]
)
asset_list2["project_code"] = np.where(
~pd.isna(asset_list2["project_code"]),
asset_list2["project_code"],
asset_list2["landlord_property_id"]
)
asset_list2 = asset_list2.drop(columns=["hubspot_status_project", "project_code_project"])
asset_list2["cavity_reason"] = np.where(
pd.isnull(asset_list2["cavity_reason"]),
"Non-Intrusive Data Shows Empty Cavity: SAP Rating 55-68",
asset_list2["cavity_reason"]
)
asset_list2["solar_reason"] = None
# Read in block analysis and geographical areas from standardised asset list
block_analysis_df = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/Ealing/Hubspot/20250707 Ealing Flats - Standardised.xlsx",
sheet_name="Block Analysis"
)
geographical_areas = pd.read_excel(
"/Users/khalimconn-kowlessar/Documents/hestia/Customers/Ealing/Hubspot/20250707 Ealing Flats - Standardised.xlsx",
sheet_name="Geographical Areas"
)
# Update the new standardised asset list
filename = ("/Users/khalimconn-kowlessar/Documents/hestia/Customers/Ealing/Hubspot/20250707 Ealing Flats - Prepared "
"programme.xlsx")
with pd.ExcelWriter(filename) as writer:
asset_list2.to_excel(writer, sheet_name="Standardised Asset List", index=False)
block_analysis_df.to_excel(writer, sheet_name="Block Analysis", index=False)
geographical_areas.to_excel(writer, sheet_name="Geographical Areas", index=False)