# Mago4 Demo - ERP Gestionale Demo funzionante di un gestionale ERP ispirato a **Mago4**, realizzato con **Python FastAPI**. ## 🎯 Caratteristiche - **Interfaccia fedele a Mago4** β€” header blu, sidebar a moduli, menu a card con breadcrumb e tab, form documento con tab laterali e griglia righe - **Cruscotto aziendale** orientato alle scadenze: banner allerta, KPI pagamenti/incassi scaduti, scadenze imminenti, **Cose da Fare** (paga/sollecita/ordina/conferma), **previsione di cassa** a 30 giorni, controllo fido clienti - **Anagrafiche** β€” Clienti, Fornitori, Articoli (con P.IVA, codice fiscale, UM, IVA) - **Vendite** β€” Ordini Cliente e **Fatturazione**: Fatture Immediate, DDT, Note di Credito, ProForma con calcolo imponibile/IVA/totale e stati documento (bozza β†’ stampato β†’ emesso) - **Acquisti** β€” Ordini Fornitore - **Amministrazione** β€” **Scadenzario** (partite aperte): incassi/pagamenti con data scadenza, stato (scaduta/in scadenza/aperta/saldata), registrazione incasso/pagamento, previsione di cassa - **Logistica/Magazzino** β€” **Movimenti di magazzino** con causali carico/scarico che **aggiornano realmente le giacenze**, **Causali** (DebitCreditSign), Giacenze e valorizzazione - **API REST** completamente documentata (Swagger su `/docs`) - **Database in-memoria** con logica di business (facilmente migrabile a SQL) ### Moduli ispirati al codice sorgente Mago4 La struttura dati e le funzionalitΓ  sono modellate sulle tabelle reali di Mago4: - **Fatturazione**: `MA_SaleDoc` (InvoiceMng) β€” tipi documento, righe con sconto/IVA, stati `Printed`/`Issued`/`PostedToInventory` - **Magazzino**: `MA_InventoryEntries` + `MA_InventoryReasons` (Inventory) β€” movimenti con causali e segno carico/scarico che aggiornano `MA_ItemsBalances` - **Scadenzario**: `MA_PyblsRcvbls` + Details (AP_AR) β€” partite con `InstallmentDate`, `Amount`, `DebitCreditSign`, flag `Closed`/`Collected` ## πŸš€ Quick Start ### 1. Installare dipendenze ```bash pip install -r requirements.txt ``` ### 2. Avviare l'applicazione ```bash python main.py ``` L'app sarΓ  disponibile su: **http://127.0.0.1:8000** ### 3. Accedere alle sezioni - **Dashboard**: http://127.0.0.1:8000/ - **API Docs**: http://127.0.0.1:8000/docs - **Clienti**: http://127.0.0.1:8000/customers - **Fornitori**: http://127.0.0.1:8000/suppliers - **Articoli**: http://127.0.0.1:8000/products - **Ordini Vendita**: http://127.0.0.1:8000/sales-orders - **Ordini Acquisto**: http://127.0.0.1:8000/purchase-orders - **Magazzino**: http://127.0.0.1:8000/warehouse ## πŸ“ Struttura del Progetto ``` mago4-demo/ β”œβ”€β”€ main.py # FastAPI app principale β”œβ”€β”€ models.py # Modelli dati (Pydantic) β”œβ”€β”€ database.py # Database in-memoria β”œβ”€β”€ requirements.txt # Dipendenze Python β”œβ”€β”€ templates/ # Template HTML (Jinja2) β”‚ β”œβ”€β”€ base.html # Layout con sidebar β”‚ β”œβ”€β”€ dashboard.html # Dashboard KPI β”‚ β”œβ”€β”€ customers.html # Gestione clienti β”‚ β”œβ”€β”€ suppliers.html # Gestione fornitori β”‚ β”œβ”€β”€ products.html # Catalogo articoli β”‚ β”œβ”€β”€ sales_orders.html # Ordini vendita β”‚ β”œβ”€β”€ purchase_orders.html # Ordini acquisto β”‚ └── warehouse.html # Magazzino └── static/ # Assets frontend β”œβ”€β”€ css/style.css # Stili (colori Mago4) └── js/app.js # FunzionalitΓ  JS ``` ## 🎨 Design & Colori (ispirato a Mago4) - **Blu**: #1976D2 (Azioni, statistiche) - **Arancione**: #F57C00 (Avvisi, acquisti) - **Verde**: #388E3C (Conferme, OK) - **Rosso**: #D32F2F (Errori, sottosorta) ## πŸ“Š Dati Inclusi - **4 Clienti**: Acme, TechFlow, European Logistics, Alpine Manufacturing - **3 Fornitori**: Global Components, Asia Electronics, Nordic Materials - **5 Articoli**: Widget, Connectors, Brackets, Bearings, Control Module - **3 Ordini Vendita**: SO-2024-0001/0002/0003 - **3 Ordini Acquisto**: PO-2024-0001/0002/0003 ## πŸ”Œ API REST Tutti gli endpoint sono auto-documentati su `/docs` (Swagger UI) ### Principali endpoint: - `GET/POST /api/customers` - `GET/POST /api/suppliers` - `GET/POST /api/products` - `GET/POST /api/sales-orders` - `GET/POST /api/purchase-orders` - `GET /api/warehouse/stats` - `GET /api/info` ## πŸ”„ Migrazione a SQL Pronto per SQLAlchemy + SQL Server/PostgreSQL: ```bash pip install sqlalchemy sqlmodel ``` Sostituire `database.py` con modelli SQLModel e aggiungere connection string. ## βš™οΈ Tech Stack - **Backend**: FastAPI (async Python) - **Template**: Jinja2 - **Validazione**: Pydantic - **DB Demo**: In-memoria (list) - **Frontend**: HTML5 + CSS3 + JavaScript vanilla - **Icons**: Material Design Icons - **Font**: Roboto (Google Fonts) ## ⚠️ Note - Demo con dati fittizi in-memoria - Per produzione: aggiungere auth, DB reale, validazione completa, HTTPS - Facilmente estendibile con nuovi moduli