# Preferenze

<p class="callout warning">Il path parameter `companyId` è l'identificativo TS Digital di un'azienda correttamente registrata</p>

<p class="callout warning">Le preferenze non vincono mai sui valori impostati in una singola richiesta di pagamento. Questo permette di sovrascrivere le preferenze per delle richieste di pagamento specifiche.</p>

<p class="callout warning">Se **daysDueDate** non viene impostato, o viene impostato a 0, verranno aggiunti **180gg** come valore di default alla data di scadenza dell'ultima rata (a meno di non aver impostato una due date specifica in richiesta)</p>

#### Creazione di una preferenza

Permette di creare una preferenza per una specifica azienda

```
[POST] /preferences/{companyId} ?
```

Nella **request** abbiamo:

- `daysDueDate`: giorni di scadenza che verranno aggiunti alla data di scadenza dell'ultima rata
- `emailSettings`: parametri di customizzazione per email 
    - `bodyText`: testo della mail
    - `name`: nome inserito nell'intestazione della mail
    - `email`: email custom di reply to inserita nella mail
- `paymentMethodSettings`: identificativi delle rate del piano di pagamento da pagare 
    - `name`: metodo di pagamento
    - `constraints`: minimali e massimali del singolo metodo di pagamento 
        - `<span class="hljs-attr">minimumAmount</span>`: importo minimo per il metodo di pagamento
        - `<span class="hljs-attr">maximumAmount</span>`: importo massimo per il metodo di pagamento

Nella **response** l'API ritorna:

- `companyId`: id azienda TS Digital
- `daysDueDate`: giorni di scadenza che verranno aggiunti alla data di scadenza dell'ultima rata
- `emailSettings`: parametri di customizzazione per email 
    - `bodyText`: testo della mail
    - `name`: nome inserito nell'intestazione della mail
    - `email`: email custom di reply to inserita nella mail
- `paymentMethodSettings`: identificativi delle rate del piano di pagamento da pagare 
    - `name`: metodo di pagamento
    - `constraints`: minimali e massimali del singolo metodo di pagamento 
        - `<span class="hljs-attr">minimumAmount</span>`: importo minimo per il metodo di pagamento
        - `<span class="hljs-attr">maximumAmount</span>`: importo massimo per il metodo di pagamento

#### Modifica di una preferenza

Permette di modificare una preferenza precedentemente creata per una specifica azienda

```
[PATCH] /preferences/{companyId} ?
```

Nella **request** abbiamo:

- `daysDueDate`: giorni di scadenza che verranno aggiunti alla data di scadenza dell'ultima rata
- `emailSettings`: parametri di customizzazione per email 
    - `bodyText`: testo della mail
    - `name`: nome inserito nell'intestazione della mail
    - `email`: email custom di reply to inserita nella mail
- `paymentMethodSettings`: identificativi delle rate del piano di pagamento da pagare 
    - `name`: metodo di pagamento
    - `constraints`: minimali e massimali del singolo metodo di pagamento 
        - `<span class="hljs-attr">minimumAmount</span>`: importo minimo per il metodo di pagamento
        - `<span class="hljs-attr">maximumAmount</span>`: importo massimo per il metodo di pagamento

Nella **response** l'API ritorna:

- `companyId`: id azienda TS Digital
- `daysDueDate`: giorni di scadenza che verranno aggiunti alla data di scadenza di una richiesta di pagamento
- `emailSettings`: parametri di customizzazione per email 
    - `bodyText`: testo della mail
    - `name`: nome inserito nell'intestazione della mail
    - `email`: email custom di reply to inserita nella mail
- `paymentMethodSettings`: identificativi delle rate del piano di pagamento da pagare 
    - `name`: metodo di pagamento
    - `constraints`: minimali e massimali del singolo metodo di pagamento 
        - `<span class="hljs-attr">minimumAmount</span>`: importo minimo per il metodo di pagamento
        - `<span class="hljs-attr">maximumAmount</span>`: importo massimo per il metodo di pagamento

#### Visualizzazione di una preferenza

Permette di modificare una preferenza precedentemente creata per una specifica azienda

```
[GET] /preferences/{companyId} ?
```

Nella **response** l'API ritorna:

- `companyId`: id azienda TS Digital
- `daysDueDate`: giorni di scadenza che verranno aggiunti alla data di scadenza di una richiesta di pagamento
- `emailSettings`: parametri di customizzazione per email 
    - `bodyText`: testo della mail
    - `name`: nome inserito nell'intestazione della mail
    - `email`: email custom di reply to inserita nella mail
- `paymentMethodSettings`: identificativi delle rate del piano di pagamento da pagare 
    - `name`: metodo di pagamento
    - `constraints`: minimali e massimali del singolo metodo di pagamento 
        - `<span class="hljs-attr">minimumAmount</span>`: importo minimo per il metodo di pagamento
        - `<span class="hljs-attr">maximumAmount</span>`: importo massimo per il metodo di pagamento

####  

#### Gerarchia priorità

**daysDueDate**

1. *dueDate inserita nella singola richiesta*
2. *dueDate maggiore negli installments + daysDueDate nelle preferenze*
3. *dueDate maggiore negli installments + 180gg*

---

**emailSettings.email**

1. *creditor.email nella singola richiesta*
2. *email preferenze*
3. *nessuna email di reply-to*

---

**emailSettings.name**:

1. *name nelle preferenze*
2. *nome azienda recuperato dall'Anagrafica Ts Digital*

---

***emailSettings.bodyText**:*

1. *testo nelle preferenze*
2. *testo standard fornito dalla piattaforma*