SPB Git

spb/uqo-chat

Public
4.1 KB · 82 lines python
1"""Template: cost approach grid (land + cost new − depreciation)."""23from __future__ import annotations45from typing import Any678def build(p: dict[str, Any]) -> dict[str, Any]:9    adresse = p.get("adresse", "Immeuble fictif — Gatineau")10    superficie = float(p.get("superficie_m2", 210))11    cout_unitaire = float(p.get("cout_unitaire_m2", 2450))12    indirects = float(p.get("couts_indirects_pct", 0.12))13    profit = float(p.get("profit_pct", 0.15))14    terrain = float(p.get("valeur_terrain", 185000))15    site = float(p.get("ameliorations_site", 25000))16    age_eff = float(p.get("age_effectif", 12))17    dve = float(p.get("duree_vie_economique", 60))18    dep_fonct = float(p.get("depreciation_fonctionnelle", 0))19    dep_econ = float(p.get("depreciation_economique", 0))20    inputs = [21        {"cell": "B4", "label": "Superficie brute (m²)", "value": superficie, "format": "area",22         "name": "Superficie"},23        {"cell": "B5", "label": "Coût unitaire direct ($/m²)", "value": cout_unitaire,24         "format": "currency", "name": "Cout_Unitaire"},25        {"cell": "B6", "label": "Coûts indirects (% des coûts directs)", "value": indirects,26         "format": "percent", "name": "Indirects_Pct"},27        {"cell": "B7", "label": "Profit de l'entrepreneur (%)", "value": profit,28         "format": "percent", "name": "Profit_Pct"},29        {"cell": "B8", "label": "Âge effectif (ans)", "value": age_eff, "format": "number",30         "name": "Age_Effectif"},31        {"cell": "B9", "label": "Durée de vie économique (ans)", "value": dve,32         "format": "number", "name": "DVE"},33        {"cell": "B10", "label": "Valeur du terrain ($)", "value": terrain, "format": "currency",34         "name": "Valeur_Terrain"},35        {"cell": "B11", "label": "Améliorations du site ($)", "value": site,36         "format": "currency", "name": "Ameliorations_Site"},37        {"cell": "B12", "label": "Dépréciation fonctionnelle ($)", "value": dep_fonct,38         "format": "currency"},39        {"cell": "B13", "label": "Dépréciation économique ($)", "value": dep_econ,40         "format": "currency"},41    ]42    table = {43        "anchor": "A16",44        "columns": [{"header": "Poste", "type": "text"}, {"header": "Montant ($)", "type": "currency"},45                    {"header": "Calcul", "type": "text"}],46        "rows": [47            ["Coûts directs", "=B4*B5", "Superficie × coût unitaire"],48            ["Coûts indirects", "=B17*B6", "Directs × % indirects"],49            ["Profit de l'entrepreneur", "=(B17+B18)*B7", "(Directs + indirects) × % profit"],50            ["Coût neuf (C_N)", "=B17+B18+B19", "Somme"],51            ["Dépréciation physique (âge-vie)", "=B20*B8/B9", "C_N × (âge effectif / DVE)"],52            ["Dépréciation fonctionnelle", "=B12", "Hypothèse"],53            ["Dépréciation économique", "=B13", "Hypothèse"],54            ["Dépréciation totale (D)", "=B21+B22+B23", "Somme"],55            ["Coût déprécié des améliorations", "=B20-B24", "C_N − D"],56            ["Valeur du terrain", "=B10", "Hypothèse"],57            ["Améliorations du site", "=B11", "Hypothèse"],58        ],59        "totals": {"label": "VALEUR INDIQUÉE (méthode du coût)", "formula": "=B25+B26+B27",60                   "name": "Valeur_Indiquee"},61        "bold_rows": [3, 7],62    }63    return {64        "filename": p.get("filename", "methode_du_cout.xlsx"),65        "style": "uqo",66        "sheets": [{67            "name": "Méthode du coût",68            "title": f"Estimation par la méthode du coût — {adresse}",69            "inputs_title": "Hypothèses (cellules bleues modifiables)",70            "inputs": inputs,71            "tables": [table],72            "charts": [{"type": "bar", "title": "Ventilation de la valeur",73                        "categories_range": "A25:A27", "values_range": "B25:B27",74                        "anchor": "E16"}],75            "notes": [76                "V = V_T + (C_N − D) + améliorations du site.",77                "Dépréciation physique estimée par la méthode âge-vie : D = (A_e / DVE) × C_N.",78                "Les cellules bleues sont des hypothèses ; tout le reste est calculé par formule.",79            ],80        }],81    }82
Files · afb5ca448565f356efc1532400a8ac8b8eba5d6a
Menu

Theme