-
This commit is contained in:
182
CLAUDE.md
182
CLAUDE.md
@@ -46,12 +46,103 @@ XX. **Nome Problema (FIX/IMPLEMENTATO DATA):** - **Problema:** Descrizione breve
|
||||
|
||||
## Quick Start - Session Recovery
|
||||
|
||||
**Ultima sessione:** 29 Novembre 2025 (sera)
|
||||
**Ultima sessione:** 30 Novembre 2025
|
||||
|
||||
**Stato progetto:** Migrazione Oracle APEX → .NET + React TypeScript in corso
|
||||
|
||||
**Lavoro completato nell'ultima sessione:**
|
||||
|
||||
- **NUOVA FEATURE: Sistema Codici Automatici Configurabili** - COMPLETATO
|
||||
- **Obiettivo:** Sistema admin per configurare la generazione automatica di codici (articoli, magazzini, movimenti, ecc.)
|
||||
- **Backend implementato:**
|
||||
- `AutoCode.cs` - Entity con pattern configurabile, prefisso, sequenza, reset periodico
|
||||
- `AutoCodeService.cs` - Logica business (generazione, preview, reset, validazione pattern)
|
||||
- `AutoCodesController.cs` - API REST complete
|
||||
- Migration EF Core `AddAutoCodeSystem`
|
||||
- Seed automatico configurazioni default per tutte le entità
|
||||
- **Frontend implementato:**
|
||||
- `autoCode.ts` - Types TypeScript
|
||||
- `autoCodeService.ts` - API calls
|
||||
- `AutoCodesAdminPage.tsx` - Pagina admin con tabella configurazioni, dialog modifica, guida pattern
|
||||
- **Pattern supportati:**
|
||||
- `{PREFIX}` - Prefisso configurabile
|
||||
- `{SEQ:n}` - Sequenza numerica con n cifre
|
||||
- `{YYYY}`, `{YY}` - Anno
|
||||
- `{MM}`, `{DD}` - Mese, Giorno
|
||||
- **Funzionalità:**
|
||||
- Configurazione per entità (warehouse_article, stock_movement, cliente, evento, ecc.)
|
||||
- Reset sequenza annuale o mensile automatico
|
||||
- Preview prossimo codice senza incremento
|
||||
- Reset manuale sequenza
|
||||
- Abilitazione/disabilitazione per entità
|
||||
- Raggruppamento per modulo nell'UI
|
||||
- **API Endpoints:**
|
||||
- `GET /api/autocodes` - Lista configurazioni
|
||||
- `GET /api/autocodes/{entityCode}` - Dettaglio
|
||||
- `GET /api/autocodes/{entityCode}/preview` - Anteprima prossimo codice
|
||||
- `POST /api/autocodes/{entityCode}/generate` - Genera nuovo codice
|
||||
- `PUT /api/autocodes/{id}` - Aggiorna configurazione
|
||||
- `POST /api/autocodes/{entityCode}/reset-sequence` - Reset sequenza
|
||||
- `GET /api/autocodes/placeholders` - Lista placeholder disponibili
|
||||
- **File principali:**
|
||||
- `src/Apollinare.Domain/Entities/AutoCode.cs`
|
||||
- `src/Apollinare.API/Services/AutoCodeService.cs`
|
||||
- `src/Apollinare.API/Controllers/AutoCodesController.cs`
|
||||
- `frontend/src/pages/AutoCodesAdminPage.tsx`
|
||||
|
||||
**Lavoro completato nelle sessioni precedenti (29 Novembre 2025 notte):**
|
||||
|
||||
- **NUOVA FEATURE: Modulo Magazzino (warehouse)** - COMPLETATO
|
||||
- **Backend implementato:**
|
||||
- Entities complete in `/src/Apollinare.Domain/Entities/Warehouse/`:
|
||||
- `WarehouseLocation.cs` - Magazzini fisici/logici con Type enum (Physical, Virtual, Transit)
|
||||
- `WarehouseArticleCategory.cs` - Categorie gerarchiche con Color, Icon, Level, FullPath
|
||||
- `WarehouseArticle.cs` - Articoli con batch/serial management flags, valorizzazione
|
||||
- `ArticleBatch.cs` - Tracciabilità lotti con scadenza
|
||||
- `ArticleSerial.cs` - Tracciabilità numeri seriali
|
||||
- `StockLevel.cs` - Giacenze per articolo/magazzino/batch
|
||||
- `StockMovement.cs` - Movimenti (Inbound/Outbound/Transfer/Adjustment)
|
||||
- `StockMovementLine.cs` - Righe movimento
|
||||
- `MovementReason.cs` - Causali movimento
|
||||
- `ArticleBarcode.cs` - Multi-barcode support
|
||||
- `StockValuation.cs` + `StockValuationLayer.cs` - Valorizzazione periodo e layer FIFO/LIFO
|
||||
- `InventoryCount.cs` + `InventoryCountLine.cs` - Inventari fisici
|
||||
- Service completo `WarehouseService.cs` con:
|
||||
- CRUD articoli, categorie, magazzini
|
||||
- Gestione movimenti (carico/scarico/trasferimento/rettifica)
|
||||
- Conferma movimenti con aggiornamento giacenze
|
||||
- Calcolo valorizzazione (WeightedAverage, FIFO, LIFO, StandardCost)
|
||||
- Gestione partite e seriali
|
||||
- Controllers REST in `/src/Apollinare.API/Modules/Warehouse/Controllers/`:
|
||||
- `WarehouseLocationsController.cs`
|
||||
- `WarehouseArticlesController.cs`
|
||||
- `WarehouseArticleCategoriesController.cs`
|
||||
- `StockMovementsController.cs`
|
||||
- `StockLevelsController.cs`
|
||||
- Seed dati default (magazzino principale + transito, categorie base, causali)
|
||||
|
||||
- **CONFIGURAZIONE: EF Core Code First Migrations** - COMPLETATO
|
||||
- **Problema:** Le tabelle venivano create manualmente invece che con migrations EF Core
|
||||
- **Soluzione implementata:**
|
||||
- Sostituito `db.Database.EnsureCreated()` con `db.Database.MigrateAsync()` in `Program.cs`
|
||||
- Creata migration `InitialCreate` con tutte le tabelle (sistema + moduli + warehouse)
|
||||
- Le migrations vengono applicate **automaticamente all'avvio** dell'applicazione
|
||||
- Logging delle migrations pendenti prima dell'applicazione
|
||||
- **Comandi per future migrations:**
|
||||
|
||||
```bash
|
||||
# Creare nuova migration
|
||||
dotnet ef migrations add NomeMigration \
|
||||
--project src/Apollinare.Infrastructure \
|
||||
--startup-project src/Apollinare.API
|
||||
|
||||
# L'applicazione è AUTOMATICA all'avvio - non serve "dotnet ef database update"
|
||||
```
|
||||
|
||||
- **File modificati:** `Program.cs`, `src/Apollinare.Infrastructure/Migrations/`
|
||||
|
||||
**Lavoro completato nelle sessioni precedenti (29 Novembre 2025 sera):**
|
||||
|
||||
- **NUOVA FEATURE: Sistema Moduli Applicativi** - COMPLETATO (continuazione)
|
||||
- **Obiettivo:** Sistema di modularizzazione per gestire licenze, abbonamenti e funzionalità dinamiche
|
||||
- **Backend implementato:**
|
||||
@@ -318,11 +409,14 @@ XX. **Nome Problema (FIX/IMPLEMENTATO DATA):** - **Problema:** Descrizione breve
|
||||
|
||||
**MODULI BUSINESS (PRIORITÀ ALTA):**
|
||||
|
||||
1. [ ] **Implementare modulo Magazzino (warehouse)** - Base per tutti gli altri
|
||||
2. [ ] **Implementare modulo Acquisti (purchases)** - Dipende da Magazzino
|
||||
3. [ ] **Implementare modulo Vendite (sales)** - Dipende da Magazzino
|
||||
4. [ ] **Implementare modulo Produzione (production)** - Dipende da Magazzino
|
||||
5. [ ] **Implementare modulo Qualità (quality)** - Indipendente
|
||||
1. [x] **Implementare modulo Magazzino (warehouse)** - COMPLETATO (backend)
|
||||
- Backend: Entities, Service, Controllers, API completi
|
||||
- Manca: Frontend (pagine React per gestione articoli, movimenti, giacenze)
|
||||
2. [ ] **Frontend modulo Magazzino** - Pagine React per warehouse
|
||||
3. [ ] **Implementare modulo Acquisti (purchases)** - Dipende da Magazzino
|
||||
4. [ ] **Implementare modulo Vendite (sales)** - Dipende da Magazzino
|
||||
5. [ ] **Implementare modulo Produzione (production)** - Dipende da Magazzino
|
||||
6. [ ] **Implementare modulo Qualità (quality)** - Indipendente
|
||||
|
||||
**Report System (completamento):**
|
||||
|
||||
@@ -1855,3 +1949,79 @@ public interface IWarehouseService
|
||||
- `ModulePurchasePage.tsx`: Rimosso `moduleService` import
|
||||
- `ModulesAdminPage.tsx`: Rimosso `PowerIcon`, `CheckIcon`, `CancelIcon`
|
||||
- **File:** Vari componenti frontend
|
||||
|
||||
33. **EF Core Code First vs Database First (FIX 29/11/2025):**
|
||||
- **Problema:** Le tabelle venivano create manualmente con SQL invece di usare EF Core migrations
|
||||
- **Causa:** `db.Database.EnsureCreated()` non supporta migrations e crea le tabelle direttamente
|
||||
- **Soluzione:**
|
||||
- Sostituito `EnsureCreated()` con `MigrateAsync()` in `Program.cs`
|
||||
- Rimosso database e migrations esistenti
|
||||
- Creata nuova migration `InitialCreate` con `dotnet ef migrations add`
|
||||
- Le migrations vengono ora applicate automaticamente all'avvio
|
||||
- **File:** `Program.cs`, `src/Apollinare.Infrastructure/Migrations/20251129134709_InitialCreate.cs`
|
||||
|
||||
34. **Modulo Warehouse - Struttura Completa (IMPLEMENTATO 29/11/2025):**
|
||||
- **Entities in `/src/Apollinare.Domain/Entities/Warehouse/`:**
|
||||
- `WarehouseLocation.cs` - Magazzini (Physical, Virtual, Transit)
|
||||
- `WarehouseArticle.cs` - Articoli con batch/serial flags
|
||||
- `WarehouseArticleCategory.cs` - Categorie gerarchiche
|
||||
- `ArticleBatch.cs` - Lotti con scadenza
|
||||
- `ArticleSerial.cs` - Numeri seriali
|
||||
- `StockLevel.cs` - Giacenze
|
||||
- `StockMovement.cs` + `StockMovementLine.cs` - Movimenti
|
||||
- `MovementReason.cs` - Causali
|
||||
- `ArticleBarcode.cs` - Multi-barcode
|
||||
- `StockValuation.cs` + `StockValuationLayer.cs` - Valorizzazione
|
||||
- `InventoryCount.cs` + `InventoryCountLine.cs` - Inventari
|
||||
- **Service:** `WarehouseService.cs` con CRUD completo, movimenti, giacenze, valorizzazione
|
||||
- **Controllers:** `WarehouseLocationsController`, `WarehouseArticlesController`, `WarehouseArticleCategoriesController`, `StockMovementsController`, `StockLevelsController`
|
||||
- **API Endpoints principali:**
|
||||
- `GET/POST /api/warehouse/locations` - Magazzini
|
||||
- `GET/POST /api/warehouse/articles` - Articoli
|
||||
- `GET/POST /api/warehouse/categories` - Categorie
|
||||
- `POST /api/warehouse/movements/inbound` - Carichi
|
||||
- `POST /api/warehouse/movements/outbound` - Scarichi
|
||||
- `POST /api/warehouse/movements/{id}/confirm` - Conferma movimento
|
||||
- `GET /api/warehouse/articles/{id}/stock` - Giacenza articolo
|
||||
|
||||
35. **Sistema Codici Automatici Configurabili (IMPLEMENTATO 30/11/2025):**
|
||||
- **Obiettivo:** Sistema per generare automaticamente codici univoci per tutte le entità (articoli, magazzini, movimenti, clienti, eventi, ecc.)
|
||||
- **Entity:** `AutoCode.cs` in `/src/Apollinare.Domain/Entities/`
|
||||
- `EntityCode` - Identificativo entità (es. "warehouse_article")
|
||||
- `EntityName` - Nome visualizzato
|
||||
- `Prefix` - Prefisso per {PREFIX}
|
||||
- `Pattern` - Pattern con placeholder (es. "{PREFIX}{YYYY}-{SEQ:5}")
|
||||
- `LastSequence` - Ultimo numero usato
|
||||
- `ResetSequenceYearly` / `ResetSequenceMonthly` - Reset automatico
|
||||
- `IsEnabled` - Abilita generazione
|
||||
- `IsReadOnly` - Codice non modificabile
|
||||
- `ModuleCode` - Raggruppa per modulo
|
||||
- **Service:** `AutoCodeService.cs` in `/src/Apollinare.API/Services/`
|
||||
- `GenerateNextCodeAsync(entityCode)` - Genera e incrementa
|
||||
- `PreviewNextCodeAsync(entityCode)` - Anteprima senza incremento
|
||||
- `IsCodeUniqueAsync(entityCode, code)` - Verifica univocità
|
||||
- `ResetSequenceAsync(entityCode)` - Reset manuale
|
||||
- `SeedDefaultConfigurationsAsync()` - Seed configurazioni default
|
||||
- **Controller:** `AutoCodesController.cs`
|
||||
- **Frontend:**
|
||||
- `AutoCodesAdminPage.tsx` - Pagina admin con accordions per modulo
|
||||
- `autoCodeService.ts` - API calls
|
||||
- `autoCode.ts` - Types
|
||||
- **Pattern supportati:**
|
||||
- `{PREFIX}` - Prefisso configurabile
|
||||
- `{SEQ:n}` - Sequenza con n cifre (es. {SEQ:5} → 00001)
|
||||
- `{YYYY}`, `{YY}` - Anno 4 o 2 cifre
|
||||
- `{MM}`, `{DD}` - Mese e giorno
|
||||
- Testo statico (es. "-", "/")
|
||||
- **Entità preconfigurate:**
|
||||
- Core: cliente, evento, articolo
|
||||
- Warehouse: warehouse_location, warehouse_article, warehouse_category, stock_movement, inventory_count, article_batch
|
||||
- Purchases (future): purchase_order, supplier
|
||||
- Sales (future): sales_order, invoice
|
||||
- **Esempio utilizzo nel codice:**
|
||||
```csharp
|
||||
// Nel service che crea un articolo
|
||||
var code = await _autoCodeService.GenerateNextCodeAsync("warehouse_article");
|
||||
if (code != null)
|
||||
article.Code = code;
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user