Het vernummeren van relaties in één of meerdere Exact Online administraties is mogelijk met Invantive SQL.
Enkele Exact Online relaties vernummeren
Het vernummeren van een specifieke relatie kan heel eenvoudig met het volgende statement:
set use-http-disk-cache false
set use-http-memory-cache false
update exactonlinerest..accounts
set code = '1'
where name = 'Belastingdienst'
De eerste twee statements schakelen de caches uit, zodat niet per abuis met oude gegevens gewerkt wordt. Het update
statement werkt de relatiecode van de Belastingdienst bij.
Het is uiteraard verstandig om dit soort wijzigingen eerst te proberen op een testomgeving.
Meerdere Exact Online Relaties een nieuw nummer geven
Als het gaat om veel relaties, dan kan eerst een download gemaakt worden van de relaties in een selectie en opgeslagen in een tijdelijke tabel:
set use-http-disk-cache false
set use-http-memory-cache false
create or replace table accounts@inmemorystorage
as
select division
, id
, code
code_ist
label 'Code (ist)'
, code
code_soll
label 'Code (soll)'
, name
from exactonlinerest..accounts
--
-- Kies een aantal organisaties waarvan de naam begint met 'Belasting'.
--
where name like 'Belasting%'
select *
from accounts@inmemorystorage
Het resultaat van de laatste query is dan een tabel met relaties en ruimte voor het nieuwe nummer in het veld code_soll
zoals hieronder:
Pas in de tijdelijke tabel de nummers aan in de kolom code_soll
. Dat kan met update
statements als er een logica in zit, of gewoon met een platte download.
Het topic Massaal bijwerken relatiecodes in Exact Online naar specifieke nieuwe relatiecodes bevat een voorbeeld via een CSV-bestand.
Automatisch relatienummer bepalen op basis van Salesforce
Het is ook mogelijk een tweede datacontainer naar Salesforce toe te voegen en dan bijvoorbeeld de juiste nummers op te zoeken via een query op Salesforce op bijvoorbeeld een sterk gelijkende naam.
Kloppen de namen niet helemaal? Gebruik dan bijvoorbeeld de levenshtein
SQL-functie van Invantive SQL; die geeft een numerieke waarde aan het verschil door tekens weg te halen en toe te voegen:
select levenshtein('water', 'wetend')
met als resultaat 3. Invantive SQL biedt naast levenshtein
meer SQL-functies uit de literatuur om op klank of verschil twee namen te vergelijken:
metaphone
metaphone3
metaphone3_alt
double_metaphone
double_metaphone_alt
De uitleg van deze functies is te vinden in de Invantive SQL grammatica.
Teruglezen nieuwe nummers
Om de verwerking niet onnodig te belasten met relaties waar de nummers niet van wijzigen, kunnen daarna de relaties die geen nieuw nummer krijgen weggehaald worden:
delete accounts@inmemorystorage
where code_ist = code_soll
Tenslotte kunnen de nieuwe relatiecodes massaal geladen worden met statement:
synchronize ExactOnlineREST..Accounts
from accounts@InMemoryStorage
with update
identified
by division
, id
Deze statements zijn voor gebruik met bijvoorbeeld Invantive Office for Entrepreneurs of Invantive Premium Finance, maar niet met Invantive Office for Accountants. Indien er veel behoefte is aan een grafische schil, dan kan een module hiervoor toegevoegd worden aan Invantive Runtime, Invantive Control for Excel of Get My Report.
Andere relatievelden in bulk veranderen
Dit voorbeeld wijzigt het relatienummer. Het is net zo gemakkelijk om andere velden te wijzigen, zoals de naam van de relatie in Exact Online, de BTW-code of het KvK-nummer. Dit gaat ook massaal met het synchronize
-statement.
We gebruiken bijvoorbeeld zelf dagelijks een statement om de facturatiemethode voor alle relaties om te zetten in alle administraties naar PDF+XML:
use all
update /*+ http_memory_cache(false) http_disk_cache(false) */
exactonlinerest..accounts
set invoiceattachmenttype = 3
where invoiceattachmenttype != 3
Dit duurt circa 300 ms per relatie waar een wijziging op nodig is.