Sneller en beter relaties invoeren in je CRM systeem Invantive Estate

Het Handelsregister van de Kamer van Koophandel

In het handelsregister staat veel interessante informatie over ondernemingen. Die informatie is ook interessant omdat de ondernemingen een verplichting hebben deze gegevens correct te houden.

In een vorige bijdrage heb ik beschreven hoe je snel en massaal ontbrekende relatiegegevens kunt toevoegen en/of bijwerken uit het handelsregister met webservices.nl vanuit Oracle PL/SQL. In deze bijdrage laat ik je zien hoe je een aanvullende bedrijfsregel kunt gebruiken om door alleen het invoeren van het KvK nummer een nieuwe relatie op te voeren. Uiteraard inclusief gegevens uit het handelsregister.

Aanvullende bedrijfsregels

Een aanvullende bedrijfsregel is een concept binnen Invantive Estate. “Vanaf de fabriek” heeft de software een aantal mogelijkheden en controles. Soms wil je specifiek voor je eigen organisatie mogelijkheden en/of controles toevoegen. Het automatisch nummeren van nieuwe projecten is een veel voorkomende voorbeeld van een extra mogelijkheid, specifiek voor je eigen organisatie. Maar je kunt ook eigen controles toevoegen. Bijvoorbeeld dat als noodprocedure alleen het hoofd van de financiële administratie inkoopopdrachten kan verstrekken op projecten.

aanvullende-bedrijfsregel-organisaties-voor-webservices-nl

Een aanvullende bedrijfsregel leg je vast bij een bedrijfsobject. Bedrijfsobjecten hebben de vorm van een speciaal soort database view. Zie onderstaand plaatje van een aanvullende bedrijfsregel die via de web interface opgevoerd is.

Een aanvullende bedrijfsregel bestaat uit een stukje code in PL/SQL. Deze PL/SQL code kan een aantal extra variabelen gebruiken die alleen binnen aanvullende bedrijfsregels een functie hebben:

  • :action: het SQL statement dat de aanvullende bedrijfsregel laat uitvoeren; ‘INSERT’, ‘UPDATE’ of ‘DELETE’.

  • :action_moment: het moment waarop de aanvullende bedrijfsregel uitgevoerd, voor (‘B’) of na (‘A’) het bijwerken van het bedrijfsobject.

  • :last: de laatst gevulde waarde van het bedrijfsobject (bij verwijderen de situatie voor verwijderen, anders altijd gelijk aan :new).

  • :old: de vorige waarde van het bedrijfsobject.

  • :new: de nieuwe waarde van het bedrijfsobject.

Oracle PL/SQL code voor het ophalen van gegevens

Deze aanvullende bedrijfsregel wordt uitgevoerd iedere keer als een “Organisatie” bedrijfsobject wijzigt. De instellingen hiervoor staan in de afbeelding hierboven.

Een aanvullende bedrijfsregel wordt twee keer aangeroepen: een keer vóór en een keer ná het wijzigen van het bedrijfsobject. In dit voorbeeld worden eerst de adresgegevens opgehaald voor het opvoeren van een organisatie :action_moment='B' bij het OpenKvK. Dit is een gratis dienst.

Vervolgens wordt de organisatie toegevoegd.

Daarna :action_moment='A' worden de overige gegevens zoals personeelsgrootte en contactpersoon opgevoerd op basis van Webservices.nl. Hiervoor is een tegoed vereist.

--
-- Address information is fetched from www.openkvk.nl.
--
if :action_moment = 'B'
and :last.lvr_kvk_nummer is not null
and ( :last.lvr_code is null or :last.lvr_code = :last.lvr_kvk_nummer )
and :last.lvr_plaats is null
then
  xxive_lvr.fetch_kvk
  ( :last.lvr_kvk_nummer
  , :last.lvr_code
  , :last.lvr_naam
  , :last.lvr_adres_regel_1
  , :last.lvr_postcode
  , :last.lvr_plaats
  , :last.lvr_website_url
  );
  :last.lvr_code := :last.lvr_kvk_nummer; -- Avoid removal of leading 0s.
  :last.tal_code := 'nl'; -- Dutch companies all speak Dutch.
end if;
--
-- Webservices.nl provides additional information
-- such as contactpersons and SBI activity codes.
--
if :action_moment = 'A'
and :action = 'INSERT'
and :last.lvr_kvk_nummer is not null
and :last.lvr_code = :last.lvr_kvk_nummer
then
  itgen_session.set_session_info
  ( 'toad.sql'
  , 'install'
  , 'system'
  , 'maintain organizations from chamber of commerce'
  , coalesce(sys_context('userenv', 'ip_address'), '?')
  , sys_context('userenv', 'host')
  , 'n/a'
  , 'webservices.nl sample ' || to_char(sysdate, 'YYYYMMDDHH24MISS')
  );
  --
  -- Lookup additional information from webservices.nl
  --
  xxive_lookup_ws_nl_kvk(:last.lvr_kvk_nummer);
end if;