WorkBase

Aanvullende programma's

Handleiding · 1 onderwerpen

In dit hoofdstuk
  1. WorkBase Import

WorkBase Import

Artikelen importeren, assortimentswijzigingen verwerken of artikelen bulkmatig verwijderen

Inleiding

WorkBase Import (WbImport.exe) is een aanvullend programma bij WorkBase waarmee u artikelen in bulk kunt importeren, een assortimentswijziging vanuit een Excel-bestand kunt verwerken, of artikelen kunt verwijderen op basis van een lijst. Het programma leest CSV-bestanden uit een map “csv\” en schrijft direct naar de Firebird-database van WorkBase.

OPMERKINGDit programma wordt naast WorkBase gedraaid en spreekt direct de database aan. Zorg dat WorkBase op dat moment niet in gebruik is voor dezelfde administratie, om conflicten te voorkomen.

Gebruiksdoel

  • Grote aantallen artikelen importeren vanuit een CSV (bijv. leverancier-catalogus)
  • Bestaande artikelen in bulk bijwerken (prijs, omschrijving, barcode)
  • Hoofdleverancier-koppelingen leggen
  • Assortimentswijzigingen vanuit een .xlsx-bestand uitsplitsen in nieuwe artikelen en te verwijderen artikelen
  • Artikelen in bulk verwijderen op basis van artikelcode of barcode, met voorraadbehoud
OPMERKING📖 Voor CSV-imports vanuit WorkBase zelf (zonder extern programma) zie 03 - Artikelen importeren in de map 03 - Import-Export.

Voorbereiding

Plaats CSV-bestanden

CSV-bestanden plaatst u in een submap csv\ in de map waar WbImport.exe staat. Het programma leest alle *.csv bestanden uit deze map.

Configuratiebestand WbImport.dat

Het programma gebruikt een configuratiebestand WbImport.dat in dezelfde map als het programma. Dit bestand wordt automatisch aangemaakt bij de eerste start met standaardwaarden.

RegelInstellingStandaardwaarde
1IB-Server (Firebird-server)localhost
2Locatie database (pad naar .FDB)C:\Data\Database\Bedrijf01.FDB
3Default BTW-code4
4Default eenheidSTUK
5Default leverancier (relatienummer)-1
6Default artikelgroep-1
7Startcode (voor automatisch nummeren)1000000000
8Genereer artikelcode (J/N)J
9Artikelcode procedure (0-4)0
LET OPWijzig het .dat-bestand alleen als u weet wat u doet. Bij twijfel verwijder het bestand; het wordt dan opnieuw met standaardwaarden aangemaakt.

Mappingbestand kortingscodes.txt

Naast WbImport.exe kan een bestand kortingscodes.txt staan. Hierin koppelt u een kortingscode aan een inkoopkorting-percentage en een artikelgroep. Als de CSV een kolom KORTINGSCODE heeft, gebruikt het programma deze mapping in plaats van de waarden in de UI.

KolomInhoud
KortingscodeCode zoals in het CSV voorkomt (bv. AA, AB, MT)
PercentageKortingspercentage op verkoopprijs, met %-teken toegestaan (bv. 30%)
ArtikelgroepCode van de artikelgroep in WorkBase (bv. MAKACC-AA)

Regels die beginnen met # of // zijn commentaar en worden overgeslagen. Scheidingsteken tussen de velden is een tab of een of meerdere spaties.

TIPMist een code in de mapping? Dan valt het programma terug op de UI-waarden (Inkoopprijs : korting % en Default ArtikelGroep) en komt er een waarschuwing in het importlog.

Logbestanden per import

Bij elke import- of verwerkingsactie maakt het programma een uniek logbestand aan in de submap log\. De bestandsnaam bevat de oorspronkelijke bestandsnaam en een tijdstempel, bijvoorbeeld log\Prijslijst_2026-04-19_143200.log. Zo kunt u altijd achteraf reconstrueren wat er bij een specifieke import gebeurd is.

