Spedizioni & Vettori

Gestione spedizioni, tracciamento, configurazione vettori e collegamento DDT

v 2.3 Manuale Utente
★ Aggiornamenti 5 Giugno 2026

Riferimenti normativi

1Archivio Spedizioni

L'Archivio Spedizioni e la pagina centrale del modulo. Presenta l'elenco di tutte le spedizioni registrate con strumenti di ricerca, filtri e indicatori di performance.

Filtri e ricerca

La barra superiore consente di filtrare le spedizioni per: stato, vettore, periodo (data creazione o data consegna prevista), destinatario e numero DDT collegato. La ricerca testuale opera su numero spedizione, ragione sociale destinatario e codice tracking.

KPI riepilogative

IndicatoreDescrizione
Spedizioni in attesaNumero di spedizioni nello stato IN_ATTESA, pronte per il ritiro
In transitoSpedizioni attualmente affidate al vettore e in viaggio
Consegnate (periodo)Spedizioni completate con successo nel periodo selezionato
Tempo medio consegnaMedia dei giorni tra ritiro e consegna effettiva
Tasso di resaPercentuale di spedizioni con esito RESA sul totale

Stati della spedizione

Ogni spedizione segue un ciclo di vita definito dai seguenti stati:

StatoDescrizioneTransizioni possibili
IN_ATTESASpedizione creata, in attesa di ritiro da parte del vettoreRITIRATA, ANNULLATA
RITIRATAIl vettore ha ritirato la merce dal magazzinoIN_TRANSITO, ANNULLATA
IN_TRANSITOLa merce e in viaggio verso il destinatarioCONSEGNATA, RESA
CONSEGNATALa merce e stata recapitata al destinatario— (stato finale)
RESALa consegna non e andata a buon fine, merce restituitaIN_ATTESA (ri-spedizione)
ANNULLATALa spedizione e stata annullata prima della consegna— (stato finale)
Gli stati vengono aggiornati automaticamente quando il vettore supporta il tracking integrato. In caso contrario, l'operatore puo avanzare manualmente lo stato dalla scheda spedizione.
2Creazione spedizione

Una spedizione puo essere creata in due modalita: dall'Archivio Spedizioni oppure direttamente da un DDT.

Modalita A — Dall'Archivio Spedizioni

  1. Accedere a Logistica → Spedizioni e premere il pulsante + Nuova Spedizione.
  2. Selezionare uno o piu DDT da collegare alla spedizione. Il sistema mostra i DDT in stato "Pronto per spedizione" non ancora associati.
  3. I dati del destinatario vengono precompilati dal DDT selezionato (ragione sociale, indirizzo di consegna). E possibile modificare l'indirizzo di destinazione se diverso.
  4. Selezionare il vettore tra quelli configurati in anagrafica. Il sistema propone il vettore predefinito del cliente, se impostato.
  5. Compilare i campi di spedizione: numero colli, peso, volume, note per il vettore.
  6. Confermare la data di ritiro prevista e l'eventuale consegna tassativa.
  7. Premere Salva. La spedizione viene creata in stato IN_ATTESA.

Modalita B — Dal DDT

  1. Aprire il DDT desiderato dall'Archivio DDT.
  2. Premere il pulsante Crea Spedizione presente nell'intestazione del documento.
  3. Il sistema pre-compila tutti i dati dalla testata del DDT (destinatario, indirizzo, vettore).
  4. Completare i dati mancanti (colli, peso, note) e premere Salva.
CampoObbligatorioNote
DDT collegato/iSiAlmeno un DDT deve essere associato (Art. 53 DPR 633/72)
VettoreSiSelezionato da anagrafica soggetti con ruolo Vettore
Indirizzo destinazioneSiPrecompilato dal DDT, modificabile
Numero colliSiNumero di colli/pallet della spedizione
Peso (kg)NoUtilizzato per il calcolo tariffario
Volume (m³)NoUtilizzato per il calcolo tariffario
Data ritiro previstaSiData in cui il vettore ritirera la merce
Note vettoreNoIstruzioni particolari per la consegna
Ai sensi del DPR 441/97, ogni uscita di merce dal magazzino deve essere giustificata da un DDT. Il sistema impedisce la creazione di una spedizione senza almeno un DDT collegato.
3Tracking spedizione

La scheda dettaglio di ogni spedizione presenta una sezione Tracking che consente di monitorare lo stato di avanzamento della consegna.

  1. Aprire la spedizione dall'Archivio Spedizioni.
  2. Nella sezione Tracking viene visualizzata la timeline degli eventi: creazione, ritiro, transito, consegna o resa.
  3. Se il vettore supporta il tracking integrato, gli aggiornamenti vengono ricevuti automaticamente e lo stato avanza in tempo reale.
  4. Per i vettori senza integrazione, l'operatore puo inserire manualmente gli aggiornamenti premendo + Aggiorna Stato e selezionando il nuovo stato con data e ora.
  5. Il codice tracking del vettore, se disponibile, viene visualizzato con un link diretto al portale di tracciamento esterno (configurato nel Tracking URL pattern del vettore).
Quando una spedizione passa allo stato CONSEGNATA, il sistema registra automaticamente la data di consegna effettiva, utile per il calcolo dei tempi medi di consegna nelle KPI.
4Gestione Vettori

I vettori sono soggetti dell'anagrafica con ruolo Vettore attivo. La configurazione avviene in due punti: nella scheda soggetto e nella pagina dedicata /vettori.

Configurazione dalla scheda soggetto

Quando un soggetto ha il ruolo Vettore attivo, la scheda presenta la sezione condizionale Configurazione Vettore con i seguenti campi:

CampoDescrizione
Referente logisticaContatto dedicato per le comunicazioni operative (nome, telefono, e-mail)
Zone serviteElenco delle zone geografiche coperte dal vettore (province, regioni, CAP)
Servizi offertiTipologie di trasporto: standard, espresso, refrigerato, ADR (merci pericolose)
TariffarioGriglia tariffaria per fascia di peso, volume o zona di destinazione
Tracking URL patternTemplate URL per il tracciamento (es. https://track.vettore.it/{code})
Iscrizione Albo AutotrasportatoriNumero e data iscrizione ai sensi del D.Lgs. 286/2005
Note operativeIstruzioni standard da riportare sulle spedizioni affidate a questo vettore

Pagina /vettori

La pagina Logistica → Vettori fornisce una vista aggregata di tutti i soggetti con ruolo Vettore. Consente di:

  • Confrontare le tariffe tra vettori per zona e fascia di peso.
  • Visualizzare le statistiche di performance: tempi medi di consegna, tasso di resa, numero spedizioni gestite.
  • Accedere rapidamente alla scheda soggetto del vettore per modificare la configurazione.
  • Impostare il vettore predefinito per zona o per cliente.
Ai sensi del D.Lgs. 286/2005, il committente e corresponsabile della regolarita del trasporto. Verificare che il vettore sia regolarmente iscritto all'Albo Autotrasportatori prima di affidargli spedizioni.
5Collegamento con documenti

Il modulo Spedizioni e strettamente integrato con l'Archivio DDT. Il collegamento bidirezionale garantisce tracciabilita completa della merce.

Pulsante "Crea Spedizione" dal DDT

Ogni DDT in stato "Pronto per spedizione" presenta nell'intestazione il pulsante Crea Spedizione. Premendolo si avvia la procedura guidata di creazione spedizione con i dati precompilati dal DDT (v. Sezione 2, Modalita B).

Badge nella lista DDT

Nella lista dell'Archivio DDT, i documenti gia collegati a una spedizione mostrano il badge 🚚 accanto al numero. Cliccando sul badge si accede direttamente alla scheda della spedizione collegata.

Riferimenti incrociati

DaVersoAzione
DDTSpedizionePulsante "Crea Spedizione" o badge per accedere alla spedizione esistente
SpedizioneDDTLista dei DDT collegati nella scheda spedizione, con link diretto al documento
SpedizioneVettoreLink alla scheda soggetto del vettore assegnato
Una spedizione puo raggruppare piu DDT destinati allo stesso indirizzo di consegna, ottimizzando i costi di trasporto. Il sistema segnala i DDT raggruppabili per destinatario e indirizzo.
6Crea spedizione da DDT

Dal modulo Documenti, è possibile creare una spedizione direttamente collegata a un DDT:

  1. Aprire un documento di tipo DDT in modifica.
  2. Nel footer del documento, premere il bottone Spedizione (ciano).
  3. Il sistema crea una nuova spedizione pre-compilata con i dati del DDT: soggetto destinatario, indirizzo di spedizione, vettore, dati trasporto.
  4. Completare eventuali dati mancanti (tracking, note vettore) e salvare.
Il bottone Spedizione è visibile solo per documenti di tipo DDT in modifica. La spedizione creata viene automaticamente collegata al DDT.
7DDT integrato nei documenti

A partire da aprile 2026, i DDT (Documenti di Trasporto) sono gestiti interamente nel modulo Documenti unificato. Non esiste più un archivio DDT separato.

Funzionalità DDT nel modulo Documenti

FunzioneCome accedere
Filtro tipo DDTLista documenti → filtro tipo = DDT
Filtro vettoreAppare automaticamente quando tipo = DDT
Stato FATTURATOFiltro stato → visibile con tipo DDT
Fattura riepilogativa (TD24)Seleziona più DDT con checkbox → bottone "Fatt. Riepilogativa"
Dati trasportoTab Trasporto nel form documento
Crea spedizioneFooter documento DDT → bottone Spedizione
Per creare una fattura riepilogativa da più DDT, tutti i DDT selezionati devono appartenere allo stesso soggetto e essere in stato EMESSO, CONFERMATO o INVIATO (non già FATTURATO).
Novita Aprile 2026 (v2.1) — Audit transizioni, Cestino IN_ATTESA/ANNULLATA, Bulk

Aggiornamento strutturale del modulo Spedizioni con audit trail delle transizioni di stato, cestino limitato agli stati non finali e operazioni massive. Pensato per compliance (Art. 53 DPR 633/72) e tracciabilità delle consegne.

Audit trail su ogni modifica

Ogni PATCH/PUT sulla spedizione (cambio stato, tracking, date, costi, destinatario, note) viene registrato nella tabella log_modifiche_spedizioni. L'endpoint GET /api/spedizioni/:id/audit-log restituisce lo storico con valore precedente, valore nuovo, utente e data/ora.

Nella lista spedizioni e presente ora il pulsante 🕒 Storico modifiche che apre un modal con la cronologia. Risponde a: “chi ha marcato questa spedizione come consegnata e quando?”

Stessa logica su VettoreConfig: GET /api/spedizioni/vettori/:soggettoId/config-audit-log.

Validazione transizioni di stato

Il backend valida ora la matrice di transizioni ammesse. Tentativi di transizione non valida (es. CONSEGNATA → IN_ATTESA) vengono rifiutati con errore 409.

DaVerso (consentite)
IN_ATTESARITIRATA, IN_TRANSITO, CONSEGNATA, ANNULLATA
RITIRATAIN_TRANSITO, CONSEGNATA, RESA, ANNULLATA
IN_TRANSITOCONSEGNATA, RESA, ANNULLATA
RESAIN_ATTESA, RITIRATA (riprogrammazione)
CONSEGNATA— (terminale)
ANNULLATA— (terminale)

Cestino limitato agli stati non finali

Per rispetto della compliance, il soft-delete e consentito solo per spedizioni in stato IN_ATTESA o ANNULLATA. Le spedizioni CONSEGNATE restano immutabili per legge (traccia fiscale della consegna). Tentativi di eliminazione su altri stati vengono bloccati con errore 409.

  • Pulsante 🗑 Apri cestino nell'header della lista.
  • Azioni per riga nel cestino: ↺ Ripristina / ✗ Definitivo (hard delete irreversibile, solo se cancellata e stato IN_ATTESA/ANNULLATA).

Operazioni massive

Selezione multipla con checkbox sulla lista. Con almeno una spedizione selezionata compare una barra blu con:

  • ✓ Marca consegnate: porta tutte le selezionate a CONSEGNATA con data comune. Le transizioni non valide vengono ignorate e riportate come invalidi nella risposta.
  • ⇄ Cambia stato…: cambio stato massivo con validazione transizioni.
  • 🗑 Cestino: soft-delete delle sole spedizioni IN_ATTESA/ANNULLATA; le altre vengono ignorate.

Endpoint: POST /api/spedizioni/bulk con action marca-consegnate, cambia-stato, soft-delete.

Timeline spedizione

L'endpoint GET /api/spedizioni/:id/timeline restituisce una vista cronologica che aggrega: audit modifiche + DDT collegati.

Audit configurazione vettore

Ogni modifica alla VettoreConfig (zone servite, tipi servizio, tariffe, referente, note operative) viene tracciata nella tabella log_modifiche_vettori_config. Utile per ricostruire variazioni di tariffario nel tempo.

100Bollettazione v2.2 — Dashboard avanzata

Per le esigenze più sofisticate di spedizioni (etichette barcode, tracking corrieri, CMR internazionali, SSCC pallet, EDIFACT GDO, MUD rifiuti, ecc.) c'è una dashboard dedicata accessibile dal menu principale → Spedizioni avanzate.

Le 17 sezioni della dashboard

SezioneCosa fa
Etichette PDF (barcode)Genera etichette spedizione con codice a barre Code128/EAN13 + QR code
Configurazione corrieriGestisce l'elenco corrieri usati (DHL, UPS, BRT, …) con tariffe e zone
Tracking spedizioniCronologia eventi (preso in carico, in transito, consegnato, eccezione) per ogni spedizione
Packing listLista dettagliata dei colli inclusi in un DDT
DDT resoCrea un DDT di reso cliente o fornitore dal documento originale
Conto depositoGestione merce in conto visione/deposito
Multi-destinazioneConsegna in più indirizzi con un unico DDT
DAU export extra-UEBolle doganali per esportazioni fuori UE
CMR trasporto int.leLettera di vettura internazionale per trasporto merce
POD firmatiProof of Delivery raccolti dal vettore
Fattura accompagnatoriaFattura + DDT uniti in un unico documento
SSCC GS1 palletAssegnazione codici SSCC ai pallet per tracciabilità logistica
EDIFACT DESADV (GDO)Comunicazione consegna in formato EDIFACT per grande distribuzione
MUD / FIR rifiutiRegistrazione rifiuti speciali (FIR) e MUD annuale
Import tracking CSVImporta aggiornamenti tracking da file CSV del corriere
ORD → DDT automaticoConversione automatica ordini confermati in DDT
Corriere HTTP APICorrieri configurati per integrazione via API (webhook tracking, ecc.)

Come si usa

Ogni sezione ha una lista (elenco dei record esistenti) e, dove applicabile, un pulsante Nuovo per creare. L'interfaccia è semplice:

  • Sidebar a sinistra — lista delle 17 sezioni. Click per cambiare vista
  • Area centrale — tabella con i dati della sezione scelta
  • Intestazione — pulsanti contestuali (Nuovo / Esporta / Filtra)
Alcune sezioni (etichette, tracking, packing list, POD, SSCC) non si usano da zero: si parte sempre da un DDT specifico. Vai su Documenti → DDT, apri un DDT, poi genera ciò che ti serve. La dashboard elenca tutto ciò che è già stato creato.
?Domande frequenti (FAQ)
Posso creare una spedizione senza un DDT collegato?
No. Ai sensi dell'Art. 53 DPR 633/72 e del DPR 441/97, ogni spedizione di merce deve essere accompagnata da un Documento di Trasporto. Il sistema richiede obbligatoriamente il collegamento di almeno un DDT per creare una spedizione.
Come posso raggruppare piu DDT in un'unica spedizione?
In fase di creazione spedizione dall'Archivio Spedizioni, e possibile selezionare piu DDT destinati allo stesso indirizzo. Il sistema filtra automaticamente i DDT compatibili per destinatario e indirizzo di consegna.
Il tracking si aggiorna automaticamente?
Dipende dal vettore. Se il vettore supporta l'integrazione tramite API o webhook, gli aggiornamenti di stato vengono ricevuti in tempo reale. Per i vettori non integrati, l'operatore deve aggiornare manualmente lo stato dalla scheda spedizione. In ogni caso, il codice tracking con link al portale esterno e sempre disponibile.
Come gestisco una spedizione resa (non consegnata)?
Quando una spedizione passa allo stato RESA, il sistema consente di creare una nuova spedizione di ri-tentativo collegata agli stessi DDT. La spedizione originale mantiene lo stato RESA per tracciabilita. E possibile cambiare vettore o indirizzo di destinazione nella nuova spedizione.
Come configuro un nuovo vettore nel sistema?
Accedere ad Anagrafiche → Soggetti, creare o aprire il soggetto corrispondente al vettore e attivare il ruolo Vettore. Compilare la sezione Configurazione Vettore con referente, zone servite, servizi, tariffario e Tracking URL pattern. Il vettore sara disponibile per la selezione nelle spedizioni.
Certificazione v 2.2 — Presidi di compliance
🔑 Visibilità condizionata (certificazione v 2.2) — Questo modulo è accessibile solo se:
Pacchetto VENDITE_B2B attivo sul workspace (configurabile da SUPERADMIN in /admin/pacchetti)
Profilo attività compatibile: Ferramenta, Elettronica (commercio B2B con consegne)
Permesso utente abilitato in Modifica Utente → Moduli
I tre livelli si applicano in intersezione. Dettagli completi in Gerarchia Pacchetti+Profilo+Utente.

A partire dalla versione 2.2, il modulo Spedizioni adotta lo standard di certificazione NOX con i seguenti presidi:

Cestino e soft-delete

Gli elementi cancellati non vengono rimossi fisicamente ma spostati in un cestino interno (campi cancellatoIl / cancellatoDa). Dalla toolbar il pulsante Cestino alterna tra vista attivi e vista cestino. Dal cestino è possibile:

  • Ripristinare l'elemento (riportarlo nella lista attiva) — operazione riservata ad amministratori.
  • Eliminare definitivamente con motivazione obbligatoria — azione irreversibile, riservata ad amministratori, tracciata nell'audit log.

Azioni massive (bulk)

È possibile selezionare più elementi con le checkbox della prima colonna. Appare una barra inferiore con le azioni disponibili: Audit separato per config vettore. La risposta indica N operazioni riuscite / M fallite; i dettagli delle fallite compaiono nella console browser (F12).

Storico modifiche (audit log)

L'icona history nelle azioni di riga apre un modal con la storia completa delle modifiche: data, campo, valore precedente, valore nuovo, operatore, eventuale motivazione. I record di audit non sono modificabili né eliminabili via UI. Conservazione: indefinita (art. 2220 c.c. — 10 anni minimo).

Mascheramento dati sensibili (GDPR art. 32)

Se i campi modificati contengono dati sensibili (IBAN, Codice Fiscale, Partita IVA, password/token), l'audit log salva il valore mascherato anziché in chiaro:

CampoEsempio originaleNel log
IBANIT60X0542811101000000123456IT60****3456
Codice Fiscale (PF)RSSMRA80A01H501ZRSSMRA****501Z
Partita IVA12345678901123****901
Password / token(qualsiasi)***REDACTED***

Timeline aggregata

Per ciascun elemento è disponibile una vista Timeline che aggrega in ordine cronologico audit, eventi del ciclo di vita ed eventuali entità collegate (es. documenti, movimenti, storni).

RBAC uniforme

Tutte le azioni distruttive o massive (soft-delete, ripristino, eliminazione definitiva, bulk, storno) richiedono il ruolo ADMIN o superiore. Gli operatori possono continuare a creare / modificare / consultare secondo le proprie abilitazioni.

Il DOCX di certificazione formale per questo modulo è disponibile: certificazione-spedizioni.docx (cartella manuali).

BOLLETTAZIONE v 2.2 — 9ª ondata (ALTA + MEDIA priorità)

Estensione completa del pacchetto di bollettazione/spedizioni con 13 macro-feature. Tutti gli endpoint sono montati sotto /api/bollettazione/* (router bollettazione-v22-wave9.routes.js). Dipendenza aggiunta: bwip-js (barcode Code128/EAN13); pdfkit e qrcode già presenti.

A. Etichette spedizione PDF 10x15 cm + barcode/QR

  • Tabella etichette_spedizione: formato (10x15 / 10x20 / A6 / A4), tipo barcode (code128 / QR / code39 / ean13), hash SHA-256, numero/totale colli
  • POST /api/bollettazione/etichette/genera body {spedizioneId | ddtId, formato, barcodeType, barcodeValue, numeroCollo, totaleColli}
  • GET /api/bollettazione/etichette/download/:id — download PDF binario
  • GET /api/bollettazione/etichette?spedizioneId=X — lista etichette generate
  • File salvati in /app/etichette-pdf/

B. Corrieri — configurazione + creazione LDV programmatica

Adapter pattern per 6 provider: MOCK (funzionante, test), DHL Express, SDA Poste Italiane, GLS Italy, BRT Bartolini, TNT/FedEx (stub con TODO integrazione reale).

  • Tabella corriere_config con api_endpoint, api_key, api_secret, account_number, flag attivo
  • GET /api/bollettazione/corrieri/config — lista provider
  • PUT /api/bollettazione/corrieri/config/:id [ADMIN] — imposta credenziali + attivazione
  • POST /api/bollettazione/corrieri/crea-ldv/:spedizioneId [ADMIN] body {corriereCodice} — genera LDV, salva tracking su spedizioni.rifVettore, crea evento PRESA_IN_CARICO

C. Tracking real-time + webhook

  • Tabella spedizione_tracking_eventi: stato (PRESA_IN_CARICO, IN_TRANSITO, IN_CONSEGNA, CONSEGNATA, GIACENZA, ECCEZIONE, RIENTRO), località, timestamp, fonte (manuale/webhook/polling/import), payload grezzo JSONB
  • GET /api/bollettazione/tracking/:spedizioneId — storico eventi (DESC)
  • POST /api/bollettazione/tracking/:spedizioneId/evento — aggiunge evento manuale
  • POST /api/bollettazione/tracking/webhook/:corriereCodice — endpoint pubblico per push corrieri (body: trackingNumber, stato, localita...)
  • Sync automatico stato spedizione su CONSEGNATA/RIENTRO/ANNULLATA

D. Packing list multi-collo

Gestione dimensioni e peso per singolo collo, essenziale per spedizioni fragili, pesanti o ADR (merci pericolose).

  • Tabella packing_list: numero collo, peso kg, dimensioni LxPxH cm, contenuto, flag fragile/pericoloso, codice ADR UN number, temperatura controllata
  • GET/POST /api/bollettazione/packing-list/:ddtId body {colli:[{pesoKg, lunghezzaCm, larghezzaCm, altezzaCm, contenutoDescrizione, fragile, pericoloso, codiceAdr}]}
  • Aggiorna automaticamente documenti.numeroColli e documenti.peso sul documento DDT

E. DDT di reso cliente / fornitore (art. 53 DPR 633/72)

Workflow dedicato per i resi con creazione automatica del DDT di reso + opzionale nota di credito collegata.

  • Nuovi campi documenti: resoTipo (RESO_CLIENTE | RESO_FORNITORE), resoDocumentoOrigineId, resoMotivazione, resoNotaCreditoId
  • POST /api/bollettazione/ddt-reso/:docOrigineId [ADMIN] body {tipo, motivazione, righeDaStornare?, creaNotaCredito?}
  • Genera DDT con causale RESO_DA_CLIENTE / RESO_A_FORNITORE; se creaNotaCredito=true (solo RESO_CLIENTE) emette anche TD04 con importi negativi collegata

F. Conto deposito / visione / lavorazione (art. 53)

Workflow completo per DDT in conto deposito (merce depositata), visione (da approvare) e lavorazione (da lavorare e restituire).

  • Tabella conto_deposito: data consegna + scadenza rientro, stato (APERTO / RIENTRATO_PARZIALE / RIENTRATO / FATTURATO / SCADUTO), firma fornitore base64, fattura definitiva collegata
  • POST /api/bollettazione/conto-deposito/:ddtId [ADMIN] body {tipo, dataConsegna, dataScadenzaRientro, note}
  • PATCH /conto-deposito/:id/rientro [ADMIN] body {ddtRientroId, conformita, firmaBase64, parziale}
  • PATCH /conto-deposito/:id/fattura [ADMIN] — vendita definitiva (stato FATTURATO)
  • GET /conto-deposito?stato=APERTO&tipo=VISIONE

G. DDT cumulativi multi-destinazione

  • Tabella ddt_destinazioni_multiple: array di destinatari con indirizzo + lista righe associate
  • GET/POST /api/bollettazione/ddt-multi-dest/:ddtId

H. Bolle doganali DAU (export extra-UE)

  • Tabella bolle_doganali: DAU MRN, regime doganale (10 export / 31 riesportazione), ufficio dogana, paese destinazione, peso lordo/netto, valore SDV, certificato origine (EUR1/ATR), INCOTERMS, modo trasporto
  • Stato workflow: BOZZA → PRESENTATA → ACCETTATA → USCITA_CONFERMATA
  • POST/GET /api/bollettazione/bolle-doganali, PATCH /:id/stato [ADMIN]

I. CMR (Convention Marchandises Routiers)

Lettera di vettura internazionale (Convenzione di Ginevra 19.05.1956) per trasporti UE.

  • Tabella cmr_dichiarazioni: mittente, destinatario, luoghi presa/consegna, targhe motrice/rimorchio, merci (peso/volume/colli/imballaggio), classe ADR, porto, istruzioni
  • POST /api/bollettazione/cmr — crea dichiarazione
  • POST /api/bollettazione/cmr/:id/genera-pdf [ADMIN] — produce PDF A4 conforme schema internazionale, salva in /app/cmr-pdf/

J. POD — Proof of Delivery firma digitale destinatario

  • Tabella pod_consegne: firma touch base64, documento identità (CI/PATENTE/PASSAPORTO), IP, timestamp, hash SHA-256 integrità
  • POST /api/bollettazione/pod body {spedizioneId | ddtId, firmatoDaNome, firmatoDaRuolo, documentoIdentitaTipo, documentoIdentitaNumero, firmaBase64, note}
  • Auto-aggiorna spedizione a CONSEGNATA con evento tracking
  • GET /api/bollettazione/pod/:spedizioneId — storico firme

K. Magazzino automatico da DDT

Trigger di scarico/carico magazzino automatico dopo emissione DDT.

  • Tabella log_magazzino_auto: tipo trigger (DDT_EMESSO/DDT_RESO/DDT_RESO_FORN), movimenti generati[], esito, errore
  • POST /api/bollettazione/magazzino-auto/ddt/:docId [ADMIN] body {magazzinoId, forza?}
  • Pattern: DDT vendita → SCARICO_VENDITA, reso cliente → CARICO_RESO_CLIENTE, reso fornitore → SCARICO_RESO_FORN
  • Previene doppia esecuzione (flag forza per override)

L. Fattura accompagnatoria (flag TD01 + trasporto)

Alternativa al DDT+fattura differita: TD01 con tutti i dati trasporto contestuali.

  • Campo documenti.fatturaAccompagnatoriaFlag
  • PATCH /api/bollettazione/fattura-accomp/:docId body {attiva}
  • Validazione: flag attivabile solo su TD01 con dataInizioTrasporto compilata
Gli adapter corriere reali (DHL/SDA/GLS/BRT/TNT) sono stub: l'integrazione effettiva richiede credenziali API partner + eventuali certificati SOAP/OAuth. L'adapter MOCK è pienamente operativo per test end-to-end. Il tracking webhook pubblico a /api/bollettazione/tracking/webhook/:corriereCodice è già pronto a ricevere push dai corrieri una volta configurati.
§BOLLETTAZIONE v 2.2 — 10ª ondata (BASSA priorità / residui v 2.3)

Chiusura dei residui BASSA: SSCC GS1 per pallet GDO, EDIFACT DESADV, MUD/FIR rifiuti, import tracking CSV, trasformazione automatica ordine cliente → DDT, scaffolding HTTP reale corrieri con logging request/response. Dipendenze già disponibili (pdfkit, bwip-js, multer, csv-parse).

A. SSCC GS1 — Serial Shipping Container Code (pallet GDO)

Codice 18 cifre standard GS1 (ext_digit + company_prefix + serial + check_digit) calcolato con algoritmo MOD-10 GS1. Essenziale per etichettatura pallet destinati alla GDO (Coop, Conad, Esselunga, Carrefour) e tracciabilità lotti.

  • Tabelle: sscc_codici (univoco 18 cifre) + sscc_contatore (serial per company prefix)
  • POST /api/bollettazione/sscc/assegna [ADMIN] body {companyPrefix, quantita, ddtId?, packingListId?, extDigit?} — genera N SSCC consecutivi
  • POST /api/bollettazione/sscc/:id/genera-etichetta — PDF A5 con barcode GS1-128 AI(00) + destinazione DDT
  • GET /api/bollettazione/sscc?ddtId=X&stato=ASSEGNATO
  • Stati: ASSEGNATOSPEDITORICONSEGNATO / ANNULLATO

B. EDIFACT DESADV per GDO (UN/EDIFACT D01B)

Generazione del messaggio DESADV (Despatch Advice 351) conforme standard UN/EDIFACT D01B EAN005 per comunicazione anticipata di spedizione ai portali della Grande Distribuzione.

  • Tabella edifact_messaggi: tipo (DESADV/INVOIC/ORDERS/RECADV), partner_gdo, partner_gln (13 cifre Global Location Number), esito (BOZZA/INVIATO/ACCETTATO/RIFIUTATO)
  • POST /api/bollettazione/edifact/desadv/:ddtId [ADMIN] body {partnerGdo, partnerGln, glnMittente}
  • Genera UNB+UNH+BGM+DTM+NAD+CPS+PAC+PCI+GIN+LIN+IMD+QTY+UNS+CNT+UNT+UNZ con segmenti SSCC se presenti
  • GET /api/bollettazione/edifact/:id/download — download testo .edi
  • GET /api/bollettazione/edifact?partnerGdo=COOP&ddtId=X

C. MUD/FIR — Formulario Identificazione Rifiuti (art. 193 D.Lgs 152/2006)

Documento obbligatorio per il trasporto dei rifiuti con tracciabilità produttore → trasportatore → destinatario. Sezioni complete secondo DM 1/4/1998 n.145.

  • Tabella formulari_rifiuti con 25+ campi: dati produttore, trasportatore (iscrizione Albo Gestori Ambientali), destinatario (autorizzazione), rifiuto (CER, stato fisico, classe pericolo HP1-HP15, quantità kg, destinazione R/D)
  • Anagrafica cer_codici con 18 codici CER seed (150101-150110, 200101-200301, 080317-080318, 160213-160214, 180103-180104)
  • GET /api/bollettazione/fir/cer?q=150&pericoloso=true — cerca codici CER
  • POST /api/bollettazione/fir [ADMIN] — crea FIR (numeroFir, dataEmissione, produttoreRagioneSociale, cerCodice, rifiutoQuantitaKg obbligatori)
  • POST /api/bollettazione/fir/:id/genera-pdf [ADMIN] — PDF A4 conforme schema
  • GET /api/bollettazione/fir?stato=EMESSO&cerCodice=150106

D. Import tracking CSV

Fallback per corrieri senza webhook/API real-time: upload CSV ricevuto dal corriere con mapping automatico delle colonne (tracking_number, stato, localita, descrizione, timestamp supportati in varianti multilingua).

  • Tabella tracking_import_batch: nome file, righe totali/importate/scartate, esito (OK/ERRORE/PARZIALE)
  • POST /api/bollettazione/tracking-import/:corriereCodice [ADMIN] form-data file (CSV, max 10MB)
  • Supporta delimitatori , ; \t; matching spedizione via rifVettore; righe senza match → scartate
  • GET /api/bollettazione/tracking-import/batch — storico batch

E. Ordine cliente (ORD) → DDT

Trasformazione automatica di un documento tipo ORD (Ordine Cliente) in un DDT con clonazione righe e campi destinazione. Supporta evasione parziale (subset di righe) + chiusura ordine contestuale.

  • GET /api/bollettazione/ordine-to-ddt/ordini-evadibili?soggettoId=X — elenco ORD in stato EMESSO/CONFERMATO/BOZZA
  • POST /api/bollettazione/ordine-to-ddt/:ordineId [ADMIN] body {righeDaEvadere?:[ids], chiudiOrdine?:bool}
  • Genera DDT con: causale VENDITA, numero progressivo DDT dell'anno, riferimento a documentoOrigineId, campi destinazione copiati dall'ordine

F. Corriere HTTP — integrazione reale scaffolding

Endpoint /corriere-http/* con logging di tutte le chiamate HTTP verso i corrieri reali. Utile per debug integrazione + audit compliance. Base per l'implementazione adapter reali DHL Express SDK, SDA SOAP, GLS REST, BRT, TNT/FedEx.

  • Tabella corriere_api_log: endpoint, method, request_body (JSONB), response_status, response_body (JSONB), durata_ms, esito (OK/ERRORE/TIMEOUT)
  • POST /api/bollettazione/corriere-http/test/:corriereCodice [ADMIN] — test connettività + logging
  • GET /api/bollettazione/corriere-http/log?corriereCodice=DHL&spedizioneId=X
Il pacchetto BOLLETTAZIONE è ora completo end-to-end: rimangono aperti solo i residui che richiedono strumenti/contratti esterni (credenziali API partner DHL/SDA/GLS/BRT per creazione LDV reale, invio EDIFACT ai gateway VAN, trasmissione MUD ad Albo Gestori). Il contenuto applicativo (generazione codici, formati, PDF, workflow) è tutto in produzione.