Modulo Produzione
Distinte base multi-livello, versioning, ordini di produzione e integrazione magazzino
- Tendine componenti sempre leggibili: nel form della distinta base, le tendine Componente e Prodotto finito mostrano ora sempre la voce salvata, anche se nel frattempo è stata cestinata o disattivata (indicata con il suffisso "(cestinata)"), invece di apparire vuote.
- Il catalogo viene caricato prima di popolare le righe, evitando tendine vuote dovute ai tempi di caricamento.
Riferimenti normativi
- Art. 2214 Codice Civile — Libri obbligatori dell'imprenditore commerciale: obbligo di tenere il libro giornale, il libro degli inventari e «le altre scritture contabili che siano richieste dalla natura e dalle dimensioni dell'impresa» — tra cui rientrano i registri di produzione e magazzino. Il modulo Produzione, integrato con Magazzino, produce automaticamente i movimenti di scarico materie e carico prodotto finito che alimentano queste scritture.
- Art. 2220 Codice Civile — Conservazione delle scritture contabili: dieci anni dalla data dell'ultima registrazione. Le distinte base versionate, gli ordini di produzione, i movimenti di magazzino derivati e gli ECO sono conservati nel database e replicati nei backup periodici.
- Art. 14 DPR 600/1973 — Scritture contabili obbligatorie: per le imprese in contabilità ordinaria con ricavi superiori a € 5.164.568,99 vige l'obbligo del registro di carico/scarico delle materie prime. La sequenza ordine→avvio→completamento del modulo genera in automatico i movimenti tipizzati (SCARICO_PRODUZIONE, CARICO_PRODUZIONE) che soddisfano questa esigenza.
- Art. 39 DPR 600/1973 — Determinazione del reddito d'impresa: rilevanza fiscale del costo del venduto e delle rimanenze. Il calcolo automatico del costo industriale di ogni ordine (materie prime + manodopera dei centri di lavoro) fornisce la base oggettiva per la valorizzazione delle rimanenze a fine esercizio.
- DPR 633/1972 (Decreto IVA) — Movimentazione interna: i passaggi di lavorazione interni alla stessa impresa (materia prima → semilavorato → prodotto finito) sono operazioni fuori campo IVA, ma devono essere documentati per ricostruire la formazione del costo. Il modulo registra ogni passaggio con data, lotto e operatore.
- Reg. CE 178/2002 art. 18 — Tracciabilità alimentare: obbligo per gli operatori del settore alimentare di garantire la tracciabilità di ingredienti e prodotti in tutte le fasi della produzione e della distribuzione. La gestione FEFO dei lotti, l'associazione lotto→ordine→prodotto finito e il where-used multi-livello permettono il rintracciamento immediato in caso di richiamo.
- Reg. CE 852/2004 (HACCP) — Igiene dei prodotti alimentari: obbligo di documentare le procedure e di conservare la registrazione dei controlli effettuati su ogni lotto. La sezione Quality Control permette di registrare specifiche di controllo per distinta e test eseguiti per ordine, con esito conforme/non conforme e auto-blocco del completamento ordine in caso di test fallito.
- D.Lgs. 219/2006 — Codice Comunitario dei Medicinali (GMP): per i produttori farmaceutici e dei dispositivi sanitari è obbligatorio mantenere registrazioni complete di lotti, scadenze, controlli qualità ed Engineering Change Order. Il workflow ECO (BOZZA → IN_APPROVAZIONE → APPROVATO → APPLICATO con snapshot della versione precedente) e la firma elettronica sui completamenti soddisfano i requisiti GMP di change-control documentato.
- FDA 21 CFR Part 11 — Electronic Records and Electronic Signatures: per esportatori farmaceutici verso il mercato USA. La firma elettronica con verifica password su completamento ordine e applicazione ECO, abbinata all'audit log strutturato (utente, IP, user-agent, timestamp), fornisce il "non-repudiation" richiesto dallo standard.
- ISO 9001:2015 par. 8.5.2 — Identificazione e tracciabilità: per le imprese certificate è obbligo identificare gli output del processo, lo stato dei prodotti rispetto ai requisiti di monitoraggio, e mantenere la tracciabilità. L'etichetta lotto con QR, la scheda di produzione end-of-job e la storicizzazione delle versioni di distinta soddisfano il requisito.
- Art. 2087 Codice Civile — Sicurezza del lavoro: l'imprenditore deve adottare le misure necessarie a tutelare l'integrità fisica dei lavoratori. La bolla di lavorazione stampabile (con spazi per firma operatore, tempi reali e checkbox sui prelievi) costituisce traccia documentale dell'esecuzione delle fasi e dei controlli previsti dal ciclo di lavorazione.
- D.Lgs. 152/2006 (Testo Unico Ambientale) — Tracciabilità rifiuti: i sottoprodotti e gli scarti di lavorazione devono essere identificati e tracciati. La gestione By-product/Co-product permette di associare a ogni ordine i sottoprodotti generati, con allocazione percentuale dei costi.
- GDPR (Reg. UE 2016/679) art. 5 c.1 lett. f e art. 32 — Integrità e accountability: obbligo di adottare misure tecniche per garantire integrità, riservatezza e dimostrabilità del trattamento. L'audit log strutturato
LogProduzioneregistra ogni evento critico (creazione, avvio, completamento, annullamento, ECO, test qualità) con utente, ruolo, IP, dettaglio JSON e flag firma elettronica. - Separation of Duties — principio di controllo interno (COSO, ISO 27001 A.6.1.2): chi esegue un'operazione critica non deve essere lo stesso che la autorizza. Il modulo blocca a livello di codice l'approvazione di un ECO da parte di chi lo ha proposto (controllo esplicito su
propostoDa ≠ username), con override solo per SUPERADMIN.
A cosa serve questo modulo
Il modulo Produzione permette di:
- Definire distinte base (ricette, formule, kit di assemblaggio) che descrivono come un prodotto finito viene composto a partire da componenti / materie prime.
- Gestire distinte multi-livello: un componente può a sua volta avere una propria distinta (esempio: pre-miscela usata in più prodotti).
- Mantenere lo storico delle versioni di una distinta, per poter riprodurre tra mesi o anni una formula esattamente come era valida in una certa data.
- Pianificare ordini di produzione, avviarli (con scarico automatico delle materie dal magazzino) e completarli (con carico automatico del prodotto finito).
- Annullare ordini con storno automatico dei movimenti se la produzione è stata già avviata.
Il modulo si compone di due aree principali. Nella versione solo Produzione le trovi fra le schede della barra in alto (Cruscotto, Distinte, Ordini, MPS, MRP, Terminale, Qualità, Magazzino, Catalogo e, per chi ha il permesso, Backup dati), e il libro 📖 della barra apre questo manuale. Nel gestionale completo sono voci del gruppo PRODUZIONE del menu laterale: le guide non sono voci del menu, ma due icone che compaiono accanto al titolo del gruppo quando lo apri (il libro per il manuale della Produzione, il PDF per la guida pratica). MPS, forecast, MRP, terminale di reparto, OEE, Gantt, qualità e manutenzione sono spiegati nel manuale della Produzione.
- Distinte base — archivio delle ricette / formule / liste componenti.
- Ordini produzione — lotti di produzione effettivi che consumano materie prime e generano prodotti finiti.
Le voci di catalogo coinvolte (prodotto finito, componenti, materie prime) sono quelle stesse usate in fatturazione, magazzino e DDT: nessun catalogo separato.
Una distinta base è la "ricetta" che descrive come si ottiene un prodotto finito. È composta da:
| Campo | Significato |
|---|---|
| Codice | Identificativo univoco (es. DB-PROD-001) |
| Descrizione | Nome operativo della distinta |
| Prodotto finito | Voce di catalogo che si ottiene (FK a Catalogo) |
| Resa prevista | Quanto prodotto si ottiene (es. 1 per "ricetta da 1 unità", 10 per "lotto da 10 kg") |
| UM | Unità di misura della resa (PZ, KG, LT…) |
| Versione corrente | Numero progressivo della formulazione |
| Stato | BOZZA / ATTIVA / OBSOLETA |
Stati di una distinta
- BOZZA: in costruzione, non utilizzabile per generare ordini di produzione. Modifiche libere senza versioning.
- ATTIVA: pronta all'uso. Solo le distinte attive possono essere usate in un ordine. Ogni modifica genera automaticamente uno snapshot della versione precedente.
- OBSOLETA: dismessa, conservata per sola consultazione storica.
Componenti (righe della distinta)
Ogni riga rappresenta una materia prima o un sotto-componente:
| Campo | Significato |
|---|---|
| Componente | Voce di catalogo (può essere materia prima o un altro prodotto con sua distinta) |
| Qty | Quantità di componente per una unità di resa |
| UM | Unità di misura della componente (KG, LT, PZ…) |
| Scarto % | Spreco/calo previsto. Esempio: 5 = il 5% di scarto applicato in fase di scarico |
| Sequenza | Ordine di visualizzazione nella distinta |
- Apri la scheda Distinte (nel gestionale completo: Produzione → Distinte base).
- Premi + Nuova distinta (creare e modificare le distinte spetta all'amministratore).
- Compila l'intestazione: codice, descrizione, prodotto finito (selezionato dal catalogo), resa prevista (es.
1per ricetta unitaria), UM. - Premi + Aggiungi riga per ogni componente. Per ogni riga compila il componente (catalogo), la quantità e l'eventuale scarto%.
- Salva. La distinta nasce in stato BOZZA.
- Quando hai verificato la formula, cambia lo stato in ATTIVA e salva. Da questo momento il versioning è attivo.
Un componente di una distinta può a sua volta essere il prodotto finito di un'altra distinta ATTIVA. In questo caso si parla di distinta multi-livello.
Esempio: una crema cosmetica usa una "base oleosa" come componente. La base oleosa è essa stessa un prodotto con la sua distinta (olio + emulsionante + conservante). Quando si esplode la distinta della crema, il sistema scende ricorsivamente nelle sotto-distinte fino ad arrivare alle materie prime foglia (quelle senza distinta).
| Operazione | Comportamento multi-livello |
|---|---|
| Esplosione distinta padre | Esplode anche le sotto-distinte ATTIVE; le quantità vengono moltiplicate e consolidate |
| Avvio ordine di produzione | Scarica solo le materie prime foglia (sotto-componenti che hanno distinta non vengono scaricati: il loro consumo viene risolto al livello più basso) |
| Componente con stessa qty richiesta da rami diversi | Le quantità vengono sommate nella tabella materie prime piatta |
Quando una distinta è in stato ATTIVA e viene modificata e salvata, il sistema:
- Crea uno snapshot completo della distinta corrente (intestazione + tutte le righe) e lo archivia in storico con la data di validità.
- Incrementa il numero di versione (
v1 → v2). - Applica le modifiche alla distinta corrente.
Nel form distinta, il tab "Storico versioni" mostra tutte le versioni precedenti con motivo, data e composizione esatta delle righe. È possibile aggiungere un "Motivo" testuale al salvataggio (campo nel banner giallo del tab Definizione).
L'esplosione (tab "Esplosione" del form distinta) calcola il fabbisogno totale di materie prime per produrre una determinata quantità di prodotto finito:
- Apri la distinta.
- Clicca sul tab Esplosione.
- Inserisci la quantità da produrre (es.
10). - Premi Esplodi distinta.
Vengono mostrati due output:
- Tabella materie prime totali: lista piatta consolidata di quanto serve di ogni materia prima foglia, con scarto già applicato.
- Albero completo: visualizzazione gerarchica con indentazione, utile per capire il percorso multi-livello.
Esempio: distinta DB-001 con 2 righe (2.5 KG di COMP-A scarto 5% + 0.8 LT di COMP-B scarto 2%) ed esplosione con quantità 10 produce:
| Componente | Calcolo | Quantità con scarto |
|---|---|---|
| COMP-A (KG) | 2.5 × 10 = 25 + 5% scarto | 26.25 KG |
| COMP-B (LT) | 0.8 × 10 = 8 + 2% scarto | 8.16 LT |
Un ordine di produzione rappresenta un lotto reale da produrre. Attraversa 4 stati ben definiti:
Creazione di un ordine
- Apri la scheda Ordini (nel gestionale completo: Produzione → Ordini produzione).
- Premi + Nuovo ordine.
- Seleziona una distinta in stato ATTIVA.
- Specifica la quantità da produrre.
- (Opzionale) Note operative o riferimento lotto.
- (Se hai definito degli stabilimenti) scegli lo Stabilimento.
- Premi Crea ordine. Il numero (es.
PRD-00001) è generato automaticamente: il successivo al più alto già usato.
Il pulsante + Nuovo ordine lo vede chi pianifica: il responsabile di produzione (PRODUCTION_MANAGER, o un amministratore) con il permesso del ruolo produzione.ordini.completa, lo stesso che serve per generare gli ordini da MPS e MRP. Finché l'ordine è PIANIFICATO, la sezione Modifica testata del dettaglio (quantità prevista, data inizio, note) la usa l'amministratore o il responsabile di produzione con lo stesso permesso; mandare un ordine nel cestino resta all'amministratore.
Premendo "Avvia produzione" sul dettaglio di un ordine PIANIFICATO:
- Il sistema esplode la distinta per la quantità prevista.
- Per ogni materia prima foglia crea un movimento di magazzino di tipo
SCARICO_PRODUZIONEcon causale "Produzione PRD-NNNNN". - Il costo unitario è il costo medio di magazzino del componente, lo stesso con cui scende la giacenza: il valore che esce dai componenti è quello che entra nel finito.
- Il costo materie totale viene calcolato e salvato sull'ordine.
- Lo stato passa a IN_CORSO e viene impostata la data inizio.
Questo vale per la modalità STANDARD. In BACKFLUSH l'avvio cambia solo lo stato: le materie si scaricano al completamento (sez. 22), e il pulsante e la conferma lo dicono.
Tutti i movimenti generati sono visibili nel tab Movimenti del dettaglio ordine, con badge rosso "PRELIEVO" e link al numero del movimento di magazzino corrispondente.
Premendo "Completa produzione" sul dettaglio di un ordine IN_CORSO:
- Specifica la quantità effettivamente prodotta (può differire da quella prevista per via di rese effettive diverse).
- Il sistema crea un movimento di magazzino di tipo
CARICO_PRODUZIONEper il prodotto finito. - Il costo unitario del prodotto finito è calcolato come:
(costo materie totale + costo delle fasi completate) / quantità prodotta, al netto della quota data ai by-product. Le materie sono valorizzate al costo medio di magazzino con cui sono uscite: il valore che esce dai componenti è quello che entra nel finito. - Il costo totale viene salvato sull'ordine; lo stato passa a COMPLETATO e viene impostata la data fine.
L'annullamento è disponibile dal dettaglio ordine. Comportamento differente in base allo stato corrente:
| Stato corrente | Effetto dell'annullamento |
|---|---|
| PIANIFICATO | Stato → ANNULLATO. Nessun movimento di magazzino (non ce n'erano). |
| IN_CORSO | Stato → ANNULLATO. In BACKFLUSH non c'è niente da stornare (le materie non erano ancora uscite). In STANDARD, per ogni scarico viene creato un movimento di CARICO_RETTIFICA che storna lo scarico originale: la quantità uscita davvero dal magazzino (non quella mancante), nello stesso magazzino e unità di misura, senza ricalcolare il costo medio; il lotto riprende quanto gli era stato tolto. |
| COMPLETATO | Bloccato: non è consentito annullare via UI un ordine già chiuso. È necessario lo storno manuale dal modulo magazzino. |
Al momento dell'annullamento è richiesto un motivo testuale (es. "errore nei dosaggi", "cliente ha cancellato l'ordine") che viene aggiunto alle note dell'ordine per audit trail.
PIANIFICATO o ANNULLATO, e lo fa un amministratore: finisce nel cestino della produzione, da cui si ripristina (l'eliminazione definitiva la fa solo il Super Amministratore, con la firma). Gli ordini IN_CORSO o COMPLETATO non sono mai cancellabili (preservazione audit trail fiscale e operativo).
Il sistema gestisce tracciabilità completa dei lotti dal componente al prodotto finito.
Logica FEFO (First Expired First Out)
Quando un ordine viene avviato, per ogni materia prima il sistema cerca i lotti attivi e li consuma in ordine di scadenza (i più vicini a scadere per primi). Se un lotto non basta a coprire la quantità richiesta, il prelievo passa al lotto successivo. Ogni movimento di scarico è collegato al lotto specifico.
Lotto del prodotto finito
Al completamento di un ordine viene generato automaticamente un nuovo lotto per il prodotto finito, con:
- Numero lotto: di default uguale al numero ordine (
PRD-NNNNN), modificabile - Data produzione: data/ora del completamento
- Data scadenza: opzionale, inseribile dall'operatore
- Costo unitario: calcolato dividendo il costo totale per la quantità prodotta
Annullamento con ripristino lotti
Annullare un ordine in stato IN_CORSO ripristina automaticamente la quantitaResidua dei lotti scaricati, generando movimenti di CARICO_RETTIFICA di storno legati ai movimenti originali.
La pagina Tracciabilità lotti: genealogia e richiamo
Da Produzione → Tracciabilità lotti si ricostruisce la storia di un lotto. La pagina si apre con l'elenco dei lotti più recenti: clicchi un lotto, oppure lo cerchi per numero, codice o descrizione dell'articolo.
- A monte — composizione: cosa è entrato per produrre quel lotto, cioè i lotti dei componenti con la quantità usata e il fornitore, su tutti i livelli;
- A valle — richiamo: dove è finito il lotto. Mostra i prodotti in cui è entrato e, sotto Consegnato a, i clienti che l'hanno ricevuto, con il DDT o la fattura, la data e la quantità. Se il lotto è passato da un terzista (conto lavoro), la catena prosegue: lotto presso il terzista → lavorato rientrato → i suoi prodotti e clienti. Gli ordini annullati non contano.
Le due viste si combinano: dal lotto di un componente difettoso si arriva ai lotti di prodotto finito che lo contengono, e da ognuno ai clienti a cui è stato consegnato. È l'elenco da cui parte un richiamo.
Il tab "Dove usato" del form distinta mostra in quali altre distinte è impiegato il prodotto finito di quella corrente.
Si distingue tra:
- Uso diretto (livello 1): distinte che hanno il prodotto come componente di una riga
- Uso indiretto multi-livello (livello 2+): catena di sub-distinte fino al prodotto finale
Utile per analisi impatto di una modifica formula, sostituzione componente, eliminazione voce.
Per ogni ordine PIANIFICATO è disponibile la lista di prelievo stampabile (icona "Stampa pick list" nelle azioni del dettaglio).
La pick list:
- Simula il FEFO senza eseguire scarico
- Indica per ogni materia prima i lotti suggeriti con qty da prelevare
- Segnala in rosso eventuali scoperti (giacenza insufficiente)
- Layout print-friendly (CSS @media print) con spazi firma magazziniere + responsabile
Aprendo un ordine PIANIFICATO il sistema esegue automaticamente un controllo disponibilità di tutte le materie prime previste.
Il banner sopra le azioni mostra:
- Verde: tutte le giacenze sufficienti
- Rosso: tabella dettaglio con qty richiesta, disponibile, scoperto per ogni materia mancante
Se l'utente preme "Avvia produzione" con scoperto, il sistema mostra un dialog di conferma con il dettaglio degli scoperti prima di procedere: se si conferma, il magazzino di quelle materie scende a zero (non sotto) e la parte mancante resta sull'ordine come consumo da spiegare.
Il modulo Centri di lavoro (menu Produzione → Centri di lavoro) permette di configurare le risorse di produzione: macchine, reparti, operatori, fornitori esterni. Crearli, modificarli e scriverne il calendario spetta all'amministratore.
Parametri di un centro di lavoro
- Codice/descrizione/tipo: identificativi
- Capacità giornaliera: ore disponibili al giorno
- Costo orario macchina + Costo orario manodopera: usati per valorizzare la produzione
- Efficienza %: per stime di tempi reali (default 100%)
- Calendario eccezioni: chiusure, ferie, manutenzione, turni extra
Cicli di lavorazione sulla distinta
Il tab "Cicli di lavorazione" della distinta permette di definire le fasi:
| Campo | Significato |
|---|---|
| Sequenza | Ordine di esecuzione |
| Descrizione | Es. Pesatura, Miscelazione, Confezionamento |
| Centro di lavoro | FK al centro che esegue la fase |
| Tempo setup (min) | Tempo fisso di preparazione macchina |
| Tempo unitario (min/u) | Tempo per ogni unità prodotta |
| Costo orario override | Sovrascrive il costo del centro (opzionale) |
| Obbligatoria | Se può essere saltata o no |
Workflow per fase nell'ordine
Quando si crea un ordine, le fasi della distinta vengono fotografate insieme al centro di lavoro associato e ai costi orari del momento. Per ogni fase:
- Avvia fase: stato PIANIFICATA → IN_CORSO, registra dataInizio + operatore
- Completa fase: chiede tempo effettivo (default = differenza ora-avvio), calcola costoEffettivo = (tempo / 60) × costoOrario
- I tempi e i costi sono visibili nella sezione "Fasi di lavorazione" del dettaglio ordine
Al completamento dell'ordine, il costo manodopera totale sommato delle fasi viene aggiunto al costo materie per costituire il costo totale.
Per ogni riga distinta è possibile definire una lista di componenti alternativi con un fattore di conversione.
Esempio: la riga prevede 2.5 KG di COMP-A. Se al magazzino non ce n'è abbastanza, il sistema può prelevare:
- COMP-A2 con fattore
1.0(equivalente uno-a-uno) - COMP-A3 con fattore
1.2(servono 3 KG di A3 per equivalere a 2.5 KG di A)
Gli alternativi sono provati in ordine di sequenza solo dopo che la materia principale ha esaurito le giacenze del magazzino di produzione (lotti e merce senza lotto). Valgono anche per le righe dei semilavorati esplosi, e la verifica disponibilità e la lista di prelievo li mostrano.
Il tab "Qualità" della distinta permette di definire specifiche di qualità che devono essere verificate prima del completamento di un ordine.
Tipi di specifica
- NUMERICO: valore numerico, esito conforme se compreso tra Min e Max
- RANGE: come NUMERICO, con range obbligatorio
- BOOLEAN: true/false, conforme se valore atteso
- TESTO: stringa, conforme se identica al valore atteso
Test sull'ordine
Nel dettaglio ordine in stato IN_CORSO appare la sezione "Quality control": per ogni specifica si registra il valore misurato. L'esito può essere automatico (per NUMERICO/RANGE) o forzato dall'operatore.
Quality gate al completamento
Il completamento dell'ordine è bloccato se una o più specifiche obbligatorie non hanno test conforme. Il sistema risponde con HTTP 409 + lista delle specifiche mancanti.
La distinta può prevedere output secondari (oltre al prodotto principale): co-prodotti valorizzabili o scarti.
Per ogni by-product si definisce:
- Voce catalogo: il prodotto secondario
- Quantità per unità: quanto se ne ottiene per ogni unità di prodotto principale
- UM: unità di misura del by-product
- % costo allocato: percentuale del costo totale allocata al by-product (per coproduzioni)
- Tipo:
CO_PRODUCT(con valore) oSCARTO(tipicamente 0%)
Al completamento dell'ordine, oltre al carico del prodotto principale, vengono generati carichi separati per ogni by-product attivo. Il valore del prodotto principale viene scalato della percentuale totale allocata ai by-product.
Per modifiche distinta soggette ad approvazione formale (es. cambio formula in industria regolamentata), si usa il workflow ECO.
Stati ECO
BOZZA → IN_APPROVAZIONE → APPROVATO o RESPINTO → APPLICATO
Flusso operativo
- Crea ECO in BOZZA con titolo, descrizione e motivazione (snapshot della distinta corrente memorizzato)
- Submit per richiedere approvazione (BOZZA → IN_APPROVAZIONE)
- Un secondo utente approva o respinge (con motivo)
- Se APPROVATO, "Applica": le modifiche entrano in produzione, viene creato uno snapshot della versione precedente, l'ECO passa a APPLICATO
Gli ECO RESPINTI restano in storico per audit. Gli ECO BOZZA o RESPINTI possono essere eliminati definitivamente.
Il tab "Allegati" permette di registrare riferimenti a documenti collegati alla distinta:
- Disegni tecnici CAD
- Schede di sicurezza materiali
- Certificati di analisi (COA)
- Procedure operative standard (SOP)
- Fotografie del prodotto finito
Per ogni allegato si registra: nome, tipo, descrizione e il file — caricato dal computer con «Carica sul server» — oppure un collegamento http/https a una risorsa esterna. I file caricati sono riservati: stanno in una cartella dell'azienda e si aprono solo da NOX, dopo l'accesso (GET /api/distinte-base/allegati-distinta/:id/file).
Ogni riga della distinta può avere date di validità "Valido dal" e "Valido al".
L'esplosione della distinta filtra automaticamente le righe attive alla data di riferimento (default = oggi). Permette transizioni progressive di formula:
- Vecchia versione di un componente:
valido al= data di transizione - Nuova versione del componente:
valido dal= data di transizione
Più granulare del versioning ECO globale: lavora a livello di singola riga con effetto temporale.
Modalità alternativa al flusso standard, attivata sull'ordine al momento della creazione.
| Modalità | Quando avvia | Quando completa |
|---|---|---|
| STANDARD | Scarica le materie prime | Carica solo prodotto finito |
| BACKFLUSH | Solo cambio stato (no scarico) | Scarica materie + carica prodotto finito (in unica transazione) |
BACKFLUSH è utile in linee di produzione veloci dove non c'è tempo per gestire i prelievi all'avvio: il sistema deduce a posteriori cosa è stato consumato sulla base della distinta + qty effettivamente prodotta. Lo scarico è lo stesso dell'avvio STANDARD: lotti, merce senza lotto, alternativi, al costo medio di magazzino.
I pulsanti dell'ordine lo dicono: su un BACKFLUSH Avvia produzione riporta «Le materie si scaricano al completamento», Completa produzione «+ scarica le materie» e Annulla ordine «Nessuno storno», perché prima del completamento non è uscito niente.
La pagina "KPI Produzione" (scheda Cruscotto; nel gestionale completo Produzione → KPI Produzione) mostra metriche aggregate per il periodo selezionato (default: ultimi 30 giorni).
Indicatori
- Ordini per stato: totale, completati, in corso, pianificati, annullati
- Quota completati e quota annullati: % sul totale degli ordini del periodo (quelli nel cestino non contano)
- Tempo medio avvio → fine: giorni medi tra avvio e completamento per gli ordini completati
- Costo della produzione e costo per pezzo di ciascun prodotto: solo con il permesso «Vedere costi e margini»
- Produzione giornaliera: numero di ordini completati per giorno (grafico a barre)
- I cinque prodotti più fatti: per quantità totale prodotta nel periodo
- Conformità qualità: % test conformi fra quelli eseguiti nel periodo
Documento operativo per il magazziniere che effettua il prelievo. Disponibile per ordini in stato PIANIFICATO dal pulsante "Stampa pick list" nelle azioni del dettaglio ordine.
Contenuto:
- Testata ordine (numero, distinta, prodotto finito, qty)
- Per ogni materia prima: codice, descrizione, qty totale, lotto FEFO suggerito (con scadenza), qty da prelevare
- Sotto-righe se servono più lotti per coprire la qty
- Avviso "scoperto" in rosso se giacenza insufficiente
- Spazi per firma magazziniere e responsabile produzione
La stampa simula il FEFO senza eseguire scarico (read-only) — i lotti effettivi verranno scaricati al momento dell'avvio dell'ordine.
Documento cartaceo da consegnare al reparto produzione. Disponibile per ordini in PIANIFICATO e IN_CORSO.
Contenuto:
- Intestazione con numero ordine, distinta, prodotto finito, qty prevista, data inizio prevista
- Sezione 1: tabella componenti da prelevare con qty per ordine, UM, spazio per scrivere il numero lotto consumato e checkbox di conferma
- Sezione 2: tabella fasi di lavorazione con tempo previsto, spazi per registrare orario inizio reale, orario fine reale, operatore e firma
- Spazi per firma magazziniere, capo turno, responsabile produzione
L'operatore compila a mano la bolla durante la produzione; i dati possono essere poi inseriti nel sistema (avvia/completa fasi).
Etichetta adesiva formato 100×60 mm da applicare al pallet/scatola del prodotto finito. Disponibile dopo il completamento dell'ordine (richiede numeroLottoFinito valorizzato).
Contenuto:
- Intestazione con il nome della tua azienda (dai Parametri) + numero ordine
- Codice prodotto + descrizione
- Numero lotto, quantità, data produzione, scadenza (in rosso)
- QR code 26×26 mm con payload:
LOTTO=…|PROD=…|QTA=…|ORDINE=…|SCAD=… - Riga di payload testuale leggibile sotto al QR
Selettore "Copie": stampa più etichette identiche (1-20) sul foglio A4 (5 etichette per foglio in layout 2 colonne).
Il QR è generato dal programma stesso: i dati del lotto non passano da nessun servizio esterno. Con uno scanner si legge il payload e si risale al lotto.
Documento di riepilogo completo a chiusura ordine, da archiviare nel fascicolo qualità. Disponibile per ordini COMPLETATO.
Contenuto:
- Materie prime consumate: tutti i prelievi reali con lotto, qty, costo unitario e valore — totale costo materie
- Fasi di lavorazione eseguite: descrizione, centro, operatore, tempo previsto vs effettivo, costo orario, costo effettivo — totale manodopera
- Quality control: tutte le specifiche con valore misurato, esito (CONFORME/NON CONFORME), eseguito da chi
- Carico a magazzino: prodotto finito + eventuali by-product/scarti
- Riepilogo costi finali: materie + manodopera = costo totale → costo unitario prodotto
- Note operative
Spazi firma per responsabile produzione e responsabile qualità. Footer con data/ora di stampa per traccia.
Il modulo Produzione è protetto da un sistema di controllo a tre strati che il sistema valuta in AND per ogni operazione critica. Tutti e tre devono passare perché l'azione vada a buon fine.
- Ruolo base dell'utente (USER, OPERATOR, ADMIN, SUPERADMIN) — lo strato più ampio, valido per tutta la piattaforma.
- Privilegi Produzione (per singolo utente) —
PRODUCTION_MANAGER,QUALITY_MANAGER,OPERATOR_PROD. - Permessi del ruolo nel workspace (per coppia ruolo+azienda) — configurabili dal SUPERADMIN.
Strato 2: Privilegi Produzione (per singolo utente)
Riquadro lilla in Modifica Utente. Implementa la Separation of Duties tipica delle linee industriali: persone diverse svolgono compiti diversi, e nessuno può auto-autorizzare la propria operazione.
| Privilegio | Cosa abilita in Produzione |
|---|---|
PRODUCTION_MANAGER |
Creazione degli ordini di produzione e correzione della testata di un ordine PIANIFICATO (col permesso produzione.ordini.completa); MPS, MRP (anche l'ordine a fornitore dalla proposta), Gantt e scenari; avvio, completamento, annullamento ordini; invio, rientro e annullo del conto lavoro; applicazione ECO; ripristino dal cestino produzione. Creare e modificare le distinte, cancellare gli ordini e gestire i centri di lavoro restano all'amministratore. |
QUALITY_MANAGER |
Approvazione e respingimento ECO (su utenti diversi dal proponente); registrazione e forzatura dell'esito dei test qualità. |
OPERATOR_PROD |
Avvio e chiusura delle singole fasi sui propri ordini. |
I privilegi sono per singolo utente: in uno stesso workspace puoi avere Mario USER con
QUALITY_MANAGER, Luigi USER con OPERATOR_PROD e Giovanni ADMIN con
PRODUCTION_MANAGER. Senza il privilegio appropriato un USER non può toccare nulla in produzione.
ADMIN e SUPERADMIN bypassano sempre i controlli di privilegio.
Strato 3: Permessi del ruolo nel workspace
Riquadro arancio in Modifica Utente. Permette al SUPERADMIN di vietare un'intera azione a tutti gli utenti dello stesso ruolo nello stesso workspace, indipendentemente dai privilegi che possiedono individualmente.
Le chiavi che riguardano la produzione:
| Chiave | Ruolo | Effetto se disabilitata |
|---|---|---|
produzione.ordini.completa | ADMIN, USER, OPERATOR | Gli utenti del ruolo non possono creare, avviare né completare ordini, né pianificare (MPS, MRP, Gantt, scenari), neanche con il privilegio. A un responsabile di produzione che non è amministratore si dà accendendola al suo ruolo. |
produzione.eco.approva | ADMIN, USER, OPERATOR | Gli utenti del ruolo non possono approvare/respingere ECO, neanche con il privilegio QUALITY_MANAGER. A un responsabile qualità che non è amministratore si dà accendendola al suo ruolo. |
cestino.ripristina | ADMIN | Gli ADMIN non possono ripristinare dal cestino produzione. |
produzione.fasi.avvia_completa | USER, OPERATOR | Gli utenti del ruolo non possono più aprire/chiudere fasi. |
produzione.ordini.consulta | USER, OPERATOR | Gli utenti del ruolo non vedono più gli ordini in consultazione. |
quality.test.registra | USER, OPERATOR | Gli utenti del ruolo non possono più registrare test qualità. |
picking.gestisci | USER, OPERATOR | Gli utenti del ruolo non possono più gestire pick list e prelievi. |
Un workspace nuovo nasce con le chiavi della produzione accese all’amministratore e all’operatore come in
tabella, e produzione.ordini.completa e produzione.eco.approva spente (ma con il loro
interruttore) a utenti e operatori. L’adattamento di un’azienda al pacchetto Produzione accende le chiavi
della produzione all’amministratore e quelle di lavoro (consultare, fasi, test) a utenti e operatori, ma non
produzione.ordini.completa e produzione.eco.approva, che a utenti e operatori restano come
in un’azienda nuova: chi deve gestire gli ordini o approvare gli ECO senza essere amministratore le riceve da
qui. Le righe già scritte non si toccano. Le modifiche valgono per tutti gli utenti del ruolo nello stesso
workspace.
Differenza pratica con un esempio
- Per il primo obiettivo — assegnare il privilegio
QUALITY_MANAGERsolo all'utente Mario nella sezione lilla. Lasciare il permesso ruoloquality.test.registraabilitato. - Per il secondo obiettivo — non c'è bisogno di toccare i privilegi: gli USER non hanno comunque
PRODUCTION_MANAGER. Per blindare ulteriormente, il SUPERADMIN può disabilitare il permesso ruolo USERproduzione.eco.approva.
Operazioni e relativi controlli
| Operazione | Privilegio richiesto | Permesso ruolo richiesto | Firma elettronica |
|---|---|---|---|
| Creare un ordine, correggerne la testata (se PIANIFICATO) | PRODUCTION_MANAGER (gli ADMIN correggono la testata anche senza il permesso) | produzione.ordini.completa | — |
| Cancellare un ordine (va nel cestino) | Solo ADMIN | — | — |
| Avviare un ordine | PRODUCTION_MANAGER | produzione.ordini.completa | — |
| Completare un ordine | PRODUCTION_MANAGER | produzione.ordini.completa | Sì (password) |
| Avviare/chiudere una fase | OPERATOR_PROD o PRODUCTION_MANAGER | produzione.fasi.avvia_completa | — |
| Approvare un ECO | QUALITY_MANAGER + utente diverso dal proponente | produzione.eco.approva | — |
| Applicare un ECO | PRODUCTION_MANAGER | — | Sì (password) |
| Registrare un test qualità | QUALITY_MANAGER | quality.test.registra | — |
| Eliminare definitivamente dal cestino | — | — | Sì + solo SUPERADMIN |
Audit log strutturato
Ogni transizione di stato critica viene registrata nella tabella LogProduzione con timestamp, utente, ruolo,
IP, user-agent, evento, entità coinvolta, ID, dettaglio JSON specifico dell'evento e flag firmaElettronica.
Il log non è cancellabile dall'interfaccia ed è consultabile dal SUPERADMIN nella pagina
Cestino & Audit Produzione (tab "Log audit").
Come accedere al Cestino & Audit Produzione
La pagina del cestino unificato di produzione (route /produzione/cestino) raggruppa
in un'unica vista i record soft-cancellati di distinte base, ordini di produzione,
centri di lavoro e ECO, oltre al log degli eventi di produzione. Non è
una voce del menu: si accede tramite il bottone secondario
"🗑 Cestino & Audit" presente in alto a destra delle 3 liste:
- Produzione » Distinte base » bottone "🗑 Cestino & Audit"
- Produzione » Ordini produzione » bottone "🗑 Cestino & Audit"
- Produzione » Centri di lavoro » bottone "🗑 Cestino & Audit"
Tutti e tre i bottoni puntano alla stessa pagina; al suo interno trovi i tab per ciascuna entità e per il log audit. Questo design contestuale evita che utenti senza interesse alla governance vedano la voce nel menu, e consente al gestore di aprire il cestino dal modulo di partenza.
Ogni ordine di produzione, distinta base, documento, soggetto e voce di catalogo ha un pannello Note floating ancorato all'entità corrente, utile per tracciare osservazioni, comunicazioni interne, promemoria operativi, anomalie riscontrate. Il pannello si presenta come un "post-it giallo" interattivo che galleggia sopra la pagina, ridimensionabile e trascinabile.
Dove si trova
- Ordine di produzione — nella scheda dettaglio (entità
ORDINE_PRODUZIONE) - Distinta base — nel form distinta (entità
DISTINTA_BASE, solo dopo il primo salvataggio) - Documento — nel form di modifica documento (entità
DOCUMENTO) - Soggetto — nella scheda soggetto (entità
SOGGETTO, solo dopo il primo salvataggio) - Voce di catalogo — nel modale di modifica voce (entità
CATALOGO)
Come si presenta e si usa
All'apertura della scheda il pannello appare minimizzato come fascia gialla 240×42 px
ancorata alla topbar dell'app, centrata orizzontalmente. Per la modale Documento, la
fascia si centra invece sulla barra blu della topbar del modale (a 4 mm dal
bordo superiore della barra blu), affianco al numero documento. Al suo interno: icona post-it,
titolo, contatore delle note esistenti, freccia expand_more.
Per espanderlo, clicca:
- sulla freccia
expand_morein alto a destra del pannello, oppure - su qualsiasi punto della fascia (titolo, area libera dell'header).
Espanso, il pannello si posiziona floating al centro del viewport (460×70vh di default, ridimensionabile). Mostra l'elenco note ordinato dalle più recenti, ciascuna con autore, data, eventuale flag "(modif.)", e icone modifica/elimina visibili solo al proprietario o ad amministratori.
Per scrivere una nota nuova: testo nel box giallino in alto + bottone + Aggiungi (sempre cliccabile, validazione testo non vuoto via snackbar) oppure scorciatoia Cmd/Ctrl + Invio.
Trascinare, ridimensionare, minimizzare, memoria posizione
- Trascinare (espanso): afferra il pannello da qualsiasi punto della cornice gialla (header, area lista, sfondo) e spostalo dove preferisci nel viewport. Il cursore diventa
grab/grabbing. - Trascinare (minimizzato): la fascia gialla è trascinabile come il pannello espanso. Spostandola, la posizione viene memorizzata in
localStoragecon chiavenote-panel-pos:<ENTITA>:<ID>. Riaprendo lo stesso documento/ordine la fascia ricompare nella posizione che avevi scelto. Posizioni separate per ogni record (es. ordine #42 e ordine #43 hanno posizioni indipendenti). - Ridimensionare: handle nativo del browser in basso a destra del pannello espanso (clicca e trascina) per cambiare larghezza e altezza. Min 280×160 px, max larghezza 100% del viewport, max altezza 70% del viewport.
- Minimizzare: freccia
expand_lessin alto a destra del pannello espanso, oppure click su area libera dell'header (titolo o sfondo). Il pannello torna fascia. Click "fantasma" dopo drag (entro 280 ms) automaticamente ignorato per non scatenare toggle accidentali al rilascio del trascinamento.
Cestino note (ADMIN/SUPERADMIN)
A pannello espanso, gli amministratori vedono un'icona delete_outline nell'header che
apre la vista cestino: elenco delle note soft-cancellate (con sfondo rosa pallido,
testo barrato e badge "🗑 cancellata gg/mm/aa"). Da qui è possibile ripristinarle
con il bottone verde restore_from_trash. Si torna alle note attive con il bottone
arrow_back.
Permessi di scrittura, modifica e cancellazione
| Operazione | Chi può farla | Note |
|---|---|---|
| Vedere le note | Chiunque abbia accesso al workspace | Le note sono filtrate per workspace dell'utente loggato. |
| Creare una nota | Chi ha il permesso del ruolo note.crea attivo |
Configurabile per ogni (workspace, ruolo) dal SUPERADMIN. Di serie acceso ad ADMIN e OPERATOR, spento a USER (si accende dal pannello). |
| Modificare una nota | Solo il proprietario o un ADMIN/SUPERADMIN | L'icona "matita" appare solo se hai diritto. |
| Eliminare una nota | Solo il proprietario o un ADMIN/SUPERADMIN | Soft-delete: la nota resta in DB con cancellatoIl valorizzato e va nel cestino note (vista ADMIN). |
| Vedere e ripristinare il cestino | Solo ADMIN/SUPERADMIN | Toggle nell'header del pannello (delete_outline). |
Audit log dei CRUD note
Ogni operazione sul modulo Note è tracciata in audit_log con utente, ruolo,
IP, user-agent e snapshot prima/dopo. Azioni registrate:
CREATE_NOTA— alla creazioneUPDATE_NOTA— alla modifica del testoDELETE_NOTA— al soft-deleteRESTORE_NOTA— al ripristino dal cestino
Consultabile dal Registro modifiche (Aziende & Licenze)
filtrando l'entità note: per ogni riga si vede anche com'era la nota
prima della modifica, e il testo di quelle cancellate.
Endpoint REST
GET /api/note?entita=ORDINE_PRODUZIONE&entitaId=42— lista note ancorate a una specifica entitàGET /api/note/_/cestino— lista note soft-cancellate (solo ADMIN+)POST /api/notebody{ testo, entita, entitaId }— crea (richiedenote.crea)PUT /api/note/:idbody{ testo }— modifica (proprietario o ADMIN+)DELETE /api/note/:id— soft-delete (proprietario o ADMIN+)POST /api/note/:id/ripristina— ripristino dal cestino (solo ADMIN+)
Schema dati
Tabella Note presente in tutti gli 8 DB workspace, con campi:
id, testo, entita, entitaId, autoreId, autoreUsername, workspaceId, cancellatoIl,
createdAt, updatedAt. Indici su (entita, entitaId), autoreId,
workspaceId e indice parziale WHERE cancellatoIl IS NULL per le note attive.
Entità supportate: DOCUMENTO, ORDINE_PRODUZIONE, SOGGETTO,
DISTINTA_BASE, CATALOGO, GENERICO.
audit_log o
LogProduzione) che registra eventi di sistema; sono pensate come annotazioni
libere di tipo "post-it" che gli utenti scrivono e leggono spontaneamente.
Il conto lavoro gestisce le lavorazioni affidate a un fornitore esterno (terzista): invio delle materie, lavorazione presso di lui, rientro del prodotto lavorato. Route base: /produzione/conto-lavoro; API /api/conto-lavoro.
Collegamento terzista al centro di lavoro
Nei Centri di lavoro, un centro di tipo ESTERNO può essere collegato a un Soggetto fornitore (campo soggettoId): rappresenta il terzista che esegue la fase. Il legame è salvato solo per i centri ESTERNO (per gli altri tipi viene azzerato lato backend).
Deposito «presso terzi»
Dal form del centro ESTERNO, il pulsante «Crea deposito conto lavoro» effettua un provisioning idempotente di un magazzino di tipo TERZISTA dedicato al fornitore (endpoint POST /api/magazzino/magazzini/deposito-terzista, codice TERZ-<fornitore>). È il contenitore logico della merce che si trova fisicamente dal terzista.
Stati: PIANIFICATO → INVIATO → COMPLETATO (oppure ANNULLATO). L'ordine ha una testata (terzista, prodotto lavorato atteso, quantità, costo, date) e le righe materie da inviare.
| Azione | Effetto magazzino | Vincoli |
|---|---|---|
Invia POST /:id/invia | Prelievo FEFO dai lotti interni (scarico) + trasferimento al deposito terzista | Solo da PIANIFICATO; ruolo PRODUCTION_MANAGER con produzione.ordini.completa; si ferma se nel magazzino interno la merce non basta |
Registra rientro POST /:id/rientro | Carico del prodotto lavorato nel magazzino interno con nuovo lotto; consumo delle materie presso terzi | Solo da INVIATO; ruolo PRODUCTION_MANAGER con produzione.ordini.completa; richiede firma elettronica (password) |
Annulla POST /:id/annulla | Se INVIATO: storno con ripristino dei lotti interni e disattivazione dei lotti presso terzi | Non consentito su COMPLETATO; ruolo PRODUCTION_MANAGER |
Creare, modificare e cancellare un ordine di conto lavoro e collegare le fatture spetta all'amministratore; a chi non può, i pulsanti non compaiono. Anche quando un ordine di produzione ha una fase su un centro ESTERNO, l'ordine di conto lavoro si crea dalla pagina Conto lavoro: nella scheda dell'ordine di produzione non c'è un pulsante che lo generi dalla fase.
Giacenza presso terzi (lotto per lotto)
All'invio, per ogni lotto interno prelevato NOX crea/aggiorna un lotto nel deposito terzista (numero CL<ordine>/<lotto>, campo lotti_magazzino.ordine_conto_lavoro_id). La pagina «Merce presso terzisti» (/produzione/conto-lavoro-giacenze, endpoint GET /api/conto-lavoro/giacenze-terzista) mostra la giacenza per terzista, materia e lotto. Il deposito è valorizzato: la merce entra al costo medio con cui è uscita dal magazzino interno (anche quella senza lotto, che compare come lotto CL<ordine>/NL). Al rientro i lotti vengono consumati (scarico dal deposito) e il loro valore entra nel costo del lavorato; all'annullo la merce torna nel magazzino interno e i lotti si chiudono.
DDT di conto lavoro
Il DDT che emettiamo noi (invio al terzista; reso al committente nel conto lavoro attivo) è un documento della serie dei DDT: POST /api/conto-lavoro/:id/ddt lo prepara in Documenti, in bozza, con causale CONTO_LAVORAZIONE, destinatario la controparte e le righe della merce (codice, lotto, scadenza) senza voce di catalogo, così l'emissione non muove di nuovo il magazzino. Si completa (vettore, colli, peso), si emette — il numero lo dà la serie — e si stampa col modello dell'azienda (DPR 472/1996 art. 1; DPR 441/1997). La fatturazione differita non propone da fatturare i DDT in conto lavorazione. Il DDT della controparte (rientro dal terzista, materie del committente) non si emette: se ne registra il numero.
Costo dalla fattura del terzista
Con «Collega fattura terzista» (POST /:id/collega-fattura) si aggancia una fattura passiva del fornitore: l'imponibile diventa il costo di lavorazione, che entra nel costo del prodotto lavorato al rientro (lavorato = materie consumate presso il terzista + lavorazione). Solo fatture ricevute dal terzista dell'ordine e non annullate; a lavorato già rientrato lotto, carico e giacenza si rivalutano della differenza; scollegando si torna al costo pattuito. Le fatture selezionabili arrivano da GET /api/sdi/passive?soggettoId=.
La scheda Backup dati nella barra in alto ti mette al riparo dall'unica cosa che non si rimedia: la perdita dell'archivio. Una copia contiene tutta la tua produzione — distinte base, cicli, ordini di produzione, MPS e MRP, dichiarazioni dal terminale, lotti e tracciabilità, controlli qualità, conto lavoro, magazzino e anagrafiche — e riporta il programma esattamente com'era nel momento in cui l'hai fatta.
Tre modi di fare una copia
- Backup Manuale — il pulsante in alto. Da premere prima di ogni operazione delicata: una rigenerazione MRP, un'importazione massiva di distinte, un aggiornamento, una prova di cui non conosci l'esito.
- Backup automatico — lo fa il server da solo, ogni notte, per tutte le aziende. Frequenza e giorni di conservazione li imposta il Super Amministratore, perché valgono per tutti; le copie più vecchie vengono eliminate da sole. Se una copia non riesce parte un'email all'indirizzo che imposta il Super Amministratore.
- Copia automatica sul tuo computer — all'avvio del programma, al massimo una volta al giorno, il file viene scaricato in una cartella che scegli tu.
Rimettere indietro i dati
Si chiede all'assistenza: il ripristino di una copia lo fa il Super Amministratore, e il programma torna allo stato di quel momento.
L'elenco in basso mostra le copie disponibili con data, dimensione e stato. Il pulsante Log esecuzioni apre lo storico e permette di verificarne l'integrità, per sapere che una copia è davvero valida e non un file troncato.