LAKSHMICourses / Developer docs

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.

Demo completa con dati fittiziAmbiente stagingContratto 0.4.0Aggiornato il 10 settembre 2026
POST/wp-json/lakshmi/v1/sync/customers
POST/wp-json/lakshmi/v1/sync/courses
POST/wp-json/lakshmi/v1/sync/price-lists
GET/wp-json/lakshmi/v1/events?limit=100
POST/wp-json/lakshmi/v1/events/ack

Demo, 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

  1. 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-* e demo_* sono fittizi, non fasce commerciali approvate.
  2. 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.
  3. 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.
URL completo di staging
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.

Richiesta · esempio sinteticoScarica 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 obbligatorioTipoRegola
filemaker_codestringIdentificatore testuale case-sensitive. Zeri iniziali preservati: 000123 e 123 sono distinti. Non inviare un numero.
namestringNome non vuoto dopo trim, massimo 200 caratteri; nessun carattere di controllo. Il server rimuove gli spazi iniziali/finali prima di validare la lunghezza.
emailstringEmail di riferimento valida, normalizzata con trim e conversione in minuscolo. Validazione effettiva WordPress is_email; nessuna verifica di proprietà o associazione automatica.
price_tierstringCodice commerciale, non un prezzo. Valori demo non rappresentano fasce di produzione concordate; nessun fallback automatico al listino standard.
is_contractorbooleanStato contrattista del centro. JSON true/false, non stringhe né 0/1.
enabledbooleanCentro abilitato nel gestionale: il checkout dimostrativo richiede un account collegato, centro abilitato e fascia con un’offerta esatta.
revisionintegerRevisione 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

POST/wp-json/lakshmi/v1/sync/courses

La 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.

Richiesta · edizione fittizia su due giornateScarica JSON corsi
{
  "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 obbligatorioTipoRegola
filemaker_codestringCodice stabile dell’edizione, non del corso generale. Stringa ASCII case-sensitive con lettere, numeri, punto, underscore o trattino. Zeri iniziali preservati; nessun trim.
course_codestringCodice del corso/percorso di riferimento, con le stesse regole del codice edizione. Più edizioni possono condividerlo. Non è richiesta l’esistenza di un record padre.
titlestringTitolo dell’edizione, 1–200 caratteri Unicode dopo trim, senza caratteri di controllo. Non un contenuto HTML editoriale.
datesarrayArray 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.
locationstringSede comune alle giornate dell’edizione, 1–200 caratteri Unicode dopo trim, senza controlli. Orari o sedi differenti per singolo incontro richiedono una futura estensione.
enabledbooleanStato dell’edizione nel gestionale. Disabilitare blocca immediatamente nuovi preventivi/acquisti; la proiezione del catalogo resta distinta dall’intake.
revisionintegerContatore 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.

FormulaPartecipantiCalcolo
singleEsattamente 1; supplemento nullamount_minor
centre_packageDa quelle incluse (2–20) a 20 per formulaPrezzo 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

  1. FileMaker cerca event_id nel proprio registro. Se presente, non crea una seconda iscrizione.
  2. Se nuovo, salva ordine, righe, nominativi e ricevuta evento in una transazione locale. Conserva gli identificativi WooCommerce, non soltanto i titoli.
  3. Solo dopo il salvataggio invia POST /events/ack con {"acknowledgements":[{"event_id":"…","filemaker_id":"FM-ORDER-001"}]}, massimo 100 elementi.
  4. 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.

Esempi pagamento e rimborso · Esempio ACK

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.

HTTP 200 · centro creato
{
    "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.

HTTPSignificatoAzione
400JSON o struttura del lotto non validi. Il parser WordPress può restituire rest_invalid_json prima del plugin.Correggere il corpo JSON e i tipi.
401Application Password assente, errata o revocata. Possibili codici nativi WordPress.Verificare la credenziale tecnica.
403HTTPS, metodo di autenticazione o permessi non adeguati.Controllare URL, Application Password e account tecnico.
413Corpo troppo grande; anche il proxy può respingerlo.Ridurre il lotto entro 256 KiB.
415Content-Type non JSON.Inviare application/json.
503Archivio 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

InvioRisultato
Codice nuovocreated
Revisione maggiore di quella salvataupdated; account associato preservato
Stessa revisione, stesso contenuto normalizzatounchanged; nessun duplicato
Stessa revisione, contenuto diversoerror.status: 409, lakshmi_revision_conflict
Revisione precedenteerror.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

  1. Confermare versione FileMaker/Server, processo pianificato e possibilità di connessioni HTTPS in uscita.
  2. Concordare codici, fasce ed email di prova, senza dati personali reali. Ricevere la credenziale tecnica separatamente.
  3. Inviare un centro sintetico: created. Ripetere senza modifiche: unchanged.
  4. 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.
  5. Aggiornare la fascia con revisione maggiore: updated. Ripetere una revisione vecchia: errore 409.
  6. Provare un lotto misto valido/invalido: acquisire solo i risultati riusciti.
  7. Simulare timeout e retry senza duplicare centri. Provare revoca delle credenziali e gestione del 401.
  8. 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.
  9. Acquistare un singolo e un pacchetto con partecipante extra; verificare nominativi, totale e storico nell’account.
  10. Recuperare l’evento, simulare un’interruzione dopo il salvataggio FileMaker ma prima dell’ACK, riprendere senza duplicati e confermare.
  11. Creare un rimborso parziale e verificarne l’evento distinto senza dedurre cancellazioni dei nominativi.
  12. 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.

TemaProposta Happy BrainVerifica o conferma richiesta
IdentificativiCodici 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.
EdizioniUn 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 recuperoContatore 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.
FrequenzaPrima 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.
DisattivazioniLa 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 emailInvito 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 prezziDue 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.
ManutenzioneProponiamo 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 previstaContratto da definire
Dati e regole commercialiCatalogo reale, fasce, IVA e fatturazione, kit, spedizioni, agevolazioni, prerequisiti, master/moduli, orari e sedi per incontro.
PagamentiConfigurazione Stripe/PayPal, webhook, collaudo sandbox reale, procedure rimborsi e attivazione produzione. Il gateway attuale è solo una simulazione interna.
FileMakerMappatura, 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-venditaRegole di cambio partecipante, annullamento e relazione fra rimborso monetario e iscrizione; nessuna API di modifica automatica nominativi in questa versione.