# 05 — Macchinari (legame soft)

## 1. Tipo di collegamento

**Non esiste FK** tra Lavorazioni e Macchinari. Il campo Lavorazioni `codice_macchina` è uitype 1 (stringa obbligatoria). Il legame è **logico/operativo**: lo stesso codice dovrebbe coincidere con l’anagrafica macchine.

## 2. Identità Macchinari

| Proprietà | Valore |
|-----------|--------|
| tabid | 113 |
| IsCustomModule | true |
| Tabelle | `vte_crmentity` + `vte_macchinari` (+ cf se presente) |
| Record vivi | **6** |

Campi rilevanti live:

| fieldname | Ruolo |
|-----------|--------|
| nome_macchina | Nome (es. Bulleri 5 Assi) |
| codice_macchinario | Codice (uitype 4) es. MAC1 |
| vcf_19_1 | Duplicato/alias codice (valori uguali a codice_macchinario nei sample) |
| stato_macchinario | picklist |
| note_macchinario | note |

Sample live:

- MAC1 Bulleri 5 Assi  
- MAC2 Rover  
- MAC3 Marok  
- MAC4 Ritmo PolyFusion4  
- MAC5 CMS Helix  
- MAC6 CMS Olimpo  

## 3. Lettura/scrittura rispetto a Lavorazioni

- **Nessuna join automatica** in retrieve/save di Lavorazioni
- Nessuna related list Macchinari ↔ Lavorazioni in `vte_relatedlists`
- Nessun Ajax di validazione codice macchina nel modulo Lavorazioni
- L’utente (o un’integrazione esterna via `id_evento_esterno` / import) scrive il testo in `codice_macchina`

Per correlare in report SQL tipico:

```sql
SELECT l.*, m.nome_macchina
FROM vte_lavorazioni l
JOIN vte_crmentity ce ON ce.crmid = l.lavorazioniid AND ce.deleted = 0
LEFT JOIN vte_macchinari m ON m.codice_macchinario = l.codice_macchina
LEFT JOIN vte_crmentity cm ON cm.crmid = m.macchinariid AND cm.deleted = 0
```

## 4. Implicazioni

- Rischio typo / codici non allineati (nessun vincolo referenziale)
- Possibile evoluzione futura: trasformare `codice_macchina` in uitype 10 → Macchinari (non presente oggi)
- I 6 macchinari sono il dizionario operativo atteso per i valori di `codice_macchina`
