Gebruikers met meerdere administraties hebben vaak de wens om gegevens over meerdere Exact Online administraties gelijk te houden, zoals bijvoorbeeld:
- kostenplaatsen
- kostendragers
- grootboekschema / grootboekrekeningen
- relaties
- adressen
- contactpersonen
- bankrekeningen
Dit artikel legt uit hoe de kostenplaatsen en/of kostendragers gebruikt voor analytisch boekhouden eenvoudig gesynchroniseerd kunnen worden van een Exact administratie naar meerdere administraties.
De synchronisatie is gerealiseerd op basis van het synchronize-statement. Meer uitleg hierover is te vinden in het volgende artikelen en de daaraan gekoppelde artikelen:
Een gelijke structuur qua stamgegevens in Exact Online kan soms gerealiseerd worden met een Exact Online template administratie, maar moet dan vroegtijdig goed opgezet worden, is soms inflexibel en vereist goed inzicht in de wensen en planning vooraf.
Een alternatief is het gebruik van Invantive SQL of het gebruik van de voorgedefinieerde modules voor replicatie in Get My Report.
Het voorbeeld uit dit artikel kan eenvoudig uitgebreid worden naar andere relatief triviale soorten stamgegevens zoals grootboekrekeningen. Voor complexere stamgegevens zoals artikelen, klanten en leveranciers wordt het gebruik van het synchronize-statement met zogenaamde “triggers” aangeraden. Voor synchronisatie van boekingen wordt handmatig geschreven SQL-code aangeraden gezien het vaak grote volume van miljoenen boekingen en de onderliggende bedrijfslogica die meestal veel meer vereist dan alleen synchroniseren.
Waarschuwing bij Synchronisatie
Net zoals bij template administraties voor synchronisatie geldt ook hier: synchronisatie kan massaal gegevens veranderen en kan een onverwachte uitwerking hebben. Controleer altijd vooraf en achteraf de resultaten en voer vooraf een test uit op een aparte omgeving.
Synchronisatie Kostenplaatsen
Het synchroniseren van kostenplaatsen uit een bron-administratie in Exact Online is met Invantive SQL eenvoudig te realiseren via de volgende code:
declare
--
-- Divisiecode van de bronadministratie.
--
l_division_code_source number := 10523123;
begin
--
-- Selecteer de gewenste administraties.
--
use all@eol;
--
-- Schakel caching uit omdat we alleen maar gaan bijwerken.
--
set use-http-disk-cache@eol false;
set use-http-memory-cache@eol false;
--
-- Maak een tabel met de gewenste situatie.
--
-- Let op: het synchronize-statement van Invantive SQL gebruikt
-- identieke kolomnamen om de huidige waardes en gewenste
-- situatie bij elkaar te zetten.
--
create or replace table CostCentersSoll@InMemoryStorage
as
select sdn.Code
Division
, ccr.Code
Code
, ccr.Description
Description
, ccr.Active
Active
from ExactOnlineREST..CostCenters@eol ccr
join SystemDivisions@eol sdn
on sdn.code != ccr.Division
where ccr.Division = l_division_code_source
;
--
-- Synchroniseer de doeladministraties met de inhoud van de
-- bronadministratie. Doordat de optie "delete" weggelaten is
-- (wat trouwens meestal ook niet kan doordat de gegevens al
-- gebruikt zijn), worden in de doeladministraties geen gegevens
-- weggehaald. Er worden uitsluitend gegevens toegevoegd en/of
-- bijgewerkt.
--
synchronize CostCentersSoll@InMemoryStorage
to ExactOnlineREST..CostCenters@eol
with insert
or
update all
--
-- Identificatie vindt plaats op basis van de natuurlijke sleutel
-- waar mensen een kostenplaats aan herkennen: de administratie
-- en de code van de kostenplaats.
--
identified
by Division
, Code
--
-- Accepteer 50 fouten zoals bijvoorbeeld duplicaten.
-- De fouten worden onthouden, maar pas aan het einde of bij de 51e
-- fout gemeld aan de gebruiker.
--
continue on first 50 errors
;
dbms_output.put_line(to_char(sqlrowcount) || ' rows have been changed/created.');
end;
Duur synchronisatie
Het synchroniseren van kostenplaatsen, kostendragers of andere stamgegevens is onderworpen aan dezelfde beperkingen als andere Exact Online-koppelingen:
- gemiddeld één mutatie van een kostenplaats per seconde per administratie;
- maximaal 5.000 mutaties per (kalender)dag.
Het synchroniseren van 600 kostenplaatsen naar 4 administraties kost daarom tenminste 10 minuten.