## id
doc_portal_clients

## nom
Portal de Clients — mecanisme detallat

## descripcio
Consulta aquest document quan calgui explicar amb precisió com s'autentica un client al Portal,
com es genera i caduca un enllaç de pagament, quins requisits previs bloquegen un pagament, o com
es relaciona tècnicament el Portal amb FiskAppCloud. No és l'explicació general, que cobreix
`flux_portal_clients`.

## contingut
### Una aplicació separada, no una secció de FiskAppCloud

El Portal de Clients és un projecte web propi, diferent de FiskAppCloud (WebAppPGC). Es connecta
directament a la mateixa base de dades de l'empresa (per empresa, igual que FiskAppCloud resol la
connexió segons la subscripció), però és una aplicació independent amb el seu propi domini/adreça
per empresa.

### Les dues vies d'accés

- **Sessió completa**: el client introdueix el seu identificador fiscal (NIF/CIF); si coincideix
  amb un contacte reconegut, rep un codi d'un sol ús per correu. En introduir-lo correctament,
  queda identificat per a tota la sessió i pot veure totes les seves factures pendents.
- **Enllaç de pagament públic**: un enllaç generat per a una factura concreta, sense necessitat
  d'identificar-se — el propi enllaç (un testimoni verificat, no un identificador previsible) fa
  de credencial. Té data de caducitat i es pot revocar; deixa de funcionar si la factura ja està
  totalment pagada.

### Com es paga

Pagar mai és un simple "marcar com a pagat": sempre és una redirecció real —
- Targeta o Bizum: es redirigeix a una pàgina de pagament de Redsys (TPV Virtual), exactament amb
  el mateix mecanisme que el cobrament per TPV des de la pròpia factura de FiskAppCloud —
  operació reservada primer, cobrament confirmat després de manera asíncrona en rebre la
  notificació del banc. Vegeu `doc_tpv_virtual_cobrament` per al detall d'aquest procés.
- Transferència: només es mostren les dades bancàries de l'empresa; no hi ha cap confirmació
  automàtica — el cobrament s'haurà de registrar per una altra via un cop rebuda la transferència.

El Portal mai crea el `RegCobrament` directament — sempre passa pel mateix camí que el TPV Virtual
(l'enllaç de pagament genera una operació; la confirmació arriba per una notificació de servidor a
servidor cap a FiskAppCloud, no cap al Portal). Per això un pagament fet des del Portal queda
també marcat com a vingut d'una via externa i **no es pot eliminar** — només "Retornar", igual que
un TPV Virtual iniciat des de la mateixa factura.

### Requisits previs, i on es bloquegen

- **El Portal ha d'estar activat per a l'empresa** — si no ho està, cap pantalla del Portal
  respon per a aquella empresa.
- **El client ha de tenir un mitjà de pagament habitual actiu configurat per a l'activitat
  concreta de la factura**, i aquest mitjà ha d'estar habilitat per pagament puntual a nivell
  d'empresa o d'activitat. Sense això, l'enllaç ni es genera — vegeu `flux_enllac_pagament_factura`
  i `doc_enllac_pagament_factura` per a la cadena completa de comprovacions (inclosa l'exclusió
  explícita de "Domiciliació Bancària", que mai genera enllaç).
- **Si es paga amb targeta o Bizum, cal un TPV Virtual assignat i actiu per a aquella activitat**
  — es torna a comprovar just abans de crear l'operació de pagament, per si la configuració ha
  canviat entre que es va carregar la pàgina i que el client prem "Pagar".
- **Si el mitjà exigeix domiciliació i encara no hi ha un mandat SEPA acceptat**, el Portal exigeix
  acceptar-lo explícitament abans de poder continuar amb el pagament — es torna a validar en
  confirmar l'acceptació del mandat, no només en mostrar-lo.

## comprovacions
Si un usuari pregunta si el Portal de Clients és una part de FiskAppCloud: aclareix que és una
aplicació separada, amb la seva pròpia adreça, encara que comparteixi dades amb FiskAppCloud.

Si un client diu que ha pagat des del Portal però el cobrament no apareix: el mecanisme és el
mateix que el TPV Virtual — la confirmació és asíncrona, no immediata.

Si un usuari pregunta per què no pot eliminar un cobrament fet des del Portal: mateixa raó que un
de TPV Virtual — ve confirmat per una via de pagament externa.
