# Architettura

Questa pagina spiega l'architettura tecnica di WCPOS per sviluppatori e utenti avanzati.

## Sistema a Due Parti[​](#two-part-system "Collegamento diretto a Sistema a Due Parti")

WCPOS è progettato come un sistema a due parti:

1. **Plugin PHP:** Ospitato sul tuo server, questo è un plugin relativamente piccolo che estende l'[API REST di WooCommerce](/it/reference/wc-rest-api.md).

2. **Client JavaScript:** Questo viene eseguito localmente nel tuo browser o nell'app desktop, e in seguito nelle app iOS e Android.

Puoi pensarlo come due mondi separati:

* Il *mondo PHP* è dove avviene la gestione dei dati utilizzando WordPress e WooCommerce.
* Il *mondo JavaScript* replica localmente il tuo negozio WooCommerce, ottimizzato per ricerche veloci e utilizzo offline.

SVG not found

## Sincronizzazione dei Dati[​](#data-synchronization "Collegamento diretto a Sincronizzazione dei Dati")

I dati vengono recuperati da WooCommerce utilizzando l'[API REST di WooCommerce](https://woocommerce.github.io/woocommerce-rest-api-docs/). Questo significa che il POS deve scaricare ogni prodotto, variazione, categoria di prodotto, cliente, aliquota fiscale e altro per memorizzarli localmente.

Sebbene questo possa richiedere tempo inizialmente, una volta scaricati, sono disponibili istantaneamente senza la necessità di recuperare continuamente dal server.

### Cosa Viene Sincronizzato?[​](#what-gets-synced "Collegamento diretto a Cosa Viene Sincronizzato?")

* Prodotti e variazioni
* Categorie e tag dei prodotti
* Clienti
* Aliquote fiscali e classi fiscali
* Gateway di pagamento (per il checkout)
* Ordini (per la cronologia degli ordini in Pro)

### Strategia di Sincronizzazione[​](#sync-strategy "Collegamento diretto a Strategia di Sincronizzazione")

WCPOS utilizza una strategia di sincronizzazione incrementale:

1. **Sincronizzazione iniziale:** Scarica tutti i dati al primo caricamento
2. **Aggiornamenti incrementali:** Recupera solo le modifiche dall'ultima sincronizzazione
3. **Sincronizzazione in background:** Controlla periodicamente gli aggiornamenti
4. **Sincronizzazione manuale:** L'utente può attivare una sincronizzazione in qualsiasi momento

## Vantaggi e Svantaggi dell'Architettura[​](#architecture-pros-and-cons "Collegamento diretto a Vantaggi e Svantaggi dell'Architettura")

| Buono 😊                                                             | Cattivo 😟                                                         |
| -------------------------------------------------------------------- | ------------------------------------------------------------------ |
| La ricerca di dati locali è istantanea                               | Mantenere i dati sincronizzati è una sfida                         |
| Dati memorizzati nella cache disponibili offline                     | Limitato dall'API REST di WooCommerce                              |
| Possibilità di creare migliori app native per desktop, iOS e Android | I temi e i ganci di WordPress non possono personalizzare l'app POS |

## Database Locale[​](#local-database "Collegamento diretto a Database Locale")

Il client JavaScript memorizza i dati in IndexedDB, un database basato su browser. Questo fornisce:

* **Persistenza:** I dati sopravvivono ai riavvii del browser
* **Prestazioni:** Query rapide senza latenza di rete
* **Navigazione offline:** I dati memorizzati nella cache rimangono accessibili senza internet

## Architettura del Checkout[​](#checkout-architecture "Collegamento diretto a Architettura del Checkout")

Il processo di checkout utilizza un iframe/webview che carica la pagina WooCommerce Order Pay. Questo approccio:

* **Sfrutta i gateway di pagamento esistenti:** Qualsiasi gateway di pagamento WooCommerce può funzionare nel POS
* **Mantiene la sicurezza:** L'elaborazione dei pagamenti avviene attraverso l'infrastruttura sicura di WooCommerce
* **Riduce la complessità:** Non è necessario re-implementare le integrazioni dei gateway di pagamento

## Estensioni API[​](#api-extensions "Collegamento diretto a Estensioni API")

Il plugin PHP estende l'API REST di WooCommerce con endpoint aggiuntivi per funzionalità specifiche del POS. Vedi [API REST di WooCommerce](/it/reference/wc-rest-api.md) per dettagli.

***
