Guida per lo sviluppatore
FileMaker, collegato
a Lakshmi Courses.
FileMaker invia centri, edizioni e listini, poi recupera ordini e rimborsi e ne conferma l’acquisizione. Tutte le connessioni partono dalla rete aziendale: il gestionale non deve essere raggiungibile dall’esterno.
/wp-json/lakshmi/v1/sync/customers/wp-json/lakshmi/v1/sync/courses/wp-json/lakshmi/v1/sync/price-lists/wp-json/lakshmi/v1/events?limit=100/wp-json/lakshmi/v1/events/ackDemo, non vendita reale. Sono disponibili catalogo, account verificati, prezzi per fascia, pacchetti, partecipanti, checkout simulato, ordini, rimborsi ed eventi. Corsi, persone e importi sono fittizi: non derivano dal calendario commerciale Lakshmi. Nessun addebito, nessuna email esterna da staging. Le API non sono ancora collaudate dal FileMaker aziendale.
Proposta tecnica Happy Brain. Definiamo i dati e le operazioni necessari al sito; lo sviluppatore FileMaker predispone la mappatura nel gestionale. I contratti sono implementati per il collaudo, mentre condizioni commerciali, fiscalità e avvio reale richiedono conferma. Vedi proposte e punti da confermare.
Un centro, un codice, un account
Il codice FileMaker identifica il centro acquirente, non una partecipante. Il collegamento all’account è verificato separatamente e non viene creato dalla sync.
FileMaker → WordPress
WordPress mantiene una copia dei dati commerciali. Nessuna chiamata verso il gestionale al login o al checkout; nessuna verifica dei posti disponibili.
Prima connessione
- Partire dagli esempi proposti. Usare i JSON sintetici di questa guida per il primo test tecnico. Il developer FileMaker mappa i campi sorgente su questo contratto; successivamente verifica la mappatura con esempi anonimizzati. I valori
DEMO-*edemo_*sono fittizi, non fasce commerciali approvate. - Ricevere le credenziali tecniche. Richiedere username e Application Password dedicati tramite un canale sicuro. Nessuna credenziale è inclusa in questa pagina; la loro emissione è un passaggio separato.
- Inviare un centro sintetico dalla rete aziendale. Usare l’URL HTTPS esatto riportato sotto e verificare la risposta per elemento. Ripetere lo stesso invio: deve risultare
unchanged.
https://staging-corsi.lakshmi.it/wp-json/lakshmi/v1/sync/customers
Il dominio definitivo di produzione non è ancora attivo per questa integrazione. La raggiungibilità dall’installazione FileMaker aziendale deve ancora essere collaudata.
Autenticazione e sicurezza
Utilizzare HTTP Basic su HTTPS: username tecnico e WordPress Application Password, distinta dalla password ordinaria dell’account. L’utente deve avere il ruolo ristretto lakshmi_integrator e il permesso lakshmi_sync.
- Cookie WordPress, sessioni dell’amministratore e nonce REST non autorizzano la sincronizzazione.
- Verificare sempre il certificato TLS. Non usare opzioni che disabilitano la verifica e non inviare credenziali a URL HTTP.
- Non inserire password in URL, script condivisi, log o schermate diagnostiche. Non seguire automaticamente redirect verso altri indirizzi.
- Le credenziali possono essere revocate e sostituite. Un errore 401 richiede di controllarle, non di riprovare senza limiti.
La documentazione è pubblicamente raggiungibile tramite il link, ma non invia richieste API, non raccoglie credenziali e non contiene dati reali. L’indicizzazione è disabilitata; questo non equivale a una protezione tramite password.
Sincronizzare i centri
Inviare Content-Type: application/json. Il corpo contiene una sola proprietà, customers: un array di 1–100 record completi, per un massimo complessivo di 256 KiB / 262144 byte, inclusi spazi e codifica JSON.
{
"customers": [
{
"filemaker_code": "DEMO-FM-000123",
"name": "DEMO Centro Aurora",
"email": "aurora@example.test",
"price_tier": "demo_contracted",
"is_contractor": true,
"enabled": true,
"revision": 1
}
]
}
| Campo obbligatorio | Tipo | Regola |
|---|---|---|
filemaker_code | string | Identificatore testuale case-sensitive. Zeri iniziali preservati: 000123 e 123 sono distinti. Non inviare un numero. |
name | string | Nome non vuoto dopo trim, massimo 200 caratteri; nessun carattere di controllo. Il server rimuove gli spazi iniziali/finali prima di validare la lunghezza. |
email | string | Email di riferimento valida, normalizzata con trim e conversione in minuscolo. Validazione effettiva WordPress is_email; nessuna verifica di proprietà o associazione automatica. |
price_tier | string | Codice commerciale, non un prezzo. Valori demo non rappresentano fasce di produzione concordate; nessun fallback automatico al listino standard. |
is_contractor | boolean | Stato contrattista del centro. JSON true/false, non stringhe né 0/1. |
enabled | boolean | Centro abilitato nel gestionale: il checkout dimostrativo richiede un account collegato, centro abilitato e fascia con un’offerta esatta. |
revision | integer | Revisione positiva crescente per centro, accettata solo se decodificata come intero PHP. Numeric string e JSON 1.0/1e0 vengono rifiutati. Si raccomanda un contatore <=9007199254740991 per interoperabilità; il server supporta interi PHP a 64 bit. |
Identificativi sempre testuali. "000123" e "123" sono due codici diversi, così come "AbC" e "abc". Il codice non viene trimmato. Non convertirlo in numero in FileMaker.
Non sono ammessi campi aggiuntivi, record parziali, user_id, ruoli o credenziali. Per modificare un centro, inviare di nuovo tutti i campi con una revisione maggiore. Non esistono ancora operazioni di eliminazione o cambio codice.
enabled=false blocca nuovi acquisti e pagamenti di ordini ancora aperti, senza eliminare l’account o lo storico. Il prezzo è cercato nella fascia esatta price_tier: nessun fallback, nessuna deduzione dal solo is_contractor. Una modifica dell’email FileMaker non cambia quella dell’account WordPress: l’incongruenza blocca gli acquisti fino alla verifica amministrativa.
Sincronizzare le edizioni dei corsi
/wp-json/lakshmi/v1/sync/coursesLa proprietà radice è courses: array JSON di 1–100 record completi, massimo 256 KiB. Stessa autenticazione dei centri. Ogni codice identifica un’edizione, anche se comprende più giornate; course_code raggruppa le edizioni dello stesso corso.
{
"courses": [
{
"filemaker_code": "DEMO-ED-000001",
"course_code": "DEMO-COURSE-001",
"title": "DEMO Rituale viso",
"dates": ["2026-11-09", "2026-11-10"],
"location": "DEMO Training Centre",
"enabled": true,
"revision": 1
}
]
}
| Campo obbligatorio | Tipo | Regola |
|---|---|---|
filemaker_code | string | Codice stabile dell’edizione, non del corso generale. Stringa ASCII case-sensitive con lettere, numeri, punto, underscore o trattino. Zeri iniziali preservati; nessun trim. |
course_code | string | Codice del corso/percorso di riferimento, con le stesse regole del codice edizione. Più edizioni possono condividerlo. Non è richiesta l’esistenza di un record padre. |
title | string | Titolo dell’edizione, 1–200 caratteri Unicode dopo trim, senza caratteri di controllo. Non un contenuto HTML editoriale. |
dates | array | Array JSON di 1–60 date reali e distinte, YYYY-MM-DD (anno 0001–9999). Il server ordina le date in modo crescente. Nessun orario o fuso: sono giorni di calendario, non timestamp UTC. Duplicati, oggetti e date impossibili sono rifiutati. |
location | string | Sede comune alle giornate dell’edizione, 1–200 caratteri Unicode dopo trim, senza controlli. Orari o sedi differenti per singolo incontro richiedono una futura estensione. |
enabled | boolean | Stato dell’edizione nel gestionale. Disabilitare blocca immediatamente nuovi preventivi/acquisti; la proiezione del catalogo resta distinta dall’intake. |
revision | integer | Contatore positivo crescente per edizione, distinto da quello dei centri. Solo intero JSON: stringhe, 1.0 e 1e0 rifiutati. Consigliato <=9007199254740991 per interoperabilità. |
Il corpo contiene esattamente questi sette campi per edizione. Prezzi, quantità, capienza, ID prodotto, descrizioni e immagini non fanno parte di questa API. Non esistono eliminazione o cambio codice: una modifica del codice creerebbe un’altra edizione.
Date, non orari. dates contiene giorni di calendario, non istanti UTC. L’ordine viene normalizzato; cambiare solo l’ordine delle date con la stessa revisione produce unchanged. Le date duplicate o impossibili sono rifiutate. Orari, più sedi e struttura master/moduli vanno concordati prima di estendere il contratto.
HTTP 200 · edizione acquisita
{
"results": [
{
"index": 0,
"filemaker_code": "DEMO-ED-000001",
"outcome": "created",
"edition": {
"id": 12,
"filemaker_code": "DEMO-ED-000001",
"course_code": "DEMO-COURSE-001",
"title": "DEMO Rituale viso",
"dates": [
"2026-11-09",
"2026-11-10"
],
"location": "DEMO Training Centre",
"enabled": true,
"revision": 1,
"created_at": "2026-09-10 12:00:00",
"updated_at": "2026-09-10 12:00:00"
}
}
]
}Il risultato usa edition, non centre. edition.id è l’ID locale dell’archivio, non un ID prodotto WooCommerce. Questo endpoint non crea prodotti WooCommerce né account o ordini. La proiezione dei prodotti è separata: viene eseguita dopo un listino valido o dalla riprova amministrativa in WooCommerce → Lakshmi Integration. Solo edizioni abilitate con almeno un’offerta vengono pubblicate. Dopo una modifica alle edizioni, ritrasmettere il listino corrente per aggiornare anche la proiezione.
Le regole di revisione e retry sono identiche a quelle dei centri, ma il contatore appartiene all’edizione. Errori 409: lakshmi_course_revision_conflict e lakshmi_course_stale_revision. Date non valide: lakshmi_course_invalid_dates, status 400 per elemento. Archivio temporaneamente non disponibile: lakshmi_course_storage_unavailable, status 503 per elemento.
Listini: una versione completa, attivata insieme
POST /sync/price-lists riceve un singolo oggetto, non un lotto: list_code, revision, currency, enabled, offers. Il primo codice di listino accettato diventa quello del catalogo; non si cambia codice tramite upsert. Una revisione maggiore sostituisce tutte le offerte attive, conservando le versioni precedenti.
Ogni offerta contiene esattamente edition_code, price_tier, ticket_type, amount_minor, included_participants e extra_participant_minor. Importi interi in centesimi di EUR; massimo 500 offerte e 256 KiB. Le edizioni devono esistere prima del listino. Tupla edizione/fascia/formula univoca; un errore rifiuta l’intera versione.
| Formula | Partecipanti | Calcolo |
|---|---|---|
single | Esattamente 1; supplemento null | amount_minor |
centre_package | Da quelle incluse (2–20) a 20 per formula | Prezzo pacchetto + persone oltre le incluse × supplemento. Supplemento null: persone extra non ammesse. |
Esempio fittizio — prima edizione, fascia contrattista demo. Singolo €90. Pacchetto per 2 persone €150 complessivi. Una terza persona aggiunge €65: totale €215, non €450. Per la fascia standard demo: €120 / €200 / supplemento €80. Questi importi non sono un preventivo né prezzi Lakshmi.
enabled=false o offers: [] ritirano le offerte. Una fascia sconosciuta non eredita altri prezzi. Non sono previsti date di validità futura, sconti cumulabili, coupon, kit, spedizioni o IVA reale in questa demo: tutti i totali sono importi di prova senza imposte. La fiscalità va definita prima della produzione.
La risposta contiene price_list.outcome (created|updated|unchanged) e catalogue.outcome (synchronized|pending). Se la proiezione è pending, il listino è già salvato: ripetere la stessa versione per ritentare i prodotti, senza incrementare la revisione. I controlli di acquisto usano sempre i dati correnti.
Scarica un listino sintetico · Campi, limiti e risposte OpenAPI
Account, partecipanti e acquisto demo
- L’amministratore verifica il referente e crea il link privato da WooCommerce → Lakshmi Centres. Il link usa il reset password nativo WordPress, monouso e con scadenza normalmente di 24 ore. Non viene inviato da staging: si condivide separatamente con il solo referente verificato.
- Il centro accede, sceglie edizione e formula e indica nome e cognome di ogni partecipante. Nessun account aggiuntivo per le partecipanti, nessuna richiesta di dati sanitari.
- Carrello e checkout ricontrollano collegamento, abilitazione, fascia, edizione e listino. Se cambia un dato confermato, la formula va rimossa e aggiunta di nuovo: nessun aumento di prezzo silenzioso.
- Pagamento demo — nessun addebito registra l’ordine simulato. Il gateway esiste solo con la modalità demo esplicitamente abilitata in locale o staging HTTPS; non funziona in produzione e non contatta Stripe o PayPal.
Una riga carrello è una formula con quantità sempre 1, separata dal numero di persone. Massimo 20 persone per formula, 10 formule e 100 partecipazioni per ordine; snapshot massimo 180 KiB per mantenere esportabile l’evento. Checkout WooCommerce classico: blocchi Checkout/Store API non sono supportati. Non mischiare corsi e prodotti estranei.
Ogni ordine conserva una copia immutabile del centro, delle edizioni, delle condizioni di listino e dei nominativi. Aggiornare FileMaker non modifica lo storico acquistato. L’area account mostra ordini e partecipanti; gli amministratori gestiscono gli ordini e i rimborsi simulati da WooCommerce.
Recuperare gli ordini, poi confermare l’acquisizione
GET /events?limit=100 restituisce {"events": [...], "count": n} con i più vecchi eventi non acquisiti; limit da 1 a 100, nessun cursore. Un secondo GET senza ACK restituisce ancora gli stessi eventi. Elaborare e confermare la pagina, poi richiedere la successiva; fermarsi quando events è vuoto. Un errore 503 non equivale a una coda vuota.
Ogni evento contiene un event_id UUID stabile, un numero sequence, tipo, ID ordine, payload immutabile, data UTC e stato di acquisizione. I tipi disponibili sono order.paid e order.refunded. Gli importi nel payload sono centesimi interi; demo: true e money_moved: false distinguono le simulazioni.
- FileMaker cerca
event_idnel proprio registro. Se presente, non crea una seconda iscrizione. - Se nuovo, salva ordine, righe, nominativi e ricevuta evento in una transazione locale. Conserva gli identificativi WooCommerce, non soltanto i titoli.
- Solo dopo il salvataggio invia
POST /events/ackcon{"acknowledgements":[{"event_id":"…","filemaker_id":"FM-ORDER-001"}]}, massimo 100 elementi. - Se si perde la risposta ACK, ripete lo stesso evento e riferimento:
unchanged. Lo stesso evento con un riferimento diverso produce conflitto 409. HTTP 200 del lotto non elimina la necessità di controllare ogni risultato.
Un pagamento riuscito resta riuscito anche se l’esportazione deve essere ritentata. L’ordine viene marcato prima del pagamento; l’evento viene salvato prima di rimuovere il marcatore. Una riconciliazione WordPress pianificata ogni 5 minuti recupera pagamenti e rimborsi pendenti. Questo processo richiede il cron server; non sostituisce la pianificazione in FileMaker.
Rimborsi
Un rimborso totale o parziale genera un nuovo evento con proprio UUID, refund_id, paid_event_id e importo positivo. Può non contenere righe quando è solo economico. participant_cancellations: [] è intenzionale: rimborsare un importo non identifica quali persone annullare. Modifiche nominativi, annullamenti d’iscrizione e ricalcolo commerciale post-acquisto richiedono un contratto successivo.
Leggere gli esiti
HTTP 200 ≠ tutti i record acquisiti.
Un lotto valido produce un risultato per ciascun elemento, nello stesso ordine. Usare index e il codice per la correlazione. Marcare un record come sincronizzato solo con outcome uguale a created, updated o unchanged.
{
"results": [
{
"index": 0,
"filemaker_code": "DEMO-FM-000123",
"outcome": "created",
"centre": {
"id": 42,
"filemaker_code": "DEMO-FM-000123",
"user_id": null,
"name": "DEMO Centro Aurora",
"email": "aurora@example.test",
"price_tier": "demo_contracted",
"is_contractor": true,
"enabled": true,
"revision": 1,
"created_at": "2026-09-10 12:00:00",
"updated_at": "2026-09-10 12:00:00"
}
}
]
}
id è l’identificatore locale del centro; user_id: null significa che l’account non è ancora collegato. created_at e updated_at sono UTC nel formato YYYY-MM-DD HH:mm:ss, non RFC3339.
HTTP 200 con un record rifiutato
{
"results": [
{
"index": 0,
"filemaker_code": "DEMO-FM-000123",
"outcome": "error",
"error": {
"code": "lakshmi_stale_revision",
"message": "A newer centre revision is already stored.",
"status": 409
}
}
]
}In un lotto misto, i record validi restano salvati anche se altri falliscono. Il codice restituito per un elemento invalido è solo diagnostico: può essere troncato o null. Per questi casi usare sempre index.
Errori dell’intera richiesta
Gli errori globali non contengono results: hanno la struttura WordPress code, message, data.status. Interpretare codice e stato, non il testo del messaggio.
| HTTP | Significato | Azione |
|---|---|---|
400 | JSON o struttura del lotto non validi. Il parser WordPress può restituire rest_invalid_json prima del plugin. | Correggere il corpo JSON e i tipi. |
401 | Application Password assente, errata o revocata. Possibili codici nativi WordPress. | Verificare la credenziale tecnica. |
403 | HTTPS, metodo di autenticazione o permessi non adeguati. | Controllare URL, Application Password e account tecnico. |
413 | Corpo troppo grande; anche il proxy può respingerlo. | Ridurre il lotto entro 256 KiB. |
415 | Content-Type non JSON. | Inviare application/json. |
503 | Archivio non pronto: lakshmi_unavailable o lakshmi_courses_unavailable. | Riprovare con attese crescenti e limite ai tentativi. |
Distinguere il 503 globale dal singolo error.status: 503 con codice lakshmi_storage_unavailable (centri) o lakshmi_course_storage_unavailable (edizioni) dentro una risposta HTTP 200.
Revisioni, tentativi ripetuti e recupero
| Invio | Risultato |
|---|---|
| Codice nuovo | created |
| Revisione maggiore di quella salvata | updated; account associato preservato |
| Stessa revisione, stesso contenuto normalizzato | unchanged; nessun duplicato |
| Stessa revisione, contenuto diverso | error.status: 409, lakshmi_revision_conflict |
| Revisione precedente | error.status: 409, lakshmi_stale_revision; nessuna sovrascrittura |
Il confronto usa nome trimmato, email trimmata e minuscola; l’ordine delle proprietà JSON non conta. La revisione appartiene a FileMaker ed è distinta da updated_at, che può cambiare anche per un collegamento account.
- Timeout, errore di rete o risposta incompleta: non segnare l’acquisizione. Riprovare lo stesso contenuto e la stessa revisione: il precedente invio potrebbe essere già riuscito.
- 503: usare tentativi limitati con attesa crescente e una coda persistente lato FileMaker.
- 400/409: correggere il dato o risolvere il conflitto alla fonte. Non incrementare ciecamente la revisione per forzare la scrittura.
- Lotti: consigliato un solo record aggiornato per codice. I duplicati nello stesso lotto vengono comunque elaborati in ordine, con transazioni indipendenti.
La coda e la pianificazione degli invii nel gestionale sono responsabilità dello sviluppo FileMaker. Sul sito, WooCommerce → Lakshmi Integration mostra listino, eventi e acquisizioni e consente la riprova di catalogo ed eventi senza acquisirli al posto di FileMaker.
Esempio pratico per FileMaker
Il riferimento scaricabile mostra la costruzione JSON, la chiamata Insert from URL, la lettura degli header HTTP e il controllo degli esiti. Usa esclusivamente variabili per le credenziali.
Scarica lo schema dello script FileMaker (.txt)
Da adattare e collaudare nel gestionale. È una guida ai passi dello script, non un file .fmp12 né uno script già eseguito nell’installazione del cliente. Le tabelle sorgenti, il contatore di revisione e la gestione sicura delle credenziali vanno collegati dal referente FileMaker.
Tipi JSON e versione
Usare JSONString per il codice, JSONBoolean per i flag e JSONNumber per la revisione intera. La validazione della risposta proposta usa JSONGetElementType, disponibile da FileMaker 19.5; verificare la versione installata e i nomi delle funzioni correnti prima del collaudo. Fonti: JSONSetElement e JSONGetElementType.
Trasporto ed errori
--data @$requestBody legge il corpo da una variabile FileMaker; --dump-header $responseHeaders raccoglie gli header in un’altra variabile. Leggere l’ultimo stato HTTP: possono esserci più blocchi. Non usare --write-out, che non compare tra le opzioni supportate. Opzioni cURL supportate da Claris.
Catturare errore e dettaglio immediatamente dopo Insert from URL, prima di altri passi. Lasciare attiva la verifica del certificato. Controllare sia l’errore FileMaker sia lo stato HTTP e poi ogni outcome. Fonti: Get(LastErrorDetail), Set Error Capture, Insert from URL.
Checklist del collaudo congiunto
- Confermare versione FileMaker/Server, processo pianificato e possibilità di connessioni HTTPS in uscita.
- Concordare codici, fasce ed email di prova, senza dati personali reali. Ricevere la credenziale tecnica separatamente.
- Inviare un centro sintetico:
created. Ripetere senza modifiche:unchanged. - Inviare un’edizione sintetica con due giornate. Ripetere le stesse date in ordine diverso:
unchanged. Verificare che una data impossibile venga rifiutata e che non compaiano prodotti nel negozio. - Aggiornare la fascia con revisione maggiore:
updated. Ripetere una revisione vecchia: errore 409. - Provare un lotto misto valido/invalido: acquisire solo i risultati riusciti.
- Simulare timeout e retry senza duplicare centri. Provare revoca delle credenziali e gestione del 401.
- Inviare un listino completo dopo le edizioni, ripeterlo e verificare prezzi diversi per i due centri demo. Una versione invalida non deve attivare prezzi parziali.
- Acquistare un singolo e un pacchetto con partecipante extra; verificare nominativi, totale e storico nell’account.
- Recuperare l’evento, simulare un’interruzione dopo il salvataggio FileMaker ma prima dell’ACK, riprendere senza duplicati e confermare.
- Creare un rimborso parziale e verificarne l’evento distinto senza dedurre cancellazioni dei nominativi.
- Disabilitare un centro o aggiornare un listino con un carrello aperto; il nuovo acquisto deve essere bloccato o richiedere nuova conferma.
Già verificato sul lato WordPress: validazione, autenticazione, idempotenza e richieste concorrenti con test automatici. Ancora da verificare: chiamate dalla rete aziendale e funzionamento dello script nella versione FileMaker installata.
Proposta di integrazione e punti da confermare
Happy Brain propone il contratto tecnico; il developer FileMaker realizza la mappatura; Lakshmi conferma le regole commerciali. La demo procede con ipotesi dichiarate. Le conferme riguardano l’avvio reale e le estensioni commerciali, non bloccano il collaudo tecnico con dati fittizi.
Sono già concordati: WooCommerce, connessioni avviate solo da FileMaker, codice riferito al centro, un account per centro e nessun limite di posti. Campi, formati e regole di revisione riportati nelle sezioni API sono invece la nostra proposta tecnica, già applicata sul sito per i test.
| Tema | Proposta Happy Brain | Verifica o conferma richiesta |
|---|---|---|
| Identificativi | Codici testuali stabili, univoci e conformi ai formati delle API; nessuna conversione numerica o modifica a ogni invio. | Developer FileMaker: associare gli identificativi sorgente ai codici trasmessi. Se serve una mappatura, conservarla senza collisioni o troncamenti. |
| Edizioni | Un codice per edizione; course_code raggruppa lo stesso corso. L’API attuale conserva giornate e una sede comune, senza prezzi. | Lakshmi: precisare cosa si acquista (giornata, modulo o master). Developer FileMaker: mappare le relative edizioni e segnalare esigenze di orari o sedi multiple. |
| Revisioni e recupero | Contatore intero crescente e persistente per centro/edizione. Ogni modifica produce una nuova revisione; i retry mantengono contenuto e revisione originali. | Developer FileMaker: implementare il contatore e conservare i dati da ritrasmettere fino alla conferma dell’esito, anche dopo un riavvio. |
| Frequenza | Prima ipotesi operativa: caricamento iniziale e invio delle variazioni ogni 5 minuti. È una proposta, non una pianificazione già attiva in FileMaker. | Developer FileMaker: verificare versione, esecuzione pianificata e HTTPS in uscita. Lakshmi: confermare che il ritardo proposto sia accettabile. |
| Disattivazioni | La demo blocca nuovi acquisti e pagamenti aperti con enabled=false, conservando account e storico. | Lakshmi: approvare questa regola per la produzione. Developer FileMaker: individuare lo stato sorgente da trasmettere. |
| Referente ed email | Invito amministrativo dopo verifica; nessun cambio automatico dell’account o proprietario. Incongruenza email: acquisto bloccato e revisione manuale. | Lakshmi: indicare chi autorizza il cambio. Developer FileMaker: indicare l’email di riferimento affidabile. |
| Fasce e prezzi | Due fasce fittizie, singolo, pacchetto per due e supplemento extra. Listino intero versionato; nessuna deduzione automatica dal solo stato contrattista. | Lakshmi: confermare fasce reali, importi, kit, master, ripassi, prerequisiti e fiscalità. Developer FileMaker: mappare il contratto prezzi già disponibile; segnalare regole non rappresentabili. |
| Manutenzione | Proponiamo API, plugin e documentazione a carico Happy Brain; mappatura, script e pianificazione FileMaker a carico del relativo sviluppatore. | Entrambi i team e Lakshmi: confermare referenti, consegne, gestione degli errori e perimetro del supporto. Non è un accordo di manutenzione già approvato. |
Su cosa possiamo procedere
Il percorso demo è disponibile dal catalogo fino al pagamento simulato e all’acquisizione dell’ordine. Il prossimo passo con il developer è eseguire questi stessi scenari dalla rete aziendale, usando la mappatura FileMaker. Prima di attivare vendite reali servono prezzi e condizioni approvati, fiscalità, gateway reali e collaudo congiunto.
Al developer FileMaker chiediamo di confermare la fattibilità di questa proposta e segnalare eventuali adattamenti, non di progettare al posto nostro il contratto del sito. Una conferma non ricevuta rimane aperta; non viene interpretata come approvazione.
Prima della produzione
Il completamento della demo non autorizza vendite reali. Restano da completare i seguenti passaggi, senza interpretarli come approvati.
| Area prevista | Contratto da definire |
|---|---|
| Dati e regole commerciali | Catalogo reale, fasce, IVA e fatturazione, kit, spedizioni, agevolazioni, prerequisiti, master/moduli, orari e sedi per incontro. |
| Pagamenti | Configurazione Stripe/PayPal, webhook, collaudo sandbox reale, procedure rimborsi e attivazione produzione. Il gateway attuale è solo una simulazione interna. |
| FileMaker | Mappatura, script e pianificazione eseguiti nel gestionale; prova end-to-end dalla rete aziendale, gestione errori e monitoraggio. |
| Sicurezza e operatività | Protezione staging prima di dati riservati, backup esterno e prova ripristino, retention, email transazionali, privacy/termini e monitoraggio cron. Noindex non è controllo accessi. |
| Post-vendita | Regole di cambio partecipante, annullamento e relazione fra rimborso monetario e iscrizione; nessuna API di modifica automatica nominativi in questa versione. |