Gebaseerd op het FileMaker-platform is de ERP-software gFM-Business, dat draait op Apple macOS, Windows en iOS, bevat een geïntegreerde online winkelfunctie.Interface gebaseerd op REST-API, waarmee klanten, artikelen en shoporders met één druk op de knop kunnen worden overgezet naar gFM-Business. gFM-Business ondersteunt ook de automatische synchronisatie van de voorraadniveaus met de artikelen in de onlineshop. Het standaardbereik omvat momenteel de shopsystemen Shopware 5.x, Gambio Ondersteuning voor GX3 en WooCommerce voor WordPress.
Als onderdeel van een open licentie van gFM-Bedrijf Basic of Professioneel de online shopinterface met FileMaker Pro (of Advanced) kan ook worden uitgebreid met extra velden of een ander online shopsysteem. In dit artikel leggen we uit hoe de op REST API gebaseerde online shopinterface in gFM-Business is opgebouwd en hoe deze kan worden uitgebreid met extra velden of een ander shopsysteem. Een documentatie van alle basisdefinities en standaarden in gFM-Business is te vinden op hier.
Inhoudsopgave
- Algemene structuur van de geïntegreerde interface van de online shop
- Alle scripts luisteren naar "REST".
- REST_Query [extern systeem|endpoint|].
- dlg.REST_selectie_klanten (parameter)
- dlg.REST_selectie_bestellingen (parameter)
- dlg.REST_selectie_artikel (parameter)
- REST_Gambio_GX3_API_v210 (gegevenstype|extern systeem|{object|ID export}|)
- REST_WooCommerce_API_v3 (gegevenstype|extern systeem|{object|ID export}|)
- REST_Shopware_5x_API (gegevenstype|extern systeem|{object|ID export}|)
- Velden uitbreiden voor een bestaande online winkel
- De interface uitbreiden met nog een online winkel
- Uitbreiding van de interface door een servicepartner of door ons
Algemene structuur van de geïntegreerde interface van de online shop
De online winkelinterface die is geïntegreerd in de gFM Business ERP-software heeft een eenvoudige structuur en bestaat uit de volgende onderdelen:
Online winkels in de module "Instellingen
Alle online shops kunnen worden ingesteld onder [Instellingen > Online shop]. De onderliggende Tabel is de tabel "REST_API" uit het bestand "gFMw_Stammdaten". Als er een nieuwe online shop wordt aangemaakt, worden alle gegevens verkregen door verwijzing uit de tabel "REST_API_Stamm", die zich ook in het bestand "gFMw_Stammdaten" bevindt. Als er een ander shopsysteem wordt toegevoegd aan de interface, moet er ook een stamgegevensrecord voor dit shopsysteem worden aangemaakt in de tabel "REST_API_Stamm", zodat je niet alle gegevens handmatig hoeft in te voeren als je meerdere online shops gebruikt.
De kleine versie gFM-Business Basic ondersteunt standaard slechts het gebruik van één online shop. In principe kan dit ook worden uitgebreid, zodat gFM-Business Basic ook het gebruik van meerdere online shops mogelijk maakt. Hiervoor hoeft alleen een bijbehorende Portaal voor het selecteren van de online shop kan worden geïmplementeerd zoals in de Professional versie. Alle functies en scripts ondersteunen ook meerdere online shops in de Basic versie en hoeven niet te worden uitgebreid voor deze functie.
Virtuele tafels
Bij het selecteren van klanten, artikelen of winkelorders die moeten worden geïmporteerd, worden alle gegevens die beschikbaar zijn op de shopserver weergegeven in een selectievenster. De gegevens die hier worden weergegeven, worden slechts tijdelijk opgeslagen in een virtuele tabel in gFM Business en worden na de selectie weggegooid. Het concept van virtuele tabellen werd op de FileMaker Conference 2015 gepresenteerd door Arnold Kegebein gepresenteerd. In een virtuele tabel worden binnenkomende gegevens niet in afzonderlijke velden opgeslagen, maar alleen in een herhalend veld. Het aantal herhalingen komt overeen met het aantal weer te geven velden in een tabel, één gegevensrecord komt overeen met één gegevensrecord van de aangeleverde gegevens. Alle virtuele tabellen bevinden zich in het bestand "gFM_Business.fmp12".
Een virtuele tabel bevat de volgende velden (met artikelen als voorbeeld):
- _fk_Artikel_ID (Artikel ID van gFM-Business met SQL-query op "_Shop_ID" in de artikelmaster. Gevuld als artikel al bestaat in gFM-Business)
- _id_buitenlands_systeem (ID van het externe systeem)
- Wereldwijd (Globale sleutel, bevat altijd de waarde 1)
- Selectie (Veld voor gebruikersselectie van een gegevensrecord dat moet worden overgebracht naar gFM-Business)
- Gegevensvelden (Herhalingsveld met 6 herhalingen voor 6 gegevensvelden uit de interface die in de tabel moeten worden weergegeven)
- ID_selectie (Berekend veld, welke ID werd geselecteerd)
- Velden koptekst (Herhalend veld met 6 herhalingen voor 6 veldtitels uit de interface die in de tabel moeten worden weergegeven)
- Object_selectie (Berekend veld, welke positie het laatst is geselecteerd in de resultatenreeks)
De andere twee virtuele tabellen werken in principe op dezelfde manier, met het verschil dat in de tabel voor orders de factuur- en order-ID's worden gecontroleerd op bestaande gegevensrecords in plaats van de artikel-ID, en voor klanten de klant-ID.
Er zijn drie virtuele tabellen voor de interface van de online shop in het bestand "gFM_Business.fmp12":
- vt_selectie_artikel (virtuele tabel voor weergave van opgeslagen artikelgegevens, veld [gegevensvelden] bevat 6 herhalingen)
- vt_selectie_bestellingen (virtuele tabel voor weergave van opgeslagen artikelgegevens, veld [gegevensvelden] bevat 9 herhalingen)
- vt_selectie_klanten (virtuele tabel voor weergave van opgeslagen artikelgegevens, veld [gegevensvelden] bevat 6 herhalingen)
Winkel-ID's in de gFM Business-tabellen
Alle relevante tabellen bevatten de volgende velden, zodat de ERP-software gFM-Business kan bijhouden welke online shopgegevens zijn toegewezen aan de gegevens in gFM-Business:
- Winkel (bevat de ID van het corresponderende gegevensrecord in de online shop)
- _Shop_Buitenland_systeem (bevat de informatie bij welk extern systeem de shop-ID hoort, aangezien gFM-Business het gebruik van meerdere shops tegelijkertijd ondersteunt)
Deze velden staan in de volgende tabellen van gFM-Business:
- Artikel meester (hoofdtabel van alle producten)
- Klanten (stamtabel van alle klanten)
- Bestellingen (hoofdtabel van alle bestellingen)
- Facturen (hoofdtabel van alle facturen)
Alle scripts luisteren naar "REST".
Alle scripts die zijn gekoppeld aan de interface van de online winkel kunnen worden gevonden in het zoekveld van de Script-editor door "rest" in te voeren. Bij levering bestaat de interface uit in totaal zeven scripts:
REST_Query [extern systeem|endpoint|].
Dit script wordt gebruikt om in te loggen op de Serverwaarop de onlineshop is geïnstalleerd en wordt opgeroepen met de parameters "Extern systeem" en "Eindpunt". Voordat er een query wordt uitgevoerd naar de server van de online shop, moet dit aanmeldscript altijd eerst worden uitgevoerd om in te loggen op de server voordat de query wordt uitgevoerd.
Foutopname instellen [ Aan ] UserCancelAllow instellen [ Off ] # # >>>>>>>>>> SPRAAKOVERDRACHT Variabele instellen [ $dg_001 ; Waarde: SQLAusführen ("SELECT \"Dialog_001"") VAN \"lg\" WHERE \fk_ScriptName\='" & Hole(ScriptName) & "' AND \"_pk_Sprache_ID\"=" & prf::_Sprache_ID ; "" ; "" ) ] Stel variabele in [ $dg_002 ; Waarde: SQLAusführen ("SELECT \"Dialog_002\"") FROM lg WHERE \fk_ScriptName\"="" & Hole(ScriptName) & "' AND \"_pk_Sprache_ID\"=" & prf::_Sprache_ID ; "" ; "" ) ] Stel variabele in [ $dg_003 ; Waarde: SQLAusführen ("SELECT \"Dialog_003"") FROM \"lg"\ WHERE \"_fk_ScriptName"="" & Hole(ScriptName) & "' AND \"_pk_Sprache_ID\"=" & prf::_Sprache_ID ; "" ; "" ) ]
Stelt de foutregistratie in en draagt de teksten over uit de taaltabel voor de foutdialoog die wordt weergegeven als het aanmelden bij de server mislukt.
Stel variabele [ $fremdsystem ; Waarde: StringColumns(Get(ScriptParameter); 1) ] in. Stel variabele [ $endpoint ; Waarde: StringColumns(Get(ScriptParameter); 2) ] in. Stel variabele [ $api_url ; Waarde: SQLAusführen ("SELECT \"API_URL"") UIT REST_API WHERE \naam_buitenlands_systeem}" & $fremdsystem & "" ; "" ; "" ) ] Stel variabele in [ $login ; Waarde: SQLAusführen ( "SELECT \"Consumer_Key") UIT REST_API WHERE \naam_vreemd_systeem\='" & $fremdsystem & "" ; "" ; "" ) ] Stel variabele in [ $pass ; Waarde: SQLAusführen ("SELECT \"Consumer_Secret\" UIT REST_API WHERE \naam_vreemd_systeem\='" & $fremdsystem & "" ; "" ; "" ) ]
Stel alle benodigde variabelen in. Variabelen voor het externe systeem (naam van het externe systeem, bijv. "WooCommerce") en het eindpunt (bijv. "Eindpunt voor artikelen") worden als scriptparameters overgenomen uit het gebruikersdialoogvenster. De variabelen $api_url, $login en $pass worden overgenomen uit de tabel "REST_API" van de online shop die is ingesteld in het bestand "gFMw_Stammdaten.fmp12".
Alle andere commando's worden gebruikt om in te loggen bij een online shopsysteem met RESTful API en zijn over het algemeen hetzelfde voor alle systemen. Het volgende gedeeltelijke script komt grotendeels overeen met het meegeleverde voorbeeld van de MBS FileMaker-plugin.
dlg.REST_selectie_klanten (parameter)
Dit script toont het selectievenster waarmee de te importeren klanten kunnen worden geselecteerd op basis van de gegevens die beschikbaar zijn in de online shop. Dit script kan worden aangeroepen met de volgende scriptparameters:
- Importeren - Deze parameter wordt gebruikt om het selectievenster weer te geven voor het importeren van klanten uit de online shop in gFM Business. Dit subscript wordt gegenereerd uit het popover-script "ts.kon_data_import en bevat oproepen voor het hoofdinterfacescript van alle online shops, die worden aangeroepen afhankelijk van de selectie.
- Alles selecteren - Deze parameter kan worden gebruikt om alle regels in het selectievenster te selecteren.
- Klanten_oproep - Deze parameter kan worden gebruikt om een klant op te roepen vanuit het selectievenster in het gFM Business-venster.
dlg.REST_selectie_bestellingen (parameter)
Dit script toont het selectievenster waarmee de te importeren orders kunnen worden geselecteerd op basis van de gegevens die beschikbaar zijn in de online shop. Dit script kan worden opgeroepen met de volgende scriptparameters:
- Import_Bestel - Deze parameter wordt gebruikt om het selectievenster weer te geven voor het importeren van orders uit de online shop in gFM Business en deze vervolgens te importeren als orderbevestiging. Dit subscript wordt gegenereerd uit het popover-script "ts.fak_data_import en bevat oproepen voor het hoofdinterfacescript van alle online shops, die worden aangeroepen afhankelijk van de selectie.
- Factuur importeren - Deze parameter wordt gebruikt om het selectievenster weer te geven voor het importeren van bestellingen uit de online shop in gFM Business en ze vervolgens te importeren als factuur. Dit subscript wordt gegenereerd vanuit het popover-script "ts.fak_data_import en bevat oproepen voor het hoofdinterfacescript van alle online shops, die worden aangeroepen afhankelijk van de selectie.
- Alles selecteren - Deze parameter kan worden gebruikt om alle regels in het selectievenster te selecteren.
- Bestelling - Met deze parameter kan een orderbevestiging worden opgeroepen vanuit het selectievenster in het gFM Business-venster.
- Factuuroproep - Deze parameter kan worden gebruikt om een factuur op te roepen vanuit het selectievenster in het gFM Business-venster.
dlg.REST_selectie_artikel (parameter)
Dit script toont het selectievenster waarmee de te importeren artikelen kunnen worden geselecteerd op basis van de gegevens die beschikbaar zijn in de online shop. Dit script kan worden aangeroepen met de volgende scriptparameters:
- Importeren - Deze parameter wordt gebruikt om het selectievenster weer te geven voor het importeren van artikelen uit de online shop in gFM Business. Dit subscript wordt gegenereerd uit het popover-script "ts.art_data_import en bevat oproepen voor het hoofdinterfacescript van alle online shops, die worden aangeroepen afhankelijk van de selectie.
- Alles selecteren - Deze parameter kan worden gebruikt om alle regels in het selectievenster te selecteren.
- Klanten_oproep - Deze parameter kan worden gebruikt om een item op te roepen uit het selectievenster in het gFM Business-venster.
REST_Gambio_GX3_API_v210 (gegevenstype|extern systeem|{object|ID export}|)
Dit script bevat alle subscripts voor het importeren en exporteren van gegevens in verband met Gambio GX3-gebaseerde online shops. Alle commando's in dit script worden aangestuurd via de eerste parameter "Data type", die de volgende waarden kan hebben:
- Klanten (Importscript voor het automatisch importeren van klanten. Bij dit type import wordt er geen selectievenster weergegeven voor de import; in plaats daarvan worden alle klanten die nog niet bestaan automatisch geïmporteerd. Bij dit type import bestaat het risico dat er ook ongewenste spam wordt geïmporteerd).
- Bestellingen (Importscript voor het automatisch importeren van winkelbestellingen als orderbevestigingen. Bij dit importtype wordt er geen selectievenster weergegeven voor het importeren, maar worden alle bestellingen die nog niet bestaan automatisch geïmporteerd. Bij dit importtype bestaat het risico dat er ook ongewenste spamberichten worden geïmporteerd).
- Bestellingen_Facturen (Importscript voor het automatisch importeren van winkelbestellingen als factuur. Bij dit importtype wordt er geen selectievenster weergegeven voor het importeren, maar worden alle bestellingen die nog niet bestaan automatisch geïmporteerd. Bij dit importtype bestaat het risico dat ook ongewenste spam wordt geïmporteerd).
- Artikel (Importscript voor het automatisch importeren van producten uit de online shop. Bij dit type import wordt er geen selectievenster weergegeven voor de import; in plaats daarvan worden alle artikelen die nog niet bestaan automatisch geïmporteerd.
- Klant (Update-script voor het bijwerken van een enkele klant uit de onlineshop in gFM-Business. Om dit script op te roepen, moet de parameter [ID export] worden voorzien van de ID van het record met klantgegevens).
- Bestellingen (Importscript om een enkele bestelling uit de online shop te importeren vanuit een order. Om dit script aan te roepen, moet de parameter [ID export] worden voorzien van de ID van het gegevensrecord van de bestelling).
- Order_Facturen (importscript om een enkele bestelling uit de online shop te importeren vanaf een factuur. Om dit script op te roepen, moet de parameter [ID export] worden voorzien van de ID van het gegevensrecord van de bestelling).
- Enkel artikel (Importscript om een enkel artikel uit de online shop in gFM-Business te importeren. Om dit script op te roepen, moet de parameter [ID-Export] worden opgegeven met de ID van het artikelgegevensrecord).
- Klanten_selectie (Importscript voor het importeren van klantgegevens uit de online shop met selectievenster. De functies binnen het selectievenster worden geregeld in het respectieve dialoogscript [dlg.REST_Auswahl_Kunden]).
- Bestellingen_selectie (Importscript voor het importeren van shopbestellingen uit de online shop met selectievenster. De functies binnen het selectievenster worden geregeld in het respectieve dialoogscript [dlg.REST_Auswahl_Bestellungen]).
- Artikel_selectie (Importscript voor het importeren van producten uit de online shop met een selectievenster. De functies binnen het selectievenster worden geregeld in het respectieve dialoogscript [dlg.REST_Auswahl_Artikel]).
- Voorraad bijwerken (Dit script kan worden gebruikt om de voorraad van een item te vergelijken met de voorraad van de online shop. De voorraad op de server wordt overschreven door de voorraad van gFM-Business).
- Klanten bijwerken (Dit script wordt gebruikt om klantgegevens in de online shop bij te werken. De gegevens in de onlineshop worden overschreven met de gegevens uit gFM-Business. Om dit script aan te roepen, moet de parameter [ID-Export] worden voorzien van de ID van het record met klantgegevens).
- Bestelstatus bijwerken (Dit script wordt gebruikt om de bestelstatus van de online shop bij te werken in gFM-Business. De gegevens in gFM-Business worden overschreven met de gegevens uit de onlineshop. Om dit script aan te roepen, moet de parameter [ID export] worden voorzien van de ID van het orderdatarecord).
- Artikel bijwerken (Dit script wordt gebruikt om artikelgegevens in de online shop bij te werken. De gegevens in de onlineshop worden overschreven met de gegevens uit gFM-Business. Om dit script aan te roepen, moet de parameter [ID-Export] worden voorzien van de ID van het artikelgegevensrecord).
REST_WooCommerce_API_v3 (gegevenstype|extern systeem|{object|ID export}|)
Dit script bevat alle subscripts voor het importeren en exporteren van gegevens in combinatie met online shops op basis van WooCommerce. Dit script bevat dezelfde opdrachtparameters als het hierboven beschreven script voor Gambio online shops.
REST_Shopware_5x_API (gegevenstype|extern systeem|{object|ID export}|)
Dit script bevat alle sub-scripts voor het importeren en exporteren van gegevens in combinatie met Shopware gebaseerde online shops. Dit script bevat dezelfde opdrachtparameters als het hierboven beschreven script voor Gambio online shops.
Velden uitbreiden voor een bestaande online winkel
De "REST_Shopsystem" interface scripts bevatten alle subscripts die nodig zijn om gegevens uit de online shop te importeren. In elk relevant subscript worden de gegevens die moeten worden opgehaald uit de winkel eerst opgeslagen in een Variabele opgeslagen, bijv:
Variabele instellen [$artikel_nr ; Waarde: MBS("JSON.GetStringValue"; MBS("JSON.GetObjectItem"; $objekt; "productModel" )) ]
Als deze variabele is ingesteld, worden functies van de MBS-plugin gebruikt om het veld [productModel] van de online shop op te vragen. In dit geval is het een tekstveld, dus wordt de functie "JSON.GetStringValue" gebruikt. Voor getalvelden wordt de functie "JSON.GetIntegerValue" of "JSON.GetDoubleValue" gebruikt. De gegevenstypen moeten strikt worden onderscheiden, anders kan de functie niet worden uitgevoerd. Nadat de variabelen voor alle velden zijn ingesteld, worden de in de variabelen opgeslagen gegevens naar de gFM-Business-tabellen geschreven met de MBS-functie "FM.InsertRecord".
Als je extra velden uit de online shop wilt importeren, maak je gewoon extra variabelen voor de gewenste extra velden en breid je de functie "FM.InsertRecord" uit om de gegevens naar de gFM Business-tabellen te schrijven.
De variabelen $json en $object
Voor alle functies worden de gegevens die vanuit de webwinkel worden aangeleverd, volledig opgeslagen in de variabele $json. Deze variabele bevat dus altijd de volledige JSON-gegevensstroom die door de online shop is geleverd. Afhankelijk van de definitie bevat de variabele $object slechts een deel van de aangeleverde gegevens, bijvoorbeeld een gegevensrecord. Als je meer tabellen wilt toevoegen aan de REST-API-interface van de onlineshop of van shopuitbreidingen, moet je een nieuwe query uitvoeren met het betreffende eindpunt naar de interface binnen een importscript. Voor de duidelijkheid kun je het JSON-resultaat ook opslaan in een aparte variabele, bijvoorbeeld "$json_extension_1" en "$objekt_extension_1".
De interface uitbreiden met nog een online winkel
Het toevoegen van een nieuwe online shop die nog niet wordt ondersteund door gFM-Business is in principe vrij eenvoudig en bestaat uit de volgende stappen:
- De nieuwe online winkel toevoegen in gFM-Business onder [Instellingen > Online shop], rekening houdend met de aanmeldingsgegevens en eindpunten voor alle gegevenstypen
- Een bestaand interfacescript duplicerenbijvoorbeeld "REST_Shopware_5x_API" en hernoem het nieuwe script naar de naam van het nieuwe shopsysteem, bijvoorbeeld "REST_Magento_xy_API".
- Pas de velden in alle functies in het nieuwe importscript aan. Voorwaarde is dat de nieuwe online shop ook een REST API heeft. Alle variabelen die al zijn besproken in het gedeelte "Velden uitbreiden voor een bestaande onlineshop" moeten worden aangepast. De namen van de variabelen mogen niet worden gewijzigd. Als er nieuwe velden/variabelen worden toegevoegd, moeten deze ook worden meegenomen in de MBS-functies "FM.InsertRecord" of "FM.UpdateRecord". Alle JSON-waarden worden uitgelezen met MBS-functies in de standaardversie van gFM-Business. Het is ook mogelijk om deze MBS-functies te vervangen door FileMaker-functies (bijvoorbeeld JSONGetElement).
- De dialoogscripts "dlg.REST_Auswahl_xyz" uitbreiden. De importscripts voor alle online shops worden vanuit deze scripts aangeroepen, afhankelijk van de selectie. Als er een nieuw shopsysteem wordt toegevoegd, moeten deze selectiescripts ook worden uitgebreid met de scriptoproep voor de nieuwe onlineshop. De naam van de online shop die is ingesteld onder [Instellingen > Online shop] moet de tekstzin bevatten die in deze scripts wordt opgevraagd in de variabele $shopsystem.
Voor bestaande systemen raden we aan het productieve systeem te dupliceren voor de uitbreiding van de shopinterface en de ontwikkeling eerst op een testsysteem uit te voeren om de echte database niet in gevaar te brengen met latere testruns.
Uitbreiding van de interface door een servicepartner of door ons
Wij of een van onze servicepartners helpen u graag persoonlijk bij de uitbreiding van de online shop-interface in het kader van een open licentie. We kunnen de volledige gewenste uitbreiding voor u implementeren of u of uw ontwikkelaar passende coaching bieden voor de uitbreiding van de interface of voor andere vragen met betrekking tot de gFM-Business ERP-software. Neem gerust contact met ons op!
Meer informatie over de open licentie van de gFM-Business ERP-software

Markus Schall ontwikkelt sinds 1994 databases, interfaces en bedrijfsapplicaties op maat op basis van Claris FileMaker. Hij is Claris-partner, FMM Award-winnaar 2011 en ontwikkelaar van de ERP-software gFM-Business. Hij is ook auteur van boeken en oprichter van de M. Schall Uitgevers.