Programma opstarten

  • Start WbImport.exe.
  • Het hoofdscherm “WorkBase Import / Verwijderen” verschijnt. Rechtsboven staat het versienummer uit de VERSIONINFO van het programma.
  • Onderin het scherm staat een logvenster dat de verbindingsstatus met de database en de voortgang van verwerkingen toont.
  • Bovenin zijn twee tabs: Importeren en Verwijderen.
  • Rechtsonder staat een Afsluiten-knop waarmee u het programma netjes afsluit (instellingen worden opgeslagen).
[Screenshot: WorkBase Import hoofdscherm]
OPMERKINGAls u het programma al een keer start terwijl er nog een sessie open staat, krijgt u een waarschuwing. Een lockfile voorkomt dat twee instances tegelijk de database wijzigen.

Tab Importeren — artikelen inlezen

Op de tab Importeren leest u artikelen uit CSV-bestanden in voor een specifieke leverancier.

Stap 1 — Leverancier en korting

VeldBeschrijving
Relatienummer leverancierHet WorkBase-relatienummer van de leverancier. Na het veld verlaten wordt de naam opgehaald en getoond.
NaamDe naam van de leverancier, automatisch gevuld.
Inkoopprijs : korting %Percentage korting op de verkoopprijs om de inkoopprijs te berekenen. Wordt overruled door de kortingscode-mapping als die aanwezig is.
Artikelen altijd toevoegenVinkje: ook nieuwe artikelen toevoegen als deze nog niet bestaan.
HoofdleverancierVinkje: registreer deze leverancier als hoofdleverancier van de artikelen.

Stap 2 — Default instellingen

In de groepsbox “Default instellingen” stelt u standaardwaarden in voor artikelen die nieuw worden aangemaakt:

VeldBeschrijving
Nieuwe artikelen toevoegenVinkje: bij het importeren worden nieuwe artikelen aangemaakt. Als uit, dan worden alleen bestaande artikelen bijgewerkt.
Default BTW-codeBTW-code voor nieuwe artikelen (keuzelijst uit WorkBase-BTW-tabel).
Default EenheidEenheid voor nieuwe artikelen (keuzelijst uit WorkBase-eenheden).
ArtikelGroepArtikelgroep-code voor nieuwe artikelen.
Genereer ArtikelcodeVinkje: WorkBase Import genereert automatisch een artikelcode.
Voorloop CodeVast voorvoegsel voor gegenereerde codes (max. 5 letters).
Start CodeStartnummer voor automatische nummering (alleen cijfers, max. 10 posities). Standaard 1000000000.

Keuze codegeneratie

Met de keuzelijst “Code” bepaalt u hoe de artikelcode tot stand komt:

KeuzeArtikelcode wordt
Code = BarcodeDe barcode uit het CSV wordt de artikelcode (na normalisatie)
Code = Leverancier artikelcodeDe artikelcode van de leverancier wordt overgenomen
Code = LeverancierID - Leverancier ArtikelcodeCombinatie: relatienummer + streepje + leveranciersartikelcode
Code = VoorloopCode - Leverancier ArtikelcodeCombinatie: voorloopcode + streepje + leveranciersartikelcode
Code = Genereer een code dmv automatisch nummerenAutomatisch oplopend nummer vanaf Start Code
OPMERKINGDe artikelcode wordt altijd afgekapt op maximaal 20 posities (DB-kolom is VARCHAR(20)). Als er afgekapt wordt komt er een regel in het log.
TIPGebruik “Code = Barcode” als uw leverancier een goede barcode meelevert en u deze als eigen artikelcode wilt hanteren. Gebruik “Genereer” als u een eigen nummersysteem wilt aanhouden.

Stap 3 — Importeren starten

  • Plaats uw CSV-bestanden in de map csv\.
  • Controleer dat alle velden op de tab Importeren juist zijn ingevuld.
  • Klik op de Start-knop rechts in het scherm.
  • De voortgang wordt getoond in de progressbar onderin.
  • In het logvenster verschijnen meldingen per ingelezen regel. Parallel wordt een gedetailleerd logbestand in de map log\ geschreven.
  • Na afloop wordt het bronbestand gekopieerd naar csv\history\ en verwijderd uit de map csv\.
  • Alle CSV-bestanden in de map csv\ worden achter elkaar verwerkt.
[Screenshot: Tab Importeren met instellingen]

Stap 4 — Importeren stoppen

Een lopende import kunt u afbreken met de Stop-knop. Reeds verwerkte regels blijven behouden in WorkBase. Is er niets actief, dan komt er “Geen actieve taak om te stoppen” in het logvenster.

Assortimentswijziging uit .xlsx inlezen

Onderaan het tabblad Importeren staat een knop Assortimentswijziging uit .xlsx inlezen.... Hiermee kunt u een Excel-bestand met NIEUWE en VERVALLEN artikelen uit«splitsen in twee CSV’s die u daarna rustig kunt controleren en importeren.

Werking

  • Klik op Assortimentswijziging uit .xlsx inlezen.... Een bestandsdialoog opent standaard in de map csv\.
  • Selecteer het .xlsx-bestand. Het programma leest de eerste sheet uit en detecteert automatisch of het om een geldig ZIP-gebaseerd XLSX-bestand gaat.
  • Rijen worden geclassificeerd en uitgesplitst (zie regels hieronder).
  • Naast het originele xlsx worden één of twee CSV-bestanden weggeschreven:
BestandInhoud
<naam>_NIEUW.csvNieuwe artikelen. Header: ARTIKELCODE;OMSCHRIJVING;BARCODE;VERKOOPPRIJS;KORTINGSCODE
<naam>_VERVALLEN.csvBarcodes van te verwijderen artikelen, 1 per regel, geen header
  • Na afloop verschijnt een overzicht in het log en een dialoog met het resultaat.
  • Het _NIEUW.csv kunt u daarna via de normale Start-knop importeren. Het _VERVALLEN.csv wordt automatisch herkend op het tabblad Verwijderen.

Interpretatie van de xlsx-rijen

De bron-xlsx heeft per rij twee blokken: kolommen A-D voor het “oude” product en kolommen E-H voor het “nieuwe” product. Kolom I bevat optioneel een Kortingscode.

SituatieActie
A/C/D leeg, E/G/H gevuldNIEUW product -> 1 regel in _NIEUW.csv
A/C/D gevuld, E/G/H leegProduct VERVALT -> 1 regel in _VERVALLEN.csv
A/C/D gevuld EN E/G/H gevuldOud vervalt EN nieuw erbij -> 1 regel in elk bestand
Alle data-cellen leeg of '-'Rij wordt overgeslagen
Alleen kolom A gevuldSectie-titel -> overgeslagen maar gelogd
OPMERKINGKolommen B (omschrijving oud) en F (omschrijving nieuw) worden niet meegenomen in de gevuld-check. Ze mogen leeg zijn zonder dat de rij anders geclassificeerd wordt. Een cel met alleen een '-' geldt als leeg.
TIPDe eerste data-regel van het xlsx (met kopteksten zoals “Artikelnummer - nieuw”) wordt automatisch als header herkend en overgeslagen, zodat deze niet als data-rij in _NIEUW.csv terechtkomt.

Automatische verwerking van barcodes en omschrijvingen

Tijdens het importeren of uitsplitsen worden een aantal normalisaties uitgevoerd om data-integriteit te borgen:

VeldNormalisatie
Barcode (EAN)Als de barcode volledig uit cijfers bestaat en langer is dan 13, worden voorloop-nullen gestript tot de lengte 13 is. 14-cijferige EAN-codes worden zo netjes opgeslagen.
ArtikelcodeAfgekapt op maximaal 20 posities (DB-kolom VARCHAR(20)); een inkortings-actie wordt gelogd.
OmschrijvingAfgekapt op maximaal 100 posities; dubbele quotes (") vervangen door twee apostrofen; CR/LF weggehaald (zodat SQL niet breekt).
Bedragen (€)Herkent zowel “12,50”, “12.50”, “1.000,50” als “1,000.50” en levert altijd een waarde met punt als decimaalteken.

CSV-bestand: structuur

Het programma verwerkt CSV-bestanden met een kopregel en datarijen. De volgende kolomnamen worden herkend (aliases worden automatisch gematcht, hoofdletter-ongevoelig):

VeldHerkende kolomnamen
ArtikelcodeARTCODE, ARTIKELCODE, ARTIKELNUMMER, PRODUCTCODE, PRODUCT CODE
VerkoopprijsVERKOOPPRIJS, BRUTOPRIJS, ADVIESPRIJS, PRIJS, ADVIESVERKOOPPRIJS
KostprijsKOSTPRIJS
InkoopprijsINKOOPPRIJS, NET PRICE
LeverancierRID, LEVERANCIER, LEVERANCIERNR, RELATIE, RELATIENUMMER, RELATIENR, RELATIEID
OmschrijvingOMSCHRIJVING, DESCRIPTION, PRODUCTOMSCHRIJVING, PRODUKTOMSCHRIJVING
BarcodeEAN CODE, BARCODE, EANCODE, EAN
Leverancier artcodeLEVERANCIERCODE, LEVERANCIERARTCODE, LEVARTCODE
KortingscodeKORTINGSCODE, KORTINGCODE, KORTING CODE, DISCOUNT CODE, DISCOUNTCODE
OPMERKINGPuntkomma (;) is het scheidingsteken. Minimaal de kolommen Artikelcode of Barcode én Omschrijving moeten aanwezig zijn.

Tab Verwijderen — artikelen in bulk verwijderen

Op de tab Verwijderen kunt u een lijst met codes plakken of automatisch laten inlezen. Het programma verwerkt elke regel afzonderlijk en past afhankelijk van de situatie een DELETE of een status-wijziging toe.

Automatisch inlezen _VERVALLEN.csv

Wanneer u naar het tabblad Verwijderen schakelt, zoekt het programma automatisch naar een *_VERVALLEN.csv in de map csv\. Wordt er een gevonden, dan krijgt u de vraag:

Gevonden verwijder-lijst: <naam>_VERVALLEN.csv Deze inladen in Memo1?

Bij Ja wordt het invoervak gevuld, de radiobutton op Barcode gezet, en het CSV-pad onthouden. Succesvolle regels verdwijnen daarna automatisch uit zowel het invoervak als het bestand op schijf, zodat u later verder kunt gaan waar u gebleven was.

Handmatig invoeren

  • Ga naar het tabblad Verwijderen.
  • Plak in het invoervak een lijst met codes (één per regel). Dit kunnen artikelcodes of barcodes zijn.
  • Kies bij Maak uw keuze: Artikelcode of Barcode.
  • Klik op Start om de verwerking uit te voeren.
  • Het logvenster toont per regel welke actie is uitgevoerd.
[Screenshot: Tab Verwijderen met ingeladen VERVALLEN-lijst]

Verwerkingslogica per regel

Voor elke regel doorloopt het programma deze stappen:

StapActie
1. Artikelcode bepalenBij zoeken op CODE is de regel zelf de artikelcode. Bij zoeken op BARCODE wordt eerst SELECT CODE FROM RBSARTIKEL WHERE BARCODE = ... uitgevoerd (met leading-zero-fix).
2. Voorraad opvragenVia systeem-procedure VOORRAADART(ARTCODE): de som van alle voorraadposities wordt berekend (BACK + BESTEL + FACTUUR + LEVERING + ONTVANGST + INORDER + INBEWERK + INPROD + WERK).
3a. Voorraad > 0Artikel wordt NIET verwijderd. STATUS wordt op 'N' gezet = geblokkeerd voor inkoop. Het artikel blijft verkoopbaar tot de voorraad op is.
3b. Voorraad = 0, DELETE luktArtikel wordt fysiek verwijderd uit RBSARTIKEL.
3c. Voorraad = 0, DELETE faalt (historie-FK)Artikel krijgt STATUS = 'V' (vervallen). Dit gebeurt bij artikelen met VOORRAADTRANSACTIES of andere historie.
4. OpruimenSuccesvol verwerkte regels verdwijnen uit het invoervak. Als er een gekoppeld _VERVALLEN.csv was, wordt dat opnieuw weggeschreven zonder die regels; is alles klaar, dan wordt het bestand verwijderd.
LET OPVerwijderen is definitief. Maak vooraf een back-up van uw database. Voor artikelen met voorraad kiest het programma automatisch voor de veilige variant (STATUS = 'N').

Extra voorloop-nul in barcode

EAN-barcodes worden soms met een extra voorloop-nul aangeleverd (14 posities in plaats van 13). Als de te zoeken waarde met een '0' begint, zoekt het programma ook op de versie zonder die voorloop-nul. Zo vindt 08711234567890 alsnog 8711234567890 in de database.

Logvenster

Onderin het hoofdscherm staat een logvenster (Memo) waarin alle verbindings- en verwerkingsmeldingen verschijnen:

  • Verbonden met : <server> <database> — succesvolle verbinding
  • Geen verbinding — controleer IBServer/IBDataMap in WbImport.dat
  • >>> Assortimentswijziging xlsx: ... — start van een xlsx-splitsing
  • -> <naam>_NIEUW.csv — uitgeschreven CSV-bestanden
  • Artikelcode ingekort tot 20 posities: X -> Y — automatische afkap
  • DELETE geblokkeerd door FK, status V gezet — fallback bij FK-fout
  • <<< Klaar (nieuw=N vervallen=M skip=X) — eindresultaat

Technische gegevens

AspectWaarde
ProgrammaWbImport.exe
ConfiguratiebestandWbImport.dat (in dezelfde map)
Kortingsmappingkortingscodes.txt (in dezelfde map)
CSV-mapcsv\ (submap in programma-map)
Logmaplog\ (submap in programma-map, per-import logbestand)
LockfileWbImport.lock (voorkomt dubbele instances)
Database-typeFirebird (.FDB)
StockprocedureVOORRAADART(ARTCODE) - telt alle voorraadposities
Verbinding viaCoreDatabaseUnit (IB/Firebird)
CopyrightWhite Frost B.V.
Uitgevoerd doorWorkBase B.V.

Veelgestelde vragen

Waarom krijg ik “Geen verbinding”?

Controleer de IBServer en IBDataMap in WbImport.dat. De Firebird-service moet draaien op de opgegeven server en het databasebestand moet bereikbaar zijn met lees/schrijfrechten.

Mag WorkBase tegelijkertijd open staan?

Niet aanbevolen voor dezelfde administratie. De import schrijft direct in de database; gelijktijdige wijzigingen vanuit WorkBase kunnen conflicten opleveren.

Het xlsx-bestand wordt niet gelezen — wat nu?

Het programma detecteert of het bestand een geldig ZIP-archief is. Bij een bericht over “OLE Compound-bestand” is het een oude .xls of een versleuteld bestand. Open het in Excel en bewaar opnieuw als gewone .xlsx (niet “Strict OOXML”).

Kan ik een verwijder-actie onderbreken en later verdergaan?

Ja. Succesvol verwerkte regels verdwijnen uit het invoervak en uit het _VERVALLEN.csv bestand. De volgende keer dat u het tabblad Verwijderen opent krijgt u alleen de resterende regels aangeboden. Stopt u midden in de verwerking, dan komen ook die nog niet verwerkte regels terug bij het opnieuw openen.

Wat gebeurt er met artikelen die nog voorraad hebben?

Die worden niet verwijderd maar krijgen STATUS = 'N' (geblokkeerd voor inkoop). Het artikel blijft beschikbaar voor verkoop tot de voorraad op is.

Mijn verkoopprijs wordt 100x te groot in WorkBase

Dit kwam door een oude bug in de euro-parser die punten altijd als duizendtallen interpreteerde. Gefixt: 12.50, 12,50, 1.000,50 en 1,000.50 worden nu allemaal juist herkend. Update naar de recente versie van WbImport.exe.

Mijn omschrijving bevat apostrofen en aanhalingstekens

Geen probleem: apostrofen worden voor SQL correct geescaped en dubbele aanhalingstekens worden automatisch vervangen door twee apostrofen. De omschrijving wordt daarnaast ingekort tot 100 tekens als dat nodig is.

Kan ik bestaande artikelen bijwerken zonder nieuwe toe te voegen?

Ja. Vink Nieuwe artikelen toevoegen uit in de Default instellingen. Alleen bestaande artikelen (op basis van de gekozen codering) worden dan bijgewerkt.

Hoe weet ik welke rij welke actie kreeg?

Per import wordt een uniek logbestand in log\ weggeschreven met een tijdstempel in de naam. Daarin staat voor elke regel welke actie is uitgevoerd, welke korting/artikelgroep is toegepast, en eventueel welke fout is opgetreden.