Skip to main content

Logiche Tecniche

Descrizione delle logiche tecniche implementate nel modulo Prestazioni Professionisti.


🧮 Calcolo dei prezzi suggeriti

Prestazioni Q (F.01/F.02)

Il prezzo suggerito per le prestazioni Q viene calcolato con la formula:

prezzo = V × P × G × Q

Dove:

  • V: Valore del progetto (project_value)
  • P: Parametro valore dell'allegato (value_parameter)
  • G: Grado di complessità dell'opera (g_complexity)
  • Q: Coefficiente della prestazione (coefficient)

Pratiche P (F.04)

Per le pratiche P viene fornito un range di prezzi suggeriti:

  • min_price: Importo minimo consigliato
  • max_price: Importo massimo consigliato

📊 Struttura dei gruppi

Gli item dell'Allegato A vengono organizzati in 4 gruppi:

GruppoDescrizioneContenuto
F.01ProgettazionePrestazioni Q con sezione radice F.01
F.02Direzione lavoriPrestazioni Q con sezione radice F.02
F.03Altro e specificheItem personalizzati (senza template)
F.04Pratiche e documentiPrestazioni P (pratiche)

💰 Calcolo dei financials

Il calcolo dei totali finanziari segue questo flusso:

1. Totale soggetto a sconto/rincaro

Solo i gruppi F.01, F.02 e F.03 sono soggetti a sconto o rincaro.

discountableTotal = F.01 + F.02 + F.03

2. Applicazione sconto/rincaro

adjustmentValue = discountableTotal × (percentage / 100) × sign

Dove sign è -1 per sconto, +1 per rincaro.

3. Totale professionale

professionalTotal = discountableTotal + adjustmentValue + F.04

4. Calcolo IVA e cassa previdenziale

  • IVA professionale: professionalTotal × vatRate
  • Spese: calcolate come percentuale del totale F.01-F.03
  • Bolli/imposte: importo fisso configurato
  • Cassa previdenziale: calcolata sulla base imponibile totale

5. Totale finale

grandTotal = professionalTotal + pensionAmount + expenses + duties + totalVat

🗄️ Sistema di caching

Il modulo utilizza un sistema di caching per ottimizzare le performance.

Chiavi di cache

ChiaveContenutoInvalidazione
g_complexity_attachment_{id}Complessità GSalvataggio allegato
project_parameters_{id}Parametri V, G, PSalvataggio allegato
groups_attachment_{id}Struttura gruppiAggiornamento financials
q_coefficient_{id}Coefficiente QSalvataggio template Q
p_item_template_parameters_{id}Min/max prezzoSalvataggio template P

Invalidazione

La cache viene invalidata automaticamente:

  • Al salvataggio dell'allegato
  • Al salvataggio dei template Q o P
  • Alla chiamata esplicita di resetCache()

🔄 Versioning degli allegati

Ogni Allegato A supporta il versioning tramite:

  • generation_id: Identifica la "famiglia" di versioni
  • version: Numero progressivo della versione
  • archived_at: Data di archiviazione della versione precedente

Alla conferma di un allegato, viene creata una nuova versione e la precedente viene archiviata.


🌳 Struttura ad albero delle sezioni Q

Le sezioni Q sono organizzate in una struttura gerarchica:

F.01 (sezione radice)
├── Sottosezione 1
│ ├── Prestazione Q
│ └── Prestazione Q
└── Sottosezione 2
└── Prestazione Q

F.02 (sezione radice)
├── Sottosezione 1
└── Sottosezione 2

La relazione parent-child è gestita dal campo parent_id nella tabella pw_q_section_templates.