🧮 Moteur Fiscal IFPB
Calcul automatique de l'IFTB — Impôt Foncier sur les Propriétés Bâties
Grille Tarifaire — Valeur Locative Théorique Annuelle
Catégorie A
Industriel & Grand Commerce
5 000 Ar/m²
Taux imposition: 10%
Usines, dépôts logistiques, banques
Catégorie B
Commercial Moyen & Résidence Standing
2 500 Ar/m²
Taux imposition: 7%
Boutiques centre-ville, bureaux
Catégorie C
Habitation Standard
1 000 Ar/m²
Taux imposition: 5%
Maisons individuelles maçonnées
Catégorie D
Habitat Traditionnel / Vulnérable
200 Ar/m²
Taux imposition: 2%
Matériaux locaux, zones enclavées
Zones Géographiques — Qualification Catégorie
| Zone | Catégories éligibles |
|---|---|
| Bordure route nationale | Cat ACat B |
| Centre-ville dense | Cat BCat C |
| Périphérique standard | Cat C |
| Zone enclavée/rurale | Cat D |
Classification des Matériaux de Construction
Dur
Béton, briques crêpies, dalles
Cat A-B
Semi-dur
Briquets non crêpies, bois standing
Cat B-C
Traditionnel
Falafa, planches récupération, tôles
Cat D
Logique Algorithmique du Moteur Fiscal
1️⃣ Ventilation Verticale (Immeubles Mixtes)
Pour chaque étage i d'un bâtiment: - Déterminer usage_étage_i (Industriel / Commercial / Résidentiel) - Déterminer superficie_étage_i - Calculer assiette_étage_i = superficie × tarif(usage, zone, matériaux) Consolider: assiette_totale = Σ assiette_étage_i
2️⃣ Ventilation Horizontale (Multi-bâtiments sur parcelle)
Pour chaque bâtiment j sur la parcelle: - Ouvrir session de calcul autonome - Appliquer ventilation verticale interne Consolider sur rôle_fiscal_unique lié à la parcelle
3️⃣ Verrouillage Faux Chantiers
def verifier_chantier(signes_occupation):
"""Si signes d'occupation détectés → annuler statut chantier"""
if signes_occupation in ['jirama_actif', 'mobilier_present',
'exploitation_cours']:
return False # Pas un chantier → imposable
return True # Vrai chantier → exonération possible si <5ans
⚠️ Un compteur JIRAMA actif ou du mobilier présent prouve que le bâtiment est occupé et non en construction.
4️⃣ Requalification Commerces Précaires
def qualifier_usage(usage_constate, zone_geographique):
"""Plancher commercial: jamais taxé comme habitat vulnérable"""
if usage_constate == 'commercial':
return max(categorie_par_zone(zone), 'B') # Minimum Cat B
return categorie_par_zone(zone)
📌 Un commerce ne peut jamais être classé Cat D (vulnérable) même en zone enclavée.
💰 5️⃣ Calcul Complet IFTB + CAC
def calcul_ifpb(superficie, categorie, taux_cat, exonere=False):
"""
Retourne: {
valeur_locative: float,
iftb_principal: float,
cac: float, # Centimes Additionnels Communaux (10%)
net_a_payer: float
}
"""
tarifs = {'A': 5000, 'B': 2500, 'C': 1000, 'D': 200}
taux = {'A': 0.10, 'B': 0.07, 'C': 0.05, 'D': 0.02}
valeur_locative = superficie * tarifs[categorie]
if exonere:
return {'valeur_locative': valeur_locative,
'iftb_principal': 0, 'cac': 0, 'net_a_payer': 0}
iftb_principal = valeur_locative * taux[categorie]
cac = iftb_principal * 0.10 # 10% CAC
net_a_payer = iftb_principal + cac
return {'valeur_locative': round(valeur_locative, 2),
'iftb_principal': round(iftb_principal, 2),
'cac': round(cac, 2),
'net_a_payer': round(net_a_payer, 2)}
📋 6️⃣ Exonération Temporaire (CGI)
- ✅ Constructions neuves : exonération totale de 5 ans
- 📝 Condition : âge_batiment < 5 ans ET statut = construction_neuve
- 🔑 Le recensement est la condition indispensable pour formaliser cette exonération
Contrôles de Sécurité (Anti-Corruption)
🔒 Inviolabilité des calculs
Formules cryptées côté serveur
⚖️ Neutralité de l'agent
L'agent ne voit que les champs de saisie factuelle
🚫 Pas de négociation
Montant affiché en lecture seule après saisie
📜 Traçabilité complète
Chaque modification logged avec timestamp + user ID
Intégrations Système
KoboToolbox (données brutes terrain)Passerelle paiement (mobile money / virement)SMS gateway (opérateurs malgaches)Export CSV/Excel Receveur Municipal