DTOs ed Enums
In questa sezione sono presenti i DTOs (Data Transfer Objects) e gli Enums utilizzati nel modulo Shared - Anagrafiche. I DTOs definiscono la struttura dei dati in ingresso e in uscita dalle API, mentre gli Enums definiscono i valori consentiti per determinati campi.
🧬 DTOs
Utenti
UserDto (Entity DTO)
DTO che rappresenta un utente del sistema. I dati anagrafici, professionali e fiscali provengono dal default profile dell'utente. Include anche tutti i profili associati e i ruoli.
UserDto
DTO di output che rappresenta un utente completo del sistema. I dati anagrafici provengono dal default profile.
intstringNome completo dell'utente (calcolato)
stringNome (dal default profile)
stringCognome (dal default profile)
stringEmail univoca
?CarbonImmutablenullable - Data di verifica email
stringNome del ruolo del default profile (roles.name)
stringTitolo del ruolo del default profile (human readable)
stringAppartenenza del default profile (BelongingEnum)
?stringnullable - Sottotipo specifico del ruolo
?intnullable - FK to companies.id
?intnullable - FK to partner_branches.id
?boolnullable - Indica se è il manager principale
?stringnullable - Codice referral profilo (per consulenti), max:255
?stringnullable - Indirizzo domicilio, max:255
?stringnullable - Numero civico, max:50
?stringnullable - Città, max:255
?stringnullable - Provincia (codice), max:255
?stringnullable - CAP, max:20
?stringnullable - Paese (codice ISO 2), size:2
?floatnullable - Latitudine domicilio
?floatnullable - Longitudine domicilio
?stringnullable - Prefisso telefonico, max:20
?stringnullable - Numero di telefono, max:20
?stringnullable - Telefono completo (prefix + number)
?stringnullable - Data di nascita (YYYY-MM-DD)
?stringnullable - Città di nascita, max:255
?stringnullable - Codice fiscale, max:16
?stringnullable - Partita IVA, max:20
?stringnullable - Indirizzo sede legale, max:255
?stringnullable - Numero civico sede legale, max:50
?stringnullable - Città sede legale, max:255
?stringnullable - Provincia sede legale, max:255
?stringnullable - CAP sede legale, max:20
?stringnullable - Paese sede legale (ISO 2), size:2
?floatnullable - Latitudine sede legale
?floatnullable - Longitudine sede legale
?stringnullable - Nome rappresentante legale, max:255
?stringnullable - Cognome rappresentante legale, max:255
?stringnullable - Email rappresentante legale, max:255
?stringnullable - Prefisso tel. rappresentante legale, max:20
?stringnullable - Tel. rappresentante legale, max:20
?stringnullable - Data nascita rappresentante legale (YYYY-MM-DD)
?stringnullable - Città nascita rappresentante legale, max:255
?stringnullable - CF rappresentante legale, max:16
?stringnullable - P.IVA rappresentante legale, max:20
?stringnullable - Ragione sociale, max:255
?stringnullable - PEC, max:255
?stringnullable - Codice SDI, min:7, max:10
?stringnullable - Codice regime fiscale, max:255
?stringnullable - Aliquota IVA, max:255
?stringnullable - Codice natura IVA, max:255
?stringnullable - Tipo cassa previdenziale, max:255
?stringnullable - Aliquota cassa previdenziale, max:255
?stringnullable - IVA cassa previdenziale, max:255
?stringnullable - Codice natura IVA cassa, max:255
?stringnullable - IBAN, max:34
?stringnullable - Banca IBAN, max:255
?stringnullable - Beneficiario IBAN, max:255
?stringnullable - Codice rete, max:255
?stringnullable - Compagnia assicurativa, max:255
?stringnullable - Numero polizza, max:255
?stringnullable - Data scadenza polizza (YYYY-MM-DD)
?stringnullable - Massimale polizza, max:255
?stringnullable - Nome albo professionale, max:255
?stringnullable - Numero iscrizione albo, max:255
?stringnullable - Provincia albo, max:255
?stringnullable - Codice referral profilo (dal default profile), max:255
?CarbonImmutablenullable - Data creazione
?CarbonImmutablenullable - Data ultimo aggiornamento
Il UserDto include tutti i dati anagrafici, professionali e fiscali che provengono dal default profile dell'utente (is_default = true). Se l'utente ha più profili, viene utilizzato quello marcato come default.
I campi role, roleTitle, belonging, subtype, companyId, partnerBranchId, isMainManager e tutti i dati anagrafici/professionali provengono dal default profile.
ProfileDto (Entity DTO)
DTO che rappresenta un profilo del sistema. Un profilo contiene tutti i dati anagrafici, professionali, fiscali e di contatto. I dati fiscali e bancari provengono dalla relazione polimorfica invoice_data.
ProfileDto
DTO di output che rappresenta un profilo completo del sistema
int?intnullable - FK to users.id
stringNome completo (calcolato)
stringNome
stringCognome
stringEmail del profilo
?CarbonImmutablenullable - Data di verifica email dall'utente
?stringnullable - Nome del ruolo Spatie (roles.name)
?stringnullable - Titolo del ruolo (human readable)
?stringnullable - Appartenenza (BelongingEnum)
?stringnullable - Sottotipo specifico del ruolo
?intnullable - FK to companies.id
?intnullable - FK to partner_branches.id
?boolnullable - Indica se è il manager principale
?boolnullable - Indica se è il profilo di default per l'utente
?stringnullable - Indirizzo domicilio, max:255
?stringnullable - Numero civico, max:255
?stringnullable - Città, max:255
?stringnullable - Provincia (codice), max:5
?stringnullable - CAP
?stringnullable - Paese (codice ISO 2), size:2
?floatnullable - Latitudine domicilio
?floatnullable - Longitudine domicilio
?stringnullable - Prefisso telefonico
?stringnullable - Numero di telefono
?stringnullable - Telefono completo (prefix + number)
?stringnullable - Data di nascita (YYYY-MM-DD)
?stringnullable - Città di nascita, max:255
?stringnullable - Numero documento di identità
?stringnullable - Autorità di rilascio documento
?stringnullable - Data scadenza documento (YYYY-MM-DD)
?stringnullable - Codice fiscale (da invoice_data), max:16
?stringnullable - Partita IVA (da invoice_data), max:20
?stringnullable - Camera di Commercio
?stringnullable - Numero REA
?stringnullable - Codice ATECO
?stringnullable - Indirizzo sede legale, max:255
?stringnullable - Numero civico sede legale, max:255
?stringnullable - Città sede legale, max:255
?stringnullable - Provincia sede legale
?stringnullable - CAP sede legale
?stringnullable - Paese sede legale (ISO 2), size:2
?floatnullable - Latitudine sede legale
?floatnullable - Longitudine sede legale
?stringnullable - Nome rappresentante legale, max:255
?stringnullable - Cognome rappresentante legale, max:255
?stringnullable - Email rappresentante legale, max:255
?stringnullable - Prefisso tel. rappresentante legale
?stringnullable - Tel. rappresentante legale
?stringnullable - Data nascita rappresentante legale (YYYY-MM-DD)
?stringnullable - Città nascita rappresentante legale, max:255
?stringnullable - CF rappresentante legale, max:16
?stringnullable - P.IVA rappresentante legale, max:20
?stringnullable - Ragione sociale (da invoice_data), max:255
?stringnullable - PEC (da invoice_data), max:255
?stringnullable - Codice SDI (da invoice_data), min:7, max:7
?stringnullable - IBAN (da invoice_data), max:34
?stringnullable - Banca IBAN (da invoice_data), max:255
?stringnullable - Beneficiario IBAN (da invoice_data), max:255
?stringnullable - Codice rete, max:255
?stringnullable - Compagnia assicurativa, max:255
?stringnullable - Numero polizza, max:255
?stringnullable - Data scadenza polizza (YYYY-MM-DD)
?stringnullable - Massimale polizza, max:255
?stringnullable - Nome albo professionale, max:255
?stringnullable - Numero iscrizione albo, max:255
?stringnullable - Provincia albo, max:255
?stringnullable - Codice referral profilo (per consulenti), max:255
?CarbonImmutablenullable - Data creazione
?CarbonImmutablenullable - Data ultimo aggiornamento
I dati fiscali e bancari (fiscalCode, vatNumber, pec, sdiCode, taxRegimeCode, taxVatRate, iban, etc.) provengono dalla relazione polimorfica invoice_data. Questa tabella può essere associata a Profile o Company.
ProfileInputDto (Input DTO)
DTO utilizzato per la creazione e aggiornamento di un profilo. Gestisce anche la creazione/aggiornamento dell'utente associato e dei dati fiscali.
ProfileInputDto
DTO di input per create e update di profili. Gestisce anche user e invoice_data.
Optional|int|nullnullable - ID del profilo (per update)
Optional|int|nullnullable - ID utente esistente o null per creare nuovo utente
stringrequired, min:3, max:255
stringrequired, min:3, max:255
stringrequired, email, unique in users table
Optional|bool|nullnullable - Se impostare l'email come verificata
Optional|string|nullnullable - Nome ruolo Spatie, must exist in roles table
Optional|string|nullnullable - Sottotipo del ruolo, max:255
Optional|int|nullnullable - FK to companies.id (required se belonging = company)
Optional|int|nullnullable - FK to partner_branches.id (required se belonging = partner)
Optional|bool|nullnullable - Manager principale
Optional|bool|nullnullable - Se impostare come profilo di default
Optional|bool|nullnullable - Se il profilo deve avere accesso alla piattaforma (crea/collega user). Solo 'worker' può avere hasAccess=false
Optional|string|nullnullable - Password (required se hasAccess=true e shouldSetPassword=false, min:8)
Optional|bool|nullnullable - Se true, password nullable (utente la imposterà via email)
Optional|string|nullnullable - Indirizzo, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Numero civico, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Città, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Provincia, max:5 (required per alcuni ruoli)
Optional|string|nullnullable - CAP, regex:/^[A-Z0-9\s-]{3,10}$/i (required per alcuni ruoli)
Optional|string|nullnullable - Paese ISO 2, size:2 (required per alcuni ruoli)
Optional|float|nullnullable - Latitudine
Optional|float|nullnullable - Longitudine
Optional|string|nullnullable - Prefisso tel., min:1, max:20
Optional|string|nullnullable - Numero tel., validated with PhoneRule
Optional|string|nullnullable - Data di nascita (date format)
Optional|string|nullnullable - Città di nascita, max:255
Optional|string|nullnullable - Indirizzo sede legale, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Numero civico sede legale, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Città sede legale, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Provincia sede legale (required per alcuni ruoli)
Optional|string|nullnullable - CAP sede legale (required per alcuni ruoli)
Optional|string|nullnullable - Paese sede legale ISO 2, size:2 (required per alcuni ruoli)
Optional|float|nullnullable - Latitudine sede legale
Optional|float|nullnullable - Longitudine sede legale
Optional|string|nullnullable - Nome rappresentante legale, max:255
Optional|string|nullnullable - Cognome rappresentante legale, max:255
Optional|string|nullnullable - Email rappresentante legale, max:255
Optional|string|nullnullable - Prefisso tel. rapp. legale, min:1, max:20
Optional|string|nullnullable - Tel. rapp. legale, validated with PhoneRule
Optional|string|nullnullable - Data nascita rapp. legale (date format)
Optional|string|nullnullable - Città nascita rapp. legale, max:255
Optional|string|nullnullable - CF rapp. legale, max:16, validated with FiscalCodeRule
Optional|string|nullnullable - P.IVA rapp. legale, max:20, validated with VatNumberRule
Optional|string|nullnullable - Ragione sociale, max:255
Optional|string|nullnullable - Codice fiscale, max:16, validated with FiscalCodeRule
Optional|string|nullnullable - P.IVA, max:20, validated with VatNumberRule
Optional|string|nullnullable - PEC, email format, max:255 (required se sdiCode vuoto per alcuni ruoli)
Optional|string|nullnullable - Codice SDI, min:7, max:7, validated with SdiCodeRule (required se pec vuoto per alcuni ruoli)
nullable - Codice regime fiscale (required per alcuni ruoli)
nullable - Codice natura IVA (required quando taxVatRate = 0)
nullable - Tipo cassa previdenziale (required per alcuni ruoli)
nullable - Aliquota cassa (required quando taxPensionFundType != 'none')
nullable - IVA cassa (required quando taxPensionFundType != 'none')
nullable - Natura IVA cassa (required quando taxPensionFundVatRate = 0)
Optional|string|nullnullable - IBAN, max:34, validated with IbanRule (required per alcuni ruoli)
Optional|string|nullnullable - Banca IBAN, max:255
Optional|string|nullnullable - Beneficiario IBAN, max:255
Optional|string|nullnullable - Codice rete, max:255
Optional|string|nullnullable - Compagnia assicurativa, max:255
Optional|string|nullnullable - Numero polizza, max:255
Optional|string|nullnullable - Data scadenza polizza (date format)
Optional|string|nullnullable - Massimale polizza, max:255
Optional|string|nullnullable - Nome albo professionale, max:255
Optional|string|nullnullable - Numero iscrizione albo, max:255
Optional|string|nullnullable - Provincia albo, max:255
Optional|string|nullnullable - Codice referral profilo, regex:/^[A-Z0-9]{1,3}$/i, max:3 (required se belonging = partner)
I campi richiesti variano in base al ruolo selezionato. Ad esempio:
- Ruoli interni (admin, backoffice, etc.): richiedono i campi del domicilio
- Designer (singolo-progettista): richiedono domicilio e dati fiscali
- Designer (studio-progettazione): richiedono sede legale e dati fiscali
- Safety Officer: richiedono domicilio, sede legale e dati fiscali
- Worker: può avere
hasAccess=false(profilo senza utente) - Vedere
ProfileInputDto::getRoleSpecificRules()per i dettagli completi
Il ProfileInputDto gestisce automaticamente:
- User: Se
hasAccess=true, crea o aggiorna l'utente associato. SeuserIdè fornito, collega il profilo a un utente esistente. - Invoice Data: I dati fiscali e bancari vengono salvati nella tabella polimorfica
invoice_dataassociata al profilo.
CreateUserDto (Input DTO) - DEPRECATO
Questo DTO è stato deprecato. Utilizzare ProfileInputDto per creare nuovi profili e utenti.
UpdateUserDto (Input DTO) - DEPRECATO
Questo DTO è stato deprecato. Utilizzare ProfileInputDto per aggiornare profili e utenti esistenti.
DTOs Correlati
DTO utilizzato per la creazione di un nuovo utente. Estende AbstractUserInputDto e aggiunge la gestione della password.
CreateUserDto
DTO di input per la creazione di un nuovo utente
Optional|UploadedFile|nullnullable - File immagine avatar, max:5MB
stringrequired, min:3, max:255
stringrequired, min:3, max:255
stringrequired, email, unique in users table
stringrequired (o nullable se shouldSetPassword=true), min:8
stringrequired (o nullable se shouldSetPassword=true), min:8, must match password
?boolnullable - Se impostare l'email come verificata
bool|Optional|nullnullable - Se false, password richiesta; se true, password nullable
stringrequired, must exist in roles table
Optional|string|nullnullable - Sottotipo del ruolo, max:255
Optional|int|nullnullable - FK to companies.id
Optional|int|nullnullable - FK to partner_branches.id
Optional|bool|nullnullable - Manager principale
Optional|string|nullnullable - Codice referral profilo (per consulenti), max:255
Optional|string|nullnullable - Indirizzo, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Numero civico, max:50 (required per alcuni ruoli)
Optional|string|nullnullable - Città, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Provincia, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - CAP, regex:/^[A-Z0-9\s-]{3,10}$/i (required per alcuni ruoli)
Optional|string|nullnullable - Paese ISO 2, size:2 (required per alcuni ruoli)
Optional|float|nullnullable - Latitudine
Optional|float|nullnullable - Longitudine
Optional|string|nullnullable - Indirizzo sede legale, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Numero civico sede legale, max:50 (required per alcuni ruoli)
Optional|string|nullnullable - Città sede legale, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Provincia sede legale, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - CAP sede legale (required per alcuni ruoli)
Optional|string|nullnullable - Paese sede legale ISO 2, size:2 (required per alcuni ruoli)
Optional|float|nullnullable - Latitudine sede legale
Optional|float|nullnullable - Longitudine sede legale
Optional|string|nullnullable - Prefisso tel., min:1, max:20
Optional|string|nullnullable - Numero tel., min:9, max:20
Optional|string|nullnullable - Data di nascita (date format)
Optional|string|nullnullable - Città di nascita, max:255
Optional|string|nullnullable - Codice fiscale, max:16, validated with FiscalCodeRule
Optional|string|nullnullable - P.IVA, max:20, validated with VatNumberRule
Optional|string|nullnullable - Nome rappresentante legale, max:255
Optional|string|nullnullable - Cognome rappresentante legale, max:255
Optional|string|nullnullable - Email rappresentante legale, max:255
Optional|string|nullnullable - Prefisso tel. rapp. legale, min:1, max:20
Optional|string|nullnullable - Tel. rapp. legale, min:10, max:20
Optional|string|nullnullable - Data nascita rapp. legale (date format)
Optional|string|nullnullable - Città nascita rapp. legale, max:255
Optional|string|nullnullable - CF rapp. legale, max:16, validated with FiscalCodeRule
Optional|string|nullnullable - P.IVA rapp. legale, max:20, validated with VatNumberRule
Optional|string|nullnullable - Ragione sociale, max:255
Optional|string|nullnullable - PEC, email format, max:255 (required se sdiCode vuoto per alcuni ruoli)
Optional|string|nullnullable - Codice SDI, min:7, max:10, validated with SdiCodeRule (required se pec vuoto per alcuni ruoli)
Optional|string|nullnullable - Codice regime fiscale, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Aliquota IVA, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Codice natura IVA, max:255 (required quando taxVatRate = 0)
Optional|string|nullnullable - Tipo cassa previdenziale, max:255 (required per alcuni ruoli)
Optional|string|nullnullable - Aliquota cassa, max:255 (required quando taxPensionFundType valorizzato)
Optional|string|nullnullable - IVA cassa, max:255 (required quando taxPensionFundType valorizzato)
Optional|string|nullnullable - Natura IVA cassa, max:255 (required quando taxPensionFundVatRate = 0)
Optional|string|nullnullable - IBAN, max:34, validated with IbanRule (required per alcuni ruoli)
Optional|string|nullnullable - Banca IBAN, max:255
Optional|string|nullnullable - Beneficiario IBAN, max:255
Optional|string|nullnullable - Codice rete, max:255
Optional|string|nullnullable - Compagnia assicurativa, max:255
Optional|string|nullnullable - Numero polizza, max:255
Optional|string|nullnullable - Data scadenza polizza (date format)
Optional|string|nullnullable - Massimale polizza, max:255
Optional|string|nullnullable - Nome albo professionale, max:255
Optional|string|nullnullable - Numero iscrizione albo, max:255
Optional|string|nullnullable - Provincia albo, max:255
Optional|string|nullnullable - Codice referral, max:255
I campi richiesti variano in base al ruolo selezionato. Ad esempio:
- Ruoli interni (admin, backoffice, etc.): richiedono i campi del domicilio
- Designer (singolo-progettista): richiedono domicilio e dati fiscali
- Designer (studio-progettazione): richiedono sede legale e dati fiscali
- Safety Officer: richiedono domicilio, sede legale e dati fiscali
- Vedere
AbstractUserInputDto::getRoleSpecificRules()per i dettagli completi
UpdateUserDto (Input DTO)
DTO utilizzato per l'aggiornamento di un utente esistente. La password è opzionale.
UpdateUserDto
DTO di input per l'aggiornamento di un utente esistente. Ha gli stessi campi di CreateUserDto, con la differenza che la password è opzionale.
string|Optional|nulloptional - Password, min:8 (solo se si vuole cambiarla)
...Stessi campi di CreateUserDto - vedere CreateUserDto sopra per l'elenco completo
In UpdateUserDto, il campo password è opzionale (sometimes validation). Viene utilizzato solo quando si desidera modificare la password dell'utente. Se non fornito, la password esistente rimane invariata.
DTOs Correlati
AssigneeTypeDto
DTO che rappresenta un tipo di incaricato/figura professionale
intstringCodice univoco
stringNome del tipo di incaricato
Optional|null|intnullable - ID categoria merceologica associata
Optional|AssigneeTypeDtonullable - Tipo di incaricato genitore (relazione gerarchica)
Optional|array<AssigneeTypeDto>nullable - Tipi di incaricati figli
Optional|null|MerchandiseCategoryDtonullable - Categoria merceologica associata
MerchandiseCategoryDto
DTO che rappresenta una categoria merceologica
int?stringnullable - Codice categoria
stringNome della categoria
Optional|MerchandiseCategoryDtonullable - Categoria genitore (relazione gerarchica)
Optional|array<MerchandiseCategoryDto>nullable - Categorie figlie
Optional|array<AssigneeTypeDto>nullable - Tipi di incaricati associati
ProvinceDto
DTO che rappresenta una provincia italiana
intstringNome completo provincia
stringCodice provincia (es: 'RM', 'MI')
CountryDto
DTO che rappresenta una nazione
intstringCodice ISO 2 (es: 'IT', 'FR')
stringNome completo nazione
ReferralDto
DTO che rappresenta un referral (codice di riferimento) polimorfico. Può riferirsi a Profile (consulenti) o PartnerBranch.
intstringCodice referral univoco completo
stringTipo entità referral (Profile, PartnerBranch)
intID entità referral
?stringnullable - Data creazione (ISO 8601)
?stringnullable - Data aggiornamento (ISO 8601)
nullable - Entità referral completa (ProfileDto per consulenti, PartnerBranchDto per filiali)
Il referral_code è un codice completo generato automaticamente che combina:
- Per PartnerBranch:
{partner.referral_code}-{branch.referral_code}-000 - Per Profile:
{partner.referral_code}-{branch.referral_code}-{profile.referral_profile_code}
Il codice viene generato e aggiornato automaticamente dal sistema.
ManagerDto
DTO leggero che rappresenta un manager/utente (solo nome ed email)
stringNome completo del manager
stringEmail del manager
Company
CompanyDto (Entity DTO)
DTO di output che rappresenta un'azienda completa. I tipi sono sempre caricati automaticamente (eager loading).
CompanyDto
DTO di output che rappresenta un'azienda del sistema
intstringstringRagione sociale
?stringnullable, max:2000
?stringnullable - Indirizzo domicilio, max:255
?stringnullable - Numero civico domicilio, max:50
?stringnullable - CAP domicilio, max:20
?stringnullable - Città domicilio, max:255
?stringnullable - Provincia domicilio, max:255
?stringnullable - Codice paese domicilio ISO 2, size:2
?floatnullable - Latitudine domicilio
?floatnullable - Longitudine domicilio
stringIndirizzo sede legale, max:255
stringNumero civico sede legale, max:50
stringCittà sede legale, max:255
stringProvincia sede legale, max:255
stringCAP sede legale, max:20
stringCodice paese sede legale ISO 2, size:2
?floatnullable - Latitudine sede legale
?floatnullable - Longitudine sede legale
?stringnullable - Capitale sociale, max:255
?stringnullable - Codice rete, max:255
?stringnullable - CCIAA, max:255
?stringnullable - REA, max:255
?stringnullable - Codice ATECO, max:255
?stringnullable - Nome referente, max:255
?stringnullable - Cognome referente, max:255
?stringnullable - Email referente, max:255
?stringnullable - Prefisso tel. referente, max:255
?stringnullable - Telefono referente, max:255
?stringnullable - Nome rappresentante legale, max:255
?stringnullable - Cognome rappresentante legale, max:255
?stringnullable - Email rappresentante legale, max:255
?stringnullable - Prefisso tel. rappresentante legale, max:20
?stringnullable - Telefono rappresentante legale, max:20
?stringnullable - Data di nascita rappresentante legale (YYYY-MM-DD)
?stringnullable - Città di nascita rappresentante legale, max:255
?stringnullable - Codice fiscale rappresentante legale, max:16
?stringnullable - Partita IVA rappresentante legale, max:20
?stringnullable - Ragione sociale completa, max:255
?stringnullable - Codice fiscale azienda, max:16
?stringnullable - Partita IVA azienda, max:20
?stringnullable - PEC, max:255
?stringnullable - Codice SDI, min:7, max:10
?stringnullable - IBAN, max:34
?stringnullable - Nome banca IBAN, max:255
?stringnullable - Beneficiario IBAN, max:255
array<AssigneeTypeDto>Assignee types per ruolo MAIN (obbligatorio se subcontractRole = MAIN o BOTH)
array<AssigneeTypeDto>Assignee types per ruolo SUBCONTRACTOR (obbligatorio se subcontractRole = SUBCONTRACTOR o BOTH)
array<MerchandiseCategoryDto>Categorie merceologiche (obbligatorio se type include 'supplier')
array<ProvinceDto>Province di competenza (sempre obbligatorio, min: 1)
?stringnullable - Data creazione (ISO 8601)
?stringnullable - Data ultimo aggiornamento (ISO 8601)
CompanyInputDto (Input DTO)
DTO utilizzato per la creazione e aggiornamento di un'azienda. Supporta tipi multipli.
CompanyInputDto
DTO di input per create e update di aziende
string|Optional|nullnullable, uuid - Generato automaticamente se non fornito
Obbligatorio se type include 'company', nullable altrimenti
stringrequired, max:255 - Ragione sociale
string|Optional|nullnullable, max:2000
string|Optional|nullnullable, max:255 - Indirizzo domicilio (opzionale)
string|Optional|nullnullable, max:50 - Numero civico domicilio (opzionale)
string|Optional|nullnullable, max:20 - CAP domicilio (opzionale)
string|Optional|nullnullable, max:255 - Città domicilio (opzionale)
string|Optional|nullnullable, max:255 - Provincia domicilio (opzionale)
string|Optional|nullnullable, size:2 - Codice ISO 2 domicilio (opzionale)
float|Optional|nullnullable - Latitudine domicilio
float|Optional|nullnullable - Longitudine domicilio
stringrequired, max:255 - Indirizzo sede legale
stringrequired, max:50 - Numero civico sede legale
stringrequired, max:255 - Città sede legale
stringrequired, max:255 - Provincia sede legale
stringrequired, max:20 - CAP sede legale
stringrequired, size:2 - Codice ISO 2 sede legale
float|Optional|nullnullable - Latitudine sede legale
float|Optional|nullnullable - Longitudine sede legale
string|Optional|nullnullable, max:255 - Capitale sociale
string|Optional|nullnullable, max:255 - Codice rete
string|Optional|nullnullable, max:255 - CCIAA
string|Optional|nullnullable, max:255 - REA
string|Optional|nullnullable, max:255 - Codice ATECO
string|Optional|nullnullable, max:255 - Nome referente
string|Optional|nullnullable, max:255 - Cognome referente
string|Optional|nullnullable, email, max:255 - Email referente
string|Optional|nullnullable, max:255 - Prefisso tel. referente
string|Optional|nullnullable, max:255 - Telefono referente
string|Optional|nullnullable, max:255 - Nome rappresentante legale
string|Optional|nullnullable, max:255 - Cognome rappresentante legale
string|Optional|nullnullable, email, max:255 - Email rappresentante legale
string|Optional|nullnullable, min:1, max:20 - Prefisso tel. rappresentante legale
string|Optional|nullnullable, min:10, max:20 - Telefono rappresentante legale
string|Optional|nullnullable, date - Data nascita rappresentante legale (YYYY-MM-DD)
string|Optional|nullnullable, max:255 - Città nascita rappresentante legale
string|Optional|nullnullable, max:16, FiscalCodeRule - CF rappresentante legale
string|Optional|nullnullable, max:20, VatNumberRule - P.IVA rappresentante legale
string|Optional|nullnullable, max:16, FiscalCodeRule - Codice fiscale azienda
string|Optional|nullnullable, max:20, VatNumberRule - Partita IVA azienda
string|Optional|nullnullable, email, max:255 - PEC (required se sdiCode vuoto)
string|Optional|nullnullable, min:7, max:10, SdiCodeRule - Codice SDI (required se pec vuoto)
nullable - Natura IVA (valorizzabile solo se taxVatRate = 0)
nullable - Aliquota cassa (required se taxPensionFundType != 'none')
nullable - IVA cassa (required se taxPensionFundType != 'none')
nullable - Natura IVA cassa (required se taxPensionFundVatRate = 0)
stringrequired, max:34, IbanRule - IBAN
string|Optional|nullnullable, max:255 - Nome banca IBAN
string|Optional|nullnullable, max:255 - Beneficiario IBAN
array<int>|OptionalArray di ID assignee types - Obbligatorio (min:1) se subcontractRole = MAIN o BOTH
array<int>|OptionalArray di ID assignee types - Obbligatorio (min:1) se subcontractRole = SUBCONTRACTOR o BOTH
array<int>|OptionalArray di ID categorie merceologiche - Obbligatorio (min:1) se type include 'supplier'
array<int>required, array, min:1 - Array di ID province (sempre obbligatorio)
Il campo types accetta un array di valori enum o stringhe.
Validazioni condizionali:
provinceIds: sempre richiesto (min: 1)subcontractRole: richiesto setypesinclude 'company'assigneeIds: richiesto (min: 1) sesubcontractRole= 'main' o 'both'subAssigneeIds: richiesto (min: 1) sesubcontractRole= 'subcontractor' o 'both'merchandiseCategoryIds: richiesto (min: 1) setypesinclude 'supplier'
Esempio per company tipo BOTH:
{
"types": ["company"],
"subcontractRole": "both",
"name": "Acme SpA",
"assigneeIds": [1, 2, 3],
"subAssigneeIds": [4, 5],
"provinceIds": [1, 2],
...
}
Esempio per supplier:
{
"types": ["supplier"],
"name": "Fornitore XYZ",
"merchandiseCategoryIds": [10, 11, 12],
"provinceIds": [1, 2, 3],
...
}
Partner
PartnerDto (Entity DTO)
DTO di output che rappresenta un partner del sistema (banca, CAF, CRECO, altro).
PartnerDto
DTO di output che rappresenta un partner del sistema
intstringNome del partner
stringCodice referral univoco (3 caratteri)
?floatnullable - Prezzo per report, decimal(10,2)
?floatnullable - Prezzo APE, decimal(10,2)
?stringnullable - Note
?stringnullable - Data creazione (ISO 8601)
?stringnullable - Data ultimo aggiornamento (ISO 8601)
PartnerInputDto (Input DTO)
DTO utilizzato per la creazione e aggiornamento di un partner.
PartnerInputDto
DTO di input per create e update di partner
stringrequired, max:255 - Nome del partner
stringrequired, regex:/^[A-Z0-9]{3}$/i, size:3, unique - Codice referral (3 caratteri alfanumerici)
?floatnullable, numeric, decimal:0,2 - Prezzo per report
?floatnullable, numeric, decimal:0,2 - Prezzo APE
?stringnullable - Note
UploadedFile|Optional|nullnullable - File immagine avatar, mimes:jpeg,jpg,png,gif,webp, max:5MB
bool|Optionaloptional, default:false - Se true, elimina l'avatar esistente
PartnerBranchDto (Entity DTO)
DTO di output che rappresenta una filiale partner. Supporta struttura gerarchica ricorsiva.
PartnerBranchDto
DTO di output che rappresenta una filiale partner con supporto ricorsivo
intintFK to partners.id
?intnullable - FK to partner_branches.id (filiale genitore)
stringNome della filiale
?stringnullable - CCIAA
?stringnullable - Orari di lavoro
?stringnullable - Indirizzo completo calcolato
?stringnullable - Indirizzo, max:255
?stringnullable - Numero civico, max:255
?stringnullable - Città, max:255
?stringnullable - Provincia (codice), size:2
?stringnullable - CAP, max:10
?stringnullable - Paese (codice ISO 2), size:2
?floatnullable - Latitudine
?floatnullable - Longitudine
?stringnullable - Codice fiscale, max:16
?stringnullable - Partita IVA, max:11
?stringnullable - PEC, email, max:255
?stringnullable - Codice SDI, max:7
?stringnullable - IBAN, max:34
?stringnullable - Nome banca, max:255
?stringnullable - Beneficiario, max:255
?stringnullable - Codice rete, max:255
?stringnullable - Data creazione (ISO 8601)
?stringnullable - Data ultimo aggiornamento (ISO 8601)
?stringnullable - Codice referral della filiale (4 caratteri)
Il campo children contiene le sotto-filiali in modo ricorsivo. Ogni sotto-filiale può a sua volta avere dei children, permettendo di rappresentare una gerarchia completa di filiali.
PartnerBranchInputDto (Input DTO)
DTO utilizzato per la creazione e aggiornamento di una filiale partner.
PartnerBranchInputDto
DTO di input per create e update di filiali partner
intrequired, exists:partners,id - ID del partner
?intnullable, exists:partner_branches,id - ID filiale genitore
stringrequired, max:255 - Nome della filiale
stringrequired, regex:/^[A-Z0-9]{4}$/i, size:4 - Codice referral (4 caratteri alfanumerici)
?stringnullable, max:255 - CCIAA
?stringnullable, max:255 - Orari di lavoro
?stringnullable, max:255 - Indirizzo
?stringnullable, max:255 - Numero civico
?stringnullable, max:255 - Città
?stringnullable, size:2 - Provincia (codice)
?stringnullable, max:10 - CAP
?stringnullable, size:2 - Paese (codice ISO 2)
?floatnullable, between:-90,90 - Latitudine
?floatnullable, between:-180,180 - Longitudine
?stringnullable, max:16 - Codice fiscale
?stringnullable, max:11 - Partita IVA
?stringnullable, email, max:255 - PEC
?stringnullable, max:7 - Codice SDI
?stringnullable, max:34 - IBAN
?stringnullable, max:255 - Nome banca
?stringnullable, max:255 - Beneficiario
?stringnullable, max:255 - Codice rete
Gestione Permessi
PermissionInputDto
stringrequired, max:255
stringrequired, max:1000
RoleDto
intstringSpatie role name
stringGuard name for role
?stringnullable, human readable role title
boolWhether role is system protected
RolePermissionUpdateDto
stringrequired, permission name
boolrequired, true to grant, false to revoke
intrequired, FK to roles.id
RolePermissionsUpdateRequestDto
RolePermissionsUpdateResponseDto
intNumber of successful updates
intNumber of failed updates
array<string>Array of error messages
intTotal number of updates processed
RolePermissionsMappingActionDto
intPermission ID
stringPermission system name
?stringnullable, permission display title for UI
stringPermission action identifier (e.g., 'view', 'create')
?stringnullable, permission description
?intnullable, display order for sorting
array<int>Array of role IDs that have this permission
RolePermissionsMappingResourceDto
stringResource name (e.g., 'users', 'companies')
?stringnullable, resource display title for UI
RolePermissionsMappingModuleDto
stringHuman readable module name
stringModule identifier key
RolePermissionsMappingDto
array<ModuleConfigDto>Array of module configuration objects
Tipi di assegnatari e categorie merceologiche
AssigneeTypeDto
intstringstringfloatMerchandiseCategoryDto
Company Subcontracts
CompanySubcontractDto (Entity DTO)
DTO di output che rappresenta un subcontratto tra due aziende.
CompanySubcontractDto
DTO di output che rappresenta un subcontratto aziendale
intID del subcontratto
intID dell'azienda che offre il subcontratto
intID dell'azienda subappaltatrice
?stringnullable - Data creazione (ISO 8601)
?stringnullable - Data ultimo aggiornamento (ISO 8601)
?stringnullable - Data ultimo cambio status (ISO 8601)
CompanySubcontractCreateDto (Input DTO)
DTO utilizzato per creare uno o più subcontratti.
CompanySubcontractCreateDto
DTO di input per creare subcontratti
array<int>required, array, min:1 - Array di ID aziende subappaltatrici. Ogni ID deve: esistere nella tabella companies, avere tipo 'company', essere diverso dall'azienda principale
- Ogni azienda subappaltatrice deve essere di tipo
company - Non è possibile auto-riferimento (company_id ≠ subcontractor_company_id)
- È possibile specificare più aziende in un'unica richiesta
CompanySubcontractUpdateStatusDto (Input DTO)
DTO utilizzato per aggiornare lo status di un subcontratto.
CompanySubcontractUpdateStatusDto
DTO di input per aggiornare lo status di un subcontratto
- È possibile cambiare lo status solo a
acceptedorejected - Quando lo status cambia, il campo
statusChangedAtviene aggiornato automaticamente - Non è possibile tornare a
pendingdopo aver accettato o rifiutato
🎛️ Enums
Enums Company
CompanyTypeEnum
stringTipi di azienda disponibili nel sistema. Un'azienda può avere uno o più tipi contemporaneamente.
companyImpresasupplierFornitoredesignerProgettistaUn'azienda può avere più tipi contemporaneamente. Ad esempio, un'azienda può essere sia "company" che "supplier".
SubcontractRoleEnum
stringRuolo dell'azienda nella gestione dei subcontratti. Indica se l'azienda opera come appaltatore principale, subappaltatore o entrambi.
mainAzienda PrincipalesubcontractorSubappaltatorebothPrincipale e SubappaltatoreIl campo subcontractRole è obbligatorio quando il tipo dell'azienda include company. Per altri tipi (supplier, designer) è opzionale.
AssigneeRoleEnum
stringRuolo specifico degli assignee types all'interno di una company. Utilizzato nella tabella pivot company_has_assignee_types per distinguere tra assignee per il ruolo principale e per il subappalto.
mainAppaltatore PrincipalesubcontractorSubappaltatoreUna company con subcontractRole = BOTH può avere set diversi di assignee types:
- assignees (role = MAIN): assignee types quando opera come appaltatore principale
- subAssignees (role = SUBCONTRACTOR): assignee types quando opera come subappaltatore
Esempio pratico:
{
"subcontractRole": "both",
"assigneeIds": [1, 2, 3], // Quando è MAIN
"subAssigneeIds": [3, 4, 5] // Quando è SUBCONTRACTOR
}
Subcontratti
SubcontractStatusEnum
stringStatus possibili di un subcontratto tra due aziende. Riflette lo stato della richiesta di subappalto.
pendingIn attesaacceptedAccettatorejectedRifiutato- Un subcontratto inizia sempre con status
pending - Può essere aggiornato solo a
acceptedorejected(non si può tornare apending) - Il campo
statusChangedAtviene popolato automaticamente quando lo status cambia
Enums Utente
BelongingEnum
stringinternalInternoexternalEsternocompanyImpresasupplierFornitorepartnerPartnerproject_referentReferente ProgettoEnums Partner
PartnerTypeEnum
stringTipi di partner disponibili nel sistema. Ogni partner ha un solo tipo.
bankBancacafCAFcrecoCRECOotherAltroEnums Fiscali
Enum utilizzati per i dati fiscali degli utenti professionisti.
TaxRegimeEnum
stringRegimi fiscali italiani per fatturazione elettronica (codici ufficiali SDI)
RF01OrdinarioRF02Contribuenti minimiRF04Agricoltura e attività connesse e pescaRF05Vendita sali e tabacchiRF06Commercio dei fiammiferiRF07EditoriaRF08Gestione di servizi di telefonia pubblicaRF09Rivendita di documenti di trasporto pubblico e di sostaRF10Intrattenimenti, giochi e altre attivitàRF11Agenzie di viaggi e turismoRF12AgriturismoRF13Vendite a domicilioRF14Rivendita di beni usati, oggetti d'arte, antiquariatoRF15Agenzie di vendite all'astaRF16IVA per cassa P.A.RF17IVA per cassaRF18AltroRF19ForfettarioVatRateEnum
stringAliquote IVA disponibili per professionisti italiani
2222%1010%55%44%00% (Esente)VatNatureEnum
stringCodici natura IVA (da usare quando aliquota IVA è 0% o esente). Basato sui codici FatturaPA ufficiali.
N1N1 - Esclusa ex art. 15 del DPR 633/72N2.1N2.1 - Non soggette a IVA ai sensi degli artt. da 7 a 7-septiesN2.2N2.2 - Non soggette - altri casiN3.1N3.1 - Non imponibili - esportazioniN3.2N3.2 - Non imponibili - cessioni intracomunitarieN3.3N3.3 - Non imponibili - cessioni verso San MarinoN3.4N3.4 - Non imponibili - operazioni assimilate alle cessioni all'esportazioneN3.5N3.5 - Non imponibili - a seguito di dichiarazioni d'intentoN3.6N3.6 - Non imponibili - altre operazioni che non concorrono al plafondN4N4 - EsentiN5N5 - Regime del margine / IVA non espostaN6.1N6.1 - Inversione contabile - cessione di rottamiN6.2N6.2 - Inversione contabile - cessione oro/argentoN6.3N6.3 - Inversione contabile - subappalto edileN6.4N6.4 - Inversione contabile - cessione fabbricatiN6.5N6.5 - Inversione contabile - cessione telefoni cellulariN6.6N6.6 - Inversione contabile - prodotti elettroniciN6.7N6.7 - Inversione contabile - prestazioni ediliziaN6.8N6.8 - Inversione contabile - settore energeticoN6.9N6.9 - Inversione contabile - altri casiN7N7 - IVA assolta in altro stato UEPensionFundTypeEnum
stringTipi di cassa previdenziale italiana per professionisti. Basato sui codici ufficiali SDI (TC01-TC22).
noneNessuna cassa previdenzialeCNPAFCassa nazionale previdenza e assistenza avvocatiCPDCCassa previdenza dottori commercialistiCPAGCassa previdenza e assistenza geometriCNPAIALPCassa nazionale previdenza ingegneri e architettiCNNCassa nazionale del notariatoCNPARPCCassa nazionale previdenza ragionieri e periti commercialiENASARCOEnte nazionale assistenza agenti e rappresentantiENPACLEnte nazionale previdenza consulenti del lavoroENPAMEnte nazionale previdenza mediciENPAFEnte nazionale previdenza farmacistiENPAVEnte nazionale previdenza veterinariENPAIAEnte nazionale previdenza impiegati agricolturaFPIISAMFondo previdenza impiegati spedizioni marittimeINPGIIstituto nazionale previdenza giornalistiONAOSIOpera nazionale assistenza orfani sanitariCASAGITCassa assistenza giornalistiEPPIEnte previdenza periti industrialiEPAPEnte previdenza e assistenza pluricategorialeENPABEnte nazionale previdenza biologiENPAPIEnte nazionale previdenza professione infermieristicaENPAPEnte nazionale previdenza psicologiINPSINPS