Wat deze taak is en wanneer hij draait
Het is een geplande taak van Odoo met de naam Shopify-producten synchroniseren (Shopify Sync Products). Hij draait elk uur en staat na de installatie van de module uit, dus zolang niemand hem activeert, doet hij niets. Hij bestaat in alle gepubliceerde branches van de module (Odoo 17, 18, 19 en 20); in Odoo 17 is hij zo ingesteld dat hij zich eindeloos herhaalt.

De winkels open je via het menu Shopify › Configuratie › Winkels. Zie je een deel van het menu niet, dan ligt dat aan de rechten: het deel Shopify vraagt Lezer en het deel Configuratie vraagt Operator.


Een voorbeeld om een complete ronde te volgen
Voorbeeld Fictief geval: het bedrijf en de cijfers zijn verzonnen om de werkwijze uit te leggen.
Casa Olivar is een verzonnen bedrijf in huishoudartikelen met een hoofdwinkel op Shopify en een tweede, kleine winkel, beide gekoppeld aan hun Odoo. Marta, de beheerder, installeert de module en activeert de taak Shopify-producten synchroniseren. In Odoo 20 doet de taak bij elke ronde het volgende wanneer het tijd is voor de volgende uitvoering:
- Odoo start de taak en controleert eerst of degene die hem uitvoert beheerder is. Zo niet, dan stopt hij met de melding
Only an administrator can run this scheduled action.en doet hij verder niets. - Hij kiest de winkels om mee te werken: de winkels die actief zijn, productsynchronisatie ingeschakeld hebben en opgeslagen inloggegevens hebben, hetzij een toegangstoken, hetzij het geheim van de API van de app. De tweede winkel van Casa Olivar heeft nog geen van beide, dus die doet niet mee aan de ronde.
- Voor elke gekozen winkel vraagt de taak de producten per pagina op bij Shopify.
- Elk product wordt afzonderlijk opgeslagen. Als er één mislukt, noteert de taak een waarschuwing in het technische logboek en gaat hij door naar het volgende: één slecht product breekt de ronde niet af. De taak telt de producten die wel zijn opgeslagen.
- De ronde eindigt als er geen pagina's meer zijn of als de paginalimiet van de winkel is bereikt. Als hij helemaal klaar is, slaat de taak de huidige tijd op als laatste synchronisatiemoment van producten. Als hij door de limiet werd afgekapt en er nog pagina's over waren, kan de taak in plaats daarvan de wijzigingsdatum van het laatst geziene product opslaan, mits die later is dan de datum die er al stond: nooit achteruit. Het idee is dat de volgende ronde van daaruit verdergaat in plaats van alles wat ongelezen bleef als gezien te beschouwen.
- Als de synchronisatie van een hele winkel mislukt, noteert de taak de fout in het technische logboek en gaat hij door met de volgende winkel.
- Er is één uitzondering: als FlexigoTech Cloud de synchronisatie pauzeert, stopt de ronde van die winkel zonder een product over te slaan en wordt hij niet als mislukt geregistreerd.
Bij Casa Olivar heeft de hoofdwinkel meer pagina's producten dan de limiet. De eerste ronde wordt afgekapt en het volgende uur gaat de taak verder vanaf het laatst geziene product, tot een ronde het einde haalt.
Wat je nakijkt als er niets gebeurt
Loop deze controles in volgorde langs.
- De taak staat uit. Zo staat hij na de installatie. Zolang hij niet wordt geactiveerd, draait hij niet.
- De winkel voldoet niet aan de voorwaarden. De taak pakt alleen winkels die actief zijn, productsynchronisatie ingeschakeld hebben en een toegangstoken of het geheim van de API van de app opgeslagen hebben. Een winkel met klantinloggegevens heeft mogelijk pas na de eerste aanroep een token, en daarom volstaan inloggegevens. Open de winkels via
Shopify › Configuratie › Winkels. - Degene die uitvoert is geen beheerder. De taak stopt met
Only an administrator can run this scheduled action.. - FlexigoTech Cloud heeft de synchronisatie gepauzeerd. De ronde van de betrokken winkel wordt afgebroken en niet als mislukt geregistreerd. Zonder abonnement, of met een opgeschorte dienst, stopt wat het abonnement levert; de gegevens blijven in je Odoo.
- De ronde werd afgekapt door de paginalimiet. Als er nog pagina's over waren, gaat de volgende ronde verder vanaf het laatst geziene product.
- Een bepaald product ontbreekt. Als dat product bij het opslaan mislukt, slaat de taak het over, laat een waarschuwing achter in het technische logboek en gaat door met de rest.
Wat je van dit voorbeeld leert
Een product met problemen wordt overgeslagen en een winkel die mislukt, houdt de verwerking van de volgende niet tegen. Wat de taak wel stopt, is dat geen beheerder hem uitvoert; een pauze van FlexigoTech Cloud breekt de ronde van de betrokken winkel af. Controleer daarom, als er "niets gebeurt", eerst of de taak geactiveerd is en of de winkel aan de voorwaarden voldoet.
Hoe FlexigoTech helpt
De module wordt eenmalig per versie betaald en vereist het abonnement op FlexigoTech Cloud (plan Conector: € 49 per maand of € 490 per jaar, excl. btw). De verbinding loopt via FlexigoTech Cloud, dat de inloggegevens versleuteld bewaart, de synchronisatie bewaakt en per e-mail waarschuwt als er iets misgaat. De module is gepubliceerd voor Odoo 17, 18, 19 en 20; de prijs per versie staat op de pagina van Odoo Apps en op de pagina van de module. Met het abonnement zit de module voor nieuwe Odoo-versies erbij als je hem op flexigotech.com hebt gekocht; in de Odoo App Store koop je elke versie daar.
Als je Odoo implementeert en wilt nakijken hoe de synchronisatie van je catalogus uitpakt, implementeert FlexigoTech Odoo 17, 18, 19 en 20 en ontwikkelt het connectoren en integraties op maat.
Lees verder
Gecontroleerd in de broncode van de connector (versie 17.0 en 20.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigobe_shopify_seller_connector 20.0 (d7e627b4): data/ir_cron_data.xml
- Broncode van de module: flexigobe_shopify_seller_connector 17.0 (437257e3): data/ir_cron_data.xml
- Broncode van de module: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/shopify_instance.py
- Broncode van de module: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
