Concetti

Ricorrenza

Pattern di ripetizione automatica per attività template.

Panoramica

La ricorrenza permette di definire un pattern di ripetizione per un'attività template. Quando l'attività template viene completata o annullata, la RPC crea automaticamente la prossima istanza con la scadenza calcolata.

Struttura

interface Ricorrenza {
  idricorrenza: number
  idattivita_template: number       // FK → attivita.attivita
  tiporicorrenza: TipoRicorrenza    // 'giornaliera' | 'settimanale' | 'mensile'
  intervallo: number                // ogni N unità
  datafine: string | null           // YYYY-MM-DD, null = indefinita
  triggercreazione: TriggerCreazione // 'completamento' | 'data_fissa'
  giorni_anticipo: number           // crea la prossima N giorni prima della scadenza
  attivo: boolean
}

TriggerCreazione

ValoreQuando viene creata la prossima istanza
completamentoImmediatamente quando l'attività viene completata
data_fissagiorni_anticipo giorni prima della scadenza corrente

Esempio — controllo settimanale

{
  tiporicorrenza: 'settimanale',
  intervallo: 1,
  triggercreazione: 'completamento',
  giorni_anticipo: 0,
  datafine: null,
}
// → Ogni volta che si completa, crea la prossima tra 7 giorni

Esempio — report mensile con anticipo

{
  tiporicorrenza: 'mensile',
  intervallo: 1,
  triggercreazione: 'data_fissa',
  giorni_anticipo: 5,
  datafine: '2025-12-31',
}
// → Crea la prossima istanza 5 giorni prima della scadenza corrente
// → Si ferma dopo il 31/12/2025

Configurazione in AttivitaForm

La ricorrenza viene configurata nel tab "Avanzato" tramite RicorrenzaPanel. È disponibile solo alla creazione — non modificabile in modifica.

// formState.ricorrenza
{
  attivo: true,
  tiporicorrenza: 'mensile',
  intervallo: 1,
  datafine: null,
  triggercreazione: 'completamento',
  giorni_anticipo: 0,
}

Risposta RPC

Quando un'attività con ricorrenza viene completata o annullata, la risposta include:

{
  ricorrenza_creata: {
    idattivita: 456,         // ID della nuova istanza creata
    datascadenza: '2025-06-15'
  } | null
}

null se datafine è raggiunta o la ricorrenza è disabilitata.