# Firme și module

Cum adaugi o firmă pe platformă, ce date legale are și cum îi activezi doar modulele de care are nevoie.

## O platformă, mai multe firme

Platforma este construită de la început pentru mai mulți clienți (multi-tenant). Fiecare client este o **firmă** în tabelul `firme`, cu:

| Câmp | Ce conține |
| --- | --- |
| `nume`, `cui`, `reg_com` | datele legale; `cui` este unic pe toată platforma |
| `sediu` | adresa sediului social |
| `tip` | `restaurant`, `agentie` sau `gol` (firmă nouă, fără profil) |
| `tema`, `logo` | aspectul aplicației pentru oamenii firmei |
| conturi bancare | gestionate din **Datele firmei** |

> [!WARNING]
> Dacă încerci să salvezi un CUI pe care îl are deja altă firmă de pe platformă, schimbarea este refuzată. Două firme nu pot avea același CUI.

## Modulele unei firme

Tabelul `module_firma` ține, pe fiecare firmă, lista modulelor și starea lor (`activ` sau nu). Un modul activ:

- apare în meniul din stânga pentru oamenii cu acces la el;
- la agenție, deschide și rutele API ale modulului pentru firma respectivă.

Un modul inactiv dispare din meniu. Pe API, drepturile le decide rolul; doar agenția verifică în plus, la fiecare cerere, că modulul e activ. Datele deja scrise rămân în baza de date și reapar când modulul este reactivat.

## Module legate de tipul firmei

Tipul firmei și lista ei de module decid meniul din stânga. Câteva reguli sunt scrise direct în cod:

| Funcție | Regula |
| --- | --- |
| Backstage | aparține firmei agenției (Ilustromania); orice altă firmă din sesiune primește `403` |
| Factură din bon | butonul apare în aplicație doar administratorului și doar la firmele de tip `restaurant`; serverul verifică separat dreptul de emitere |
| Firmă de tip `gol` | pornește fără profil; meniul se construiește din modulele activate |

Celelalte module (facturi, echipă, de făcut, seif) nu au o regulă legată de tipul firmei.

## Pași pentru o firmă nouă

1. Administratorul platformei creează firma cu datele legale și tipul ei.
2. Activează modulele de care firma are nevoie.
3. Invită primul administrator al firmei (vezi [Conturi și invitații](#conturi-si-invitatii)).
4. Administratorul firmei își invită apoi echipa și le dă roluri.
