From 35de55b291523ed75ec2907f27e5fa1ffe38a92d Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Wed, 10 Jun 2026 14:04:34 -0400 Subject: [PATCH] Page d'accueil --- .gitignore | 10 ------- static/index.html | 76 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 000893a..f715e13 100644 --- a/.gitignore +++ b/.gitignore @@ -15,16 +15,6 @@ backups/ # Fichiers de travail (anciennes versions conservées localement) *.old -*_v3.* -*_v4.* -cca_pool.py -cca_registry.py -index_v3.html -index_v4.html -main_v3.py -main_v4.py -store_v3.py -store_v4.py immos_test.db # Éditeurs diff --git a/static/index.html b/static/index.html index 42e3df6..5e36d87 100644 --- a/static/index.html +++ b/static/index.html @@ -75,6 +75,22 @@ .note.cpa { color: #f59e0b; border-left: 2px solid #f59e0b; padding-left: 6px; margin-top: 10px; } .audit-item { font-size: 11px; border-left: 2px solid #334155; padding-left: 8px; margin-bottom: 6px; } + /* ── Welcome modal ── */ + .welcome-modal { width: 620px; } + .welcome-logo { font-size: 36px; margin-bottom: 4px; } + .welcome-title { font-size: 20px; font-weight: 700; margin: 0 0 2px; } + .welcome-sub { font-size: 13px; color: #64748b; margin-bottom: 20px; } + .welcome-section { margin-bottom: 16px; } + .welcome-section h4 { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: #60a5fa; margin: 0 0 6px; } + .welcome-section p, .welcome-section li { font-size: 13px; color: #cbd5e1; line-height: 1.6; margin: 0; } + .welcome-section ul { margin: 4px 0; padding-left: 18px; } + .welcome-section li { margin-bottom: 3px; } + .welcome-warn { background: #1e293b; border-left: 3px solid #f59e0b; border-radius: 0 6px 6px 0; padding: 10px 14px; margin-top: 4px; } + .welcome-warn li { color: #fbbf24; } + .welcome-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-top: 20px; padding-top: 16px; border-top: 1px solid #334155; } + .welcome-check { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #94a3b8; cursor: pointer; } + .welcome-check input[type=checkbox] { width: auto; margin: 0; accent-color: #60a5fa; cursor: pointer; } + /* ── Modals ── */ .modal-bg { position: fixed; inset: 0; background: rgba(0,0,0,.65); display: flex; align-items: center; justify-content: center; z-index: 60; } .modal { background: #0f172a; border: 1px solid #334155; border-radius: 12px; padding: 22px; width: 760px; max-width: 94vw; max-height: 90vh; overflow-y: auto; } @@ -260,6 +276,7 @@ function App() { const [modal, setModal] = useState(null); const [fabOpen, setFabOpen] = useState(false); const [toolSheet, setToolSheet] = useState(null); // "fiscal" | "plus" | null + const [showWelcome, setShowWelcome] = useState(() => localStorage.getItem("immos_welcome_v1") !== "1"); const load = useCallback(()=>api("/api/assets","GET").then(setAssets), []); useEffect(()=>{ load(); }, [load]); @@ -706,6 +723,7 @@ function App() { {modal==="registry" && setModal(null)}/>} {modal==="annexe8" && setModal(null)}/>} {modal==="backup" && setModal(null)} onRestore={()=>{load(); setSelectedId(null); setModal(null);}}/>} + {showWelcome && setShowWelcome(false)}/>} ); } @@ -1250,6 +1268,64 @@ function BackupModal({onClose, onRestore}) { ); } +function WelcomeModal({ onClose }) { + const [nePlus, setNePlus] = useState(false); + const fermer = () => { + if (nePlus) localStorage.setItem("immos_welcome_v1", "1"); + onClose(); + }; + return ( +
+
e.stopPropagation()}> +
🏢
+
Gestionnaire d'immobilisations fiscales
+
Chezlepro Inc. — usage interne
+ +
+

Qui utilise cet outil

+

Daniel Allaire, responsable des opérations TI de Chezlepro Inc., PME québécoise exploitant un datacenter privé. Cet outil est destiné à un usage interne, par le propriétaire ou son CPA conseil.

+
+ +
+

Intention

+

Tenir un registre précis des immobilisations de Chezlepro Inc. et produire les données nécessaires aux déclarations fiscales T2 (Annexe 8) et CO-17 — catégories DPA 8, 10, 12, 46 et 50 — sans déléguer chaque exercice à un cabinet externe.

+
+ +
+

Ce que cet outil fait

+
    +
  • CRUD immobilisations (parents) et pièces d'inventaire rattachées
  • +
  • Registre pool DPA multi-catégories, multi-exercices
  • +
  • Calcul de la DPA, de la FNACC, de la perte finale et de la récupération
  • +
  • Rapport fiscal HTML (lignes T2 / CO-17) et export Annexe 8 CSV
  • +
  • Sauvegardes horodatées et pièces jointes (factures PDF/JPG)
  • +
+
+ +
+

Limites importantes

+
+
    +
  • Outil indicatif — les calculs doivent être validés par un CPA avant toute déclaration.
  • +
  • Non certifié par l'ARC ni Revenu Québec.
  • +
  • Aucun taux d'accélération temporaire (p. ex. passation en charges immédiate) n'est appliqué automatiquement.
  • +
  • Conçu pour une seule entité juridique; ne supporte pas la consolidation multi-entités.
  • +
+
+
+ +
+ + +
+
+
+ ); +} + ReactDOM.createRoot(document.getElementById("root")).render();