Aide · silicon ioi

Pivot Expert - Referentiegids

Fiche

Inleiding #

ioi Pivot Expert is een dynamische draaitabel die uw ruwe gegevens omzet in interactieve visuele analyses.

Belangrijkste functies:

  • Groepeert en filtert gegevens per klant, agent, product, periode…
  • Automatische berekeningen: som, gemiddelde, min/max, telling…
  • Interactieve tabellen die realtime kunnen worden aangepast

Toegang: Lijst weergaven → Pivot Expert


Interface structuur #

Refresh knop #

Ververst de gegevens om de laatste wijzigingen weer te geven.

Query Profiles #

Analysebeheer:

  • Een bestaande analyse selecteren
  • Profielen aanmaken/wijzigen/verwijderen
  • Profielen importeren

3 manieren om een profiel aan te maken:

A. Op basis van een DocType #
  • Selecteer het DocType
  • Dubbelklik op velden om toe te voegen
  • Automatische configuratie
B. Op basis van ioi List Expert #
  • Importeer de structuur van een bestaande Expert weergave
  • Wijzigingen zijn onafhankelijk
C. Op basis van een SQL-query #
  • Schrijf of plak een SQL-query
  • Test de query voor het opslaan
  • Gebruik systeemvariabelen: {user}, {company}, {site}

Belangrijke opties:

  • Is public: De analyse toegankelijk maken voor andere gebruikers
  • Is standard: Markeren als standaardanalyse (niet wijzigbaar)
  • Limit to roles: Toegang beperken tot bepaalde rollen
  • Parameters: Dynamische filters (datums, artikelen, enz.)

Display Profiles #

Meerdere presentaties voor dezelfde analyse

Configuratie:

  • Beheer de weergave van rijen/kolommen
  • Visuele opties (afwisselende lijnen, automatische breedte, enz.)
  • Kolommen/rijen bevriezen
  • Algemene totalen weergeven
  • Exportformaat (CSV, Excel)

Beschikbare opties:

  • Alternating row background: Afwisselende grijze/witte rijen
  • Columns auto width: Automatische aanpassing kolombreedte
  • Collapse columns: Kolommen samenvatten
  • Collapse rows: Rijen samenvatten
  • Freeze columns: Linkerkolommen bevriezen
  • Show column total: Algemeen totaalkolom
  • Show row total: Algemeen totaalrij
  • Read only tree: Configuratiewijziging blokkeren
  • Vertical columns header text: Verticale kolomtitels

Tabelstructuur #

Values zone #

Definieert aggregatiemethoden:

  • Sum: Som
  • Average: Gemiddelde
  • Min/Max: Minimum/Maximum
  • Count: Totaal aantal (met duplicaten)
  • CountUnique: Aantal unieke waarden
  • Median: Mediaan
  • StDev/Var: Standaardafwijking en variantie

Columns zone #

Velden weergegeven als tabelkolommen

Rows zone #

Velden weergegeven als tabelrijen

Beschikbare bewerkingen:

  • Velden toevoegen/verwijderen (+/x knop)
  • Reorganiseren door slepen
  • Gegevens filteren
  • Sorteren door op kop te klikken

Filters #

Beschikbare filtertypes:

Tekst: gelijk, verschillend, bevat, begint met, eindigt met…

Numeriek: >, <, ≥, ≤, =, ≠

Datum: >, <, ≥, ≤, =, ≠, tussen

Astuce

Gefilterde velden zijn gemarkeerd met een specifiek pictogram.


Dynamische parameters #

Filteren in SQL-query (performanter dan tabelfilters)

Parametertypes:

  • Data: Tekst
  • Date: Datum
  • Datetime: Datum en tijd
  • Float: Decimaal numeriek
  • Link: Link naar een DocType

Gebruik in SQL:

WHERE document_date BETWEEN '{param_date_debut}' AND '{param_date_fin}'
WHERE item_id = '{param_item}'

Beschikbare systeemvariabelen:

  • {user}: Huidige gebruiker
  • {company}: Huidige bedrijf
  • {site}: Huidige site

Aanvullende tools #

System Console #

Geïntegreerde module om SQL-query’s te testen voordat u ze in Pivot Expert gebruikt.

Toegang: Menu → System Console

Adminer #

Externe databasebeheertool om complexe query’s te maken en te testen.

Toegang: https://db.uw_omgeving.ioi.online/adminer.php

Nuttige functies:

  • Verkenning van tabellen en structuur
  • SQL-query’s testen
  • Resultaten exporteren

Nuttige SQL-functies #

Tekenreeksmanipulatie:

  • CONCAT(a, b): Samenvoegen
  • SUBSTRING(text, start, length): Extraheren
  • UPPER(text) / LOWER(text): Hoofdletters/kleine letters
  • TRIM(text): Spaties verwijderen

Datums:

  • NOW(): Huidige datum/tijd
  • CURDATE(): Huidige datum
  • YEAR(date) / MONTH(date): Jaar/maand extraheren
  • DATE_FORMAT(date, '%Y-%m'): Datum formatteren

Numeriek:

  • ROUND(number, decimals): Afronden
  • CEILING(number) / FLOOR(number): Naar boven/beneden afronden

Voorwaardelijk:

  • IF(condition, value_if_true, value_if_false)
  • CASE WHEN ... THEN ... ELSE ... END

Belangrijkste tabellen #

Verkoop (ioi Sales) #

  • tabioi Sales Quote / tabioi Sales Quote Detail
  • tabioi Sales Order / tabioi Sales Order Detail
  • tabioi Sales Delivery / tabioi Sales Delivery Detail
  • tabioi Sales Invoice / tabioi Sales Invoice Detail
  • tabioi Customer / tabioi Customer Contact
  • tabioi Sales Journal

Aankopen (ioi Purchases) #

  • tabioi Purchases Order / tabioi Purchases Order Detail
  • tabioi Purchases Receipt / tabioi Purchases Receipt Detail
  • tabioi Purchases Invoice / tabioi Purchases Invoice Detail
  • tabioi Supplier / tabioi Supplier Contact
  • tabioi Purchases Journal

Voorraad (ioi Items) #

  • tabioi Item
  • tabioi Stock Entry / tabioi Stock Entry Detail
  • tabioi Warehouse / tabioi Warehouse Stock

Boekhouding (ioi Accounting) #

  • tabioi Account Balance / tabioi Account Transaction
  • tabioi Customer Balance / tabioi Customer Transaction
  • tabioi Supplier Balance / tabioi Supplier Transaction
  • tabioi General Account
  • tabioi Period

Beste praktijken #

Astuce

  • Prestaties: Gebruik SQL-parameters in plaats van tabelfilters voor grote gegevensvolumes
  • Beveiliging: Beperk toegang met Limit to roles en Is public
  • Organisatie: Maak meerdere Display Profiles voor verschillende behoeften
  • Testen: Valideer uw query’s in System Console vóór integratie
  • Documentatie: Gebruik Memo gebied om uw analyses te documenteren

Veelgebruikte use cases #

Verkoopanalyse per periode en klant #

SELECT 
    YEAR(a.document_date) AS jaar,
    MONTH(a.document_date) AS maand,
    a.invoice_customer_id,
    c.name as klant,
    SUM(b.value_line_doc_currency) AS totaal_verkoop
FROM `tabioi Sales Invoice` a
JOIN `tabioi Sales Invoice Detail` b ON b.parent = a.name
JOIN `tabioi Customer` c ON c.name = a.invoice_customer_id
WHERE a.document_date BETWEEN '{param_date_begin}' AND '{param_date_eind}'
    AND a.ioistatus >= 1
GROUP BY YEAR(a.document_date), MONTH(a.document_date), a.invoice_customer_id

Analyse geglobaliseerde facturen (POS) #

SELECT 
    a.document_date,
    a.name AS factuur,
    a.globalized_document,
    COUNT(DISTINCT b.sales_delivery_id) AS aantal_gegroepeerde_verkopen,
    SUM(a.total_incl_vat) AS totaal_factuur
FROM `tabioi Sales Invoice` a
LEFT JOIN `tabioi Sales Invoice Globalized Link` b ON b.sales_invoice_id = a.name
WHERE a.globalized_document = 1
    AND a.document_date BETWEEN '{param_date_begin}' AND '{param_date_eind}'
GROUP BY a.name

Voorraadanalyse per magazijn #

SELECT 
    w.name AS magazijn,
    i.name AS artikel,
    i.description,
    ws.available_stock AS beschikbare_voorraad,
    ws.reserved_stock AS gereserveerde_voorraad,
    (ws.available_stock - ws.reserved_stock) AS vrije_voorraad
FROM `tabioi Warehouse Stock` ws
JOIN `tabioi Warehouse` w ON w.name = ws.parent
JOIN `tabioi Item` i ON i.name = ws.item_id
WHERE ws.available_stock > 0

Analyse klantbetalingen (balans) #

SELECT 
    c.name AS klant,
    c.vat_number AS btw,
    cb.total_debit AS totaal_facturen,
    cb.total_credit AS totaal_betalingen,
    cb.balance AS openstaand_saldo,
    DATEDIFF(CURDATE(), cb.oldest_open_date) AS dagen_achterstallig
FROM `tabioi Customer Balance` cb
JOIN `tabioi Customer` c ON c.name = cb.customer_id
WHERE cb.balance > 0
ORDER BY cb.balance DESC

Veelgemaakte fouten #

  1. Rechten en beveiliging
  • ioi System Manager: Sommige functies vereisen deze specifieke rol (bulk update, enz.)
  • Rol “System Manager” ≠ Rol “ioi System Manager” (dit zijn twee verschillende rollen!)
  • Controleer DocType-rechten voordat u een analyse deelt

2. Prestaties

  • Vermijd: SELECT * FROM op grote tabellen
  • Geef de voorkeur aan: Filteren met WHERE en kolommen beperken
  • Gebruik: Indexen op samenvoegvelden (document_date, customer_id, enz.)
  • Let op: Meerdere samenvoegingen op detailtabellen kunnen vertragen

3. Berekende velden en statussen

  • ioistatus: 0=Ontwerp, 1=Wachtend, 2=Bevestigd, 4=Gedeeltelijk geleverd, enz.
  • Filter altijd op ioistatus om concepten uit te sluiten
  • approval_status: Controleer dit veld voor goedkeuringsworkflows

4. Tabelrelaties

  • Header ↔ Detail: Altijd samenvoegen via b.parent = a.name en b.parenttype = 'DocType Name'
  • Customer/Supplier: Kunnen meerdere ID’s hebben afhankelijk van context (delivery_customer, invoice_customer, order_customer)
  • Datums: document_date (documentdatum) vs modified (laatste wijziging)

5. Specifieke geglobaliseerde facturen

  • Een geglobaliseerde factuur (globalized_document = 1) groepeert meerdere POS-verkopen
  • Linktabel: tabioi Sales Invoice Globalized Link
  • Gekoppelde verkopen hebben globalized_invoice = 1
  • Meng niet met normale facturen in lijnanalyses

6. Variabelen en parameters

  • Systeemvariabelen: {user}, {company}, {site} - altijd tussen accolades
  • Parameters: {param_xxx} - gedefinieerd in Query Profile Settings
  • Let op: Variabelen zijn hoofdlettergevoelig

7. Gegevensformaat

  • BTW: Opgeslagen als decimaal (0,21 voor 21%)
  • Bedragen: value_line_doc_currency voor lijnbedrag in documentvaluta
  • Referenties: name velden zijn unieke ID’s (bijv. “SINV-2024-00123”)

Bronnen #

Gebruikte component: DHTMLX PivotDocumentatie: https://docs.dhtmlx.com/pivot/

Database: MariaDBOfficiële site: https://mariadb.org

Adminer: https://www.adminer.org