diff --git a/etl/eligibility/ha_15_32/ha_analysis_batch_3.py b/etl/eligibility/ha_15_32/ha_analysis_batch_3.py index b954a651..3ded09ba 100644 --- a/etl/eligibility/ha_15_32/ha_analysis_batch_3.py +++ b/etl/eligibility/ha_15_32/ha_analysis_batch_3.py @@ -398,6 +398,8 @@ class DataLoader: return "CIGA Checks" elif "CIGA checks" in workbook.sheetnames: return "CIGA checks" + elif "CIGA check" in workbook.sheetnames: + return "CIGA check" else: return "CIGA" @@ -1318,14 +1320,16 @@ class DataLoader: "ECO4 A/W": "ECO4", "ECO4 GBIS (ECO+)": "GBIS", "ECO4 GBIS (ECO+) JJC UNDER 73m²": "GBIS", - "ECO4 AFFORDABLE WARMTH": "ECO4" + "ECO4 AFFORDABLE WARMTH": "ECO4", + "Affordable Warmth": "ECO4" } eco_eligibility_map = { "not eligble": "not eligible", "eco 4(subject to ciga)": "eco4 (subject to ciga)", "eco4 (subject to ciga/archetype check": "eco4 (subject to ciga)", - "eco4 (subject to archetype check)": "eco4" + "eco4 (subject to archetype check)": "eco4", + "eco4 (subject to ciga/archetype)": "eco4 (subject to ciga)", } ha_facts_and_figures = [] @@ -1384,46 +1388,56 @@ class DataLoader: sales_report = {} if not survey_list.empty: scheme_column = survey_list.columns[0] - # We clean up the survey list installation or cancelled - survey_list["installed_or_cancelled_clean"] = survey_list["INSTALLED OR CANCELLED"].str.lower() - # Remove all punctuation - survey_list["installed_or_cancelled_clean"] = survey_list["installed_or_cancelled_clean"].str.replace( - r'[^\w\s]', '', regex=True - ) - # Remove double spaces - survey_list["installed_or_cancelled_clean"] = survey_list["installed_or_cancelled_clean"].str.replace( - r'\s+', ' ', regex=True - ) - # Remove trailing spaces - survey_list["installed_or_cancelled_clean"] = survey_list["installed_or_cancelled_clean"].str.strip() - # Remap the values in the scheme column survey_list[scheme_column] = survey_list[scheme_column].replace(scheme_map) + # We clean up the survey list installation or cancelled + if "INSTALLED OR CANCELLED" in survey_list.columns: + survey_list["installed_or_cancelled_clean"] = survey_list["INSTALLED OR CANCELLED"].str.lower() + # Remove all punctuation + survey_list["installed_or_cancelled_clean"] = survey_list[ + "installed_or_cancelled_clean"].str.replace( + r'[^\w\s]', '', regex=True + ) + # Remove double spaces + survey_list["installed_or_cancelled_clean"] = survey_list[ + "installed_or_cancelled_clean"].str.replace( + r'\s+', ' ', regex=True + ) + # Remove trailing spaces + survey_list["installed_or_cancelled_clean"] = survey_list[ + "installed_or_cancelled_clean"].str.strip() - survey_list["installation_status"] = None - survey_list["installation_status"] = np.where( - survey_list["installed_or_cancelled_clean"].isin(["installed", "installed see notes"]), - "installed", - survey_list["installation_status"] - ) - survey_list["installation_status"] = np.where( - survey_list["installed_or_cancelled_clean"].isin(["cancelled"]), - "cancelled", - survey_list["installation_status"] - ) - # Find partial installations - survey_list["installation_status"] = np.where( - survey_list["installed_or_cancelled_clean"].str.contains("still to be installed"), - "partially installed", - survey_list["installation_status"] - ) - # Find partial cancellations - # TODO: We might have more indications of partial cancellations - survey_list["installation_status"] = np.where( - survey_list["installed_or_cancelled_clean"].isin(["loft cancelled"]), - "partially cancelled", - survey_list["installation_status"] - ) + survey_list["installation_status"] = None + survey_list["installation_status"] = np.where( + survey_list["installed_or_cancelled_clean"].isin(["installed", "installed see notes"]), + "installed", + survey_list["installation_status"] + ) + survey_list["installation_status"] = np.where( + survey_list["installed_or_cancelled_clean"].isin(["cancelled"]), + "cancelled", + survey_list["installation_status"] + ) + # Find partial installations + survey_list["installation_status"] = np.where( + survey_list["installed_or_cancelled_clean"].str.contains("still to be installed"), + "partially installed", + survey_list["installation_status"] + ) + # Find partial cancellations + # TODO: We might have more indications of partial cancellations + survey_list["installation_status"] = np.where( + survey_list["installed_or_cancelled_clean"].isin(["loft cancelled"]), + "partially cancelled", + survey_list["installation_status"] + ) + else: + # We have some examples, e.g. HA28, where we do not have the installed or cancelled column + survey_list["installation_status"] = np.where( + survey_list['INSTALL/ CANCELLATION DATE'].str.lower().str.contains("cancelled"), + "cancelled", + "installed", + ) # Finally, for other cases, we set the status to "in progress" survey_list["installation_status"] = survey_list["installation_status"].fillna("in progress")