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): SamenvoegenSUBSTRING(text, start, length): ExtraherenUPPER(text)/LOWER(text): Hoofdletters/kleine lettersTRIM(text): Spaties verwijderen
Datums:
NOW(): Huidige datum/tijdCURDATE(): Huidige datumYEAR(date)/MONTH(date): Jaar/maand extraherenDATE_FORMAT(date, '%Y-%m'): Datum formatteren
Numeriek:
ROUND(number, decimals): AfrondenCEILING(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 Detailtabioi Sales Order/tabioi Sales Order Detailtabioi Sales Delivery/tabioi Sales Delivery Detailtabioi Sales Invoice/tabioi Sales Invoice Detailtabioi Customer/tabioi Customer Contacttabioi Sales Journal
Aankopen (ioi Purchases) #
tabioi Purchases Order/tabioi Purchases Order Detailtabioi Purchases Receipt/tabioi Purchases Receipt Detailtabioi Purchases Invoice/tabioi Purchases Invoice Detailtabioi Supplier/tabioi Supplier Contacttabioi Purchases Journal
Voorraad (ioi Items) #
tabioi Itemtabioi Stock Entry/tabioi Stock Entry Detailtabioi Warehouse/tabioi Warehouse Stock
Boekhouding (ioi Accounting) #
tabioi Account Balance/tabioi Account Transactiontabioi Customer Balance/tabioi Customer Transactiontabioi Supplier Balance/tabioi Supplier Transactiontabioi General Accounttabioi Period
Beste praktijken #
Astuce
- Prestaties: Gebruik SQL-parameters in plaats van tabelfilters voor grote gegevensvolumes
- Beveiliging: Beperk toegang met
Limit to rolesenIs public - Organisatie: Maak meerdere Display Profiles voor verschillende behoeften
- Testen: Valideer uw query’s in System Console vóór integratie
- Documentatie: Gebruik
Memogebied 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 #
- 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 * FROMop grote tabellen - Geef de voorkeur aan: Filteren met
WHEREen 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
ioistatusom concepten uit te sluiten - approval_status: Controleer dit veld voor goedkeuringsworkflows
4. Tabelrelaties
- Header ↔ Detail: Altijd samenvoegen via
b.parent = a.nameenb.parenttype = 'DocType Name' - Customer/Supplier: Kunnen meerdere ID’s hebben afhankelijk van context (delivery_customer, invoice_customer, order_customer)
- Datums:
document_date(documentdatum) vsmodified(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_currencyvoor lijnbedrag in documentvaluta - Referenties:
namevelden 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