> ## Documentation Index
> Fetch the complete documentation index at: https://docs.get-clara.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Câmpuri de formulă

> Creează câmpuri de formulă folosind fluxuri de lucru până când va fi disponibil suportul nativ.

Twenty nu oferă încă suport nativ pentru câmpuri de formulă (va veni în 2026), dar poți obține același rezultat folosind fluxuri de lucru. Această soluție temporară îți permite să calculezi și să completezi automat valorile câmpurilor — de la concatenări simple la logică de business complexă.

## Cazuri de Utilizare Comune

| Caz de utilizare          | Exemplu de formulă                 |
| ------------------------- | ---------------------------------- |
| **Nume complet**          | Prenume + " " + Nume               |
| **Sumă estimată**         | Sumă × Probabilitate               |
| **Zile până la scadență** | Data scadenței - Astăzi            |
| **Zile în stadiu**        | Astăzi - Data intrării în stadiu   |
| **Scor lead**             | Puncte bazate pe criterii multiple |

<Tip>
  Pentru un exemplu complet de urmărire a timpului în stadiile din pipeline, vezi [Urmărește cât timp rămân oportunitățile în fiecare stadiu](/l/ro/user-guide/views-pipelines/how-tos/track-time-in-stage).
</Tip>

## Formulă de bază: Concatenare

### Exemplu: Autocompletare nume complet

**Obiectiv**: Combină automat prenumele și numele într-un câmp de nume complet.

### Configurare

1. **Declanșator**: Înregistrarea este actualizată sau creată (Persoane)

2. **Filtru**: Verifică dacă prenumele sau numele s-a schimbat

3. **Acțiune de cod**:

```javascript theme={null}
export const main = async (params) => {
  const { firstName, lastName } = params;

  const fullName = [firstName, lastName]
    .filter(Boolean)
    .join(' ');

  return { fullName };
};
```

4. **Actualizează înregistrarea**: Setează Nume complet la `{{code.fullName}}`

## Formulă numerică: Sumă estimată

### Exemplu: Calculează venitul estimat

**Obiectiv**: Înmulțește suma oportunității cu probabilitatea pentru a obține suma estimată.

Vezi [Cum să afișezi suma estimată în pipeline](/l/ro/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) pentru fluxul de lucru complet.

### Configurare rapidă

1. **Declanșator**: Înregistrarea este actualizată (Oportunități, câmpul Sumă SAU Probabilitate)

2. **Acțiune de cod**:

```javascript theme={null}
export const main = async (params) => {
  const { amount, probability } = params;

  const expectedAmount = (amount || 0) * (probability || 0) / 100;

  return { expectedAmount };
};
```

3. **Actualizează înregistrarea**: Setează Suma estimată la `{{code.expectedAmount}}`

## Formulă de dată: Calculul zilelor

### Exemplu: Zile până la scadența sarcinii

**Obiectiv**: Calculează câte zile rămân până la data scadenței unei sarcini.

### Configurare

1. **Declanșator**: Înregistrarea este actualizată sau creată (Sarcini, câmp Data scadenței)

2. **Acțiune de cod**:

```javascript theme={null}
export const main = async (params) => {
  const { dueDate } = params;

  if (!dueDate) {
    return { daysUntilDue: null };
  }

  const due = new Date(dueDate);
  const today = new Date();
  const diffTime = due - today;
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return { daysUntilDue: diffDays };
};
```

3. **Actualizează înregistrarea**: Setează Zile până la scadență la `{{code.daysUntilDue}}`

<Note>
  Valorile negative indică sarcini întârziate. Poți folosi acest câmp pentru a filtra sau sorta sarcinile după urgență.
</Note>

## Formulă condițională: Scor lead

### Exemplu: Calculează scorul lead pe baza criteriilor

**Obiectiv**: Punctează lead-urile pe baza dimensiunii companiei, industriei și nivelului de implicare.

### Configurare

1. **Declanșator**: Înregistrarea este actualizată (Persoane sau Companii)

2. **Acțiune de cod**:

```javascript theme={null}
export const main = async (params) => {
  const { companySize, industry, hasEmail, hasPhone, source } = params;

  let score = 0;

  // Company size scoring
  if (companySize === 'Enterprise') score += 30;
  else if (companySize === 'Mid-Market') score += 20;
  else if (companySize === 'SMB') score += 10;

  // Industry scoring
  const targetIndustries = ['Technology', 'Finance', 'Healthcare'];
  if (targetIndustries.includes(industry)) score += 25;

  // Contact info scoring
  if (hasEmail) score += 10;
  if (hasPhone) score += 15;

  // Source scoring
  if (source === 'Referral') score += 20;
  else if (source === 'Website') score += 10;

  return { leadScore: score };
};
```

3. **Actualizează înregistrarea**: Setează Scor lead la `{{code.leadScore}}`

## Formulă de text: Extracția domeniului

### Exemplu: Extrage domeniul din e-mail

**Obiectiv**: Extrage și stochează automat domeniul e-mailului.

### Configurare

1. **Declanșator**: Înregistrarea este actualizată (Persoane, câmp E-mail)

2. **Acțiune de cod**:

```javascript theme={null}
export const main = async (params) => {
  const { email } = params;

  if (!email) return { domain: null };

  const domain = email.split('@')[1]?.toLowerCase();

  return { domain };
};
```

3. **Actualizează înregistrarea**: Setează câmpul Domeniu la `{{code.domain}}`

## Cele mai bune practici

### Performanță

* Declanșează doar la modificări relevante ale câmpurilor
* Folosește filtre pentru a omite înregistrările care nu necesită calcul
* Evită calcule complexe în fluxurile de lucru cu volum mare

### Gestionarea erorilor

* Verifică valorile null/undefined înainte de calcule
* Folosește valori implicite când lipsesc datele
* Returnează mesaje de eroare clare când calculele eșuează

### Testare

* Testează cu cazuri-limită (câmpuri goale, valori zero)
* Verifică manual calculele înainte de activare
* Monitorizează rulările fluxurilor de lucru pentru rezultate neașteptate

## Conexe

* [Cum să afișezi suma estimată în pipeline](/l/ro/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
* [Cum să urmărești timpul în stadiu](/l/ro/user-guide/views-pipelines/how-tos/track-time-in-stage)
* [Acțiuni ale fluxurilor de lucru](/l/ro/user-guide/workflows/capabilities/workflow-actions)
