SharePoint

Simpele urenregistratie en rapportage oplossing in SharePoint

7 oktober 2015

Voor een kleine non-profit organisatie moest het proces en de rapportage voor urenregistratie verbeterd worden. Deze oplossing laat de gebruikers hun uren registreren in een SharePoint Online lijst door middel van InfoPath en we gebruiken Excel om de data te tonen op een dashboard.

De organisatie bestaat uit twee betaalde medewerkers en voor de rest uit vrijwilligers. Het bestuur bestaat ook uit vrijwilligers. De betaalde medewerkers hielden hun uren bij in een Excel bestand. De medewerkers werken onregelmatig en daardoor worden deze onregelmatige uren elke maand apart verwerkt naast het vaste salaris. In de oplossing heb ik rekening gehouden met onderstaande ORT tabel.

ORT tabel

 

 

Iedere maand werd het Excel bestand naar een externe bureau gemaild voor de verwerking van de salarissen. De salarisadministrateur moet iedere maand de ORT (onregelmatigheidstoeslag) uitrekenen aan de hand van de Excel bestanden. De wens is om dit te automatisch uit te rekenen, omdat het externe bureau elk kwartier in rekening brengt bij de organisatie.

De Excel bestanden gaven erg weinig inzicht in de besteedde uren van de twee medewerkers. Het bestuur wilde meer grip op de werkzaamheden die worden uitgevoerd door middel van inzicht in de besteedde uren.

De huidige Excel bestanden gaven de medewerkers inzicht in hoeveel uur zij hadden gewerkt en hoeveel verlof zij nog beschikbaar hebben. Dit moet beschikbaar blijven.

De oplossing

De organisatie maakt al gebruik van Office 365 for non-profits, dat door Microsoft gratis ter beschikking wordt gesteld via Techsoup. Techsoup is een organisatie die software donaties regelt voor non-profit instellingen.

Omdat de organisatie momenteel al gebruik maakt van Office 365 en SharePoint Online heb ik gekozen voor het invoeren van de uren in SharePoint. Een InfoPath formulier zorgt voor een correcte invoer en validatie. De rapportage gebeurd in Excel en wordt met de Excel Rest API op een dashboard getoond in SharePoint.
Hieronder de stappen die ik heb gevolgd voor het maken van de oplossing.

Stap 1: Lijst voor ureninvoer

De basis van de oplossing zit in een lijst in SharePoint. Ik heb een subsite aangemaakt onder de bestaande teamsite om ervoor te zorgen dat de salarisadministrateur geen toegang zou hebben tot de andere onderdelen van de teamsite. Ik was begonnen met het aanmaken van de lijst op dezelfde teamsite, maar voor het ophalen van de gegevens in Excel moet de salarisadministrateur ook op site niveau lees rechten hebben en dat mag niet.

Dus ik heb een subsite aangemaakt die ik ‘Uren’ heb genoemd. In deze subsite heb ik de custom lijst ‘Ureninvoer’ aangemaakt.

Om ervoor te zorgen dat de beide medewerkers elkaars uren niet kunnen aanpassen heb ik de machtigingen op item niveau gewijzigd. Om je kunt deze oplossing reproduceren door de volgende stappen te volgen:

Ga naar de lijst instellingen, kies voor Geavanceerde instellingen en bij Machtigingen op itemniveau kies je voor ‘Items maken en items bewerken die gemaakt door de gebruiker’.

1.1 Machtigingen itemniveau

 

 

 

Maak vervolgens de onderstaande kolommen aan.

1.2 Kolommen

 

 

 

 

 

Bij de onderstaande kolommen heb ik naast het verplicht maken ook nog ingesteld:

[bulletlist]

  • Titel: standaard waarde ‘Urentaak’
  • Jaar: standaard waarde ‘2015’ (ieder jaar even aanpassen)
  • Week: toegestane minimum- en maximumwaarde tussen 1 en 53
  • Dag: is een keuze kolom met alle dagen van de week en feestdag als keuze
  • Tijdvak: zijn de drie tijdvakken als keuze uit bovenstaande tabel
  • Werksoort: is een keuze veld voor de onderverdeling van taken in werksoorten
  • Taak: is een keuze veld met alle taken

[/bulletlist]

 

Stap 2: InfoPath formulier voor invoer

Vervolgens heb ik het ‘Nieuw item’ formulier aangepast. We maken gebruik van InfoPath om de medewerkers de mogelijkheid te geven om hun uren snel en makkelijk te registreren. We zijn er van bewust dat InfoPath binnenkort verdwijnt, maar we kunnen deze oplossing in ieder geval nog jaren blijven gebruiken.

Ik gebruik niet de optie in de ribbon om het formulier aan te passen, maar start ik InfoPath op en door middel van de wizard krijgen we direct de juiste instellingen. Dit zorgt ervoor dat InfoPath meer opties geeft, zoals het gebruik van repeating tables. We willen de medewerkers de mogelijkheid geven om de uren voor een hele dag of een hele week in één keer te kunnen registreren.

Start InfoPath Designer en kies bij New voor SharePoint List.

2.1 IP New

 

 

 

 

 

 

 


Vul de URL van de SharePoint site in.

2.2 IP url

 

 

 

 

 

 

 

Kies de lijst die je net hebt aangemaakt.

2.3 IP kies lijst

 

 

 

 

 

 

Bij Advanced Options kies je voor ‘Manage multiple list items with this form’. Deze optie zorgt ervoor dat de medewerkers hun uren voor de hele dag of hele week in één formulier kunnen registreren. Klik op Finish.

2.4 IP multiple items

 

 

 

 

 

 

 

Je krijgt een formulier met alle velden onder elkaar. Verwijder Titel, Medewerker en Jaar. Zet de velden naast elkaar zodat het er ongeveer zo uit ziet. Een beschrijvend tekstje geeft uitleg over het invullen van het formulier. Iedere item is een nieuwe regel in het formulier en zal een los item worden in de lijst: verschillende taken of dezelfde taken op verschillende tijdvakken, etc.

2.5 IP tabel

 

 

 

Vervolgens gaan we een aantal rules instellen, zodat de juiste informatie wordt ingevuld.

Als eerste willen we dat het veld ‘Medewerker’ automatisch wordt gevuld met de medewerker die zijn uren gaat invullen. Klik met je rechtermuisknop op Medewerker onder Fields en kies voor ‘Field Properties’.

2.6 IP medewerker

 

 

 

 

 

 

 

 

Onder Default Value vullen we de volgende formule in: substring(userName(); 19; 255)

2.7 IP medewerker default value

 

 

 

 

 

 

 

 

Dan moet tot slot nog de ORT automatisch ingevuld worden op basis van de ORT tabel hierboven. Daarvoor moeten de kolom ‘Dag’ en ‘Tijdvak’ ingevuld zijn.

Als eerste gaan we daarvoor een rule aanmaken dat Tijdvak alleen gevuld mag worden als Dag ook is ingevuld.

Klik in de ribbon op ‘Manage Rules’ en selecteer vervolgens de kolom Tijdvak.

2.8 IP tijdvak

 

 

 

 

 

 

 

 

Kies voor New en vervolgens voor Formatting.

2.9 IP new formatting

 

 

 

 

Vul een titel in en bij Condition selecteer je de Dag is gelijk aan blank. Als deze conditie waar is dan moet de kolom worden uitgeschakeld, vink hiervoor ‘Disable this control’ aan.

2.10 IP dag is leeg

 

 

 

 

 

 

 

 

Vervolgens maken we de rules aan die het ORT veld invullen met de juiste waarde. Kies voor New en vervolgens Action.

2.11 IP new action

 

 

 

 

Ik pak er één als voorbeeld, namelijk de zondagnacht. Deze moet ingesteld worden op 100% onregelmatigheidstoeslag. Hiervoor maken we de conditie:

Als Dag is gelijk aan Zondag en het Tijdvak is gelijk aan 00.00-07.00 en de taak is geen verlof dan moet het veld ORT op 100 gezet worden.

In totaal krijgen we 10 van dit soort rules. Onderaan heb ik een tabel toegevoegd van alle rules.

2.12 IP set ORT

 

 

 

 

 

 

 

 

We voegen hier ook verlof toe aan de conditie, omdat er ook verlof uren geschreven kunnen worden en dat hier nooit ORT op ontvangen mag worden. Om dit te voorkomen voegen gaan we ook een rule toe aan Dag.

Selecteer de kolom Dag, kies voor New en vervolgens voor Formatting.

Vul een titel in en bij Condition selecteer je de Taak is gelijk aan blank. Als deze conditie waar is dan moet de kolom worden uitgeschakeld, vink hiervoor ‘Disable this control’ aan.

2.13 IP new formatting dag

 

 

 

 

 

 

 

 

 Tot slot maken we ook nog de rule dat als het veld Dag of Taak wordt gewijzigd dat de velden Tijdvak en Dag worden leeggemaakt. Anders is het namelijk alsnog mogelijk om toeslag te krijgen op verlof.

Ik doe het hieronder op het veld Dag, maar doe het ook nog even op het veld Taak.

Kies voor New en vervolgens Action.

2.11 IP new action

 

 

 

 

We vullen geen conditie in, want dan wordt de actie uitgevoerd op elke wijziging van het veld. Als actie stellen we in dat het veld Tijdvak gelijk moet worden gemaakt aan leeg door gewoon niks in te vullen bij value.

2.14 IP tijdvak leegmaken

 

 

 

 

 

 

 

 

We hebben nu de onderstaande regels op de bijbehorende kolommen aangemaakt:

Rule op kolom Naam rule Conditie Actie
Dag Tijdvak leegmaken Geen Set a field’s value: Tijdvak = (leeg)
Taak Dag leegmaken Geen Set a field’s value: Dag = (leeg)
Tijdvak Set ORT 100 Zondagnacht Dag = Zondag and

Tijdvak = 00.00-07.00 and

Taak != Verlof

Set a field’s value: ORT = 100
Tijdvak Set ORT 30 nacht Dag != Zondag and

Dag != Feestdag and

Tijdvak = 00.00-07.00 and

Taak != Verlof

Set a field’s value: ORT = 30
Tijdvak Set ORT 20 avond Dag != Zondag and

Dag != Feestdag and

Tijdvak = 22.00-00.00 and

Taak != Verlof

Set a field’s value: ORT = 20
Tijdvak Set ORT 100 Zondagavond Dag = Zondag and

Tijdvak = 22.00-00.00 and

Taak != Verlof

Set a field’s value: ORT = 100
Tijdvak Set ORT 100 Feestdagnacht Dag = Feestdag and

Tijdvak = 00.00-07.00 and

Taak != Verlof

Set a field’s value: ORT = 100
Tijdvak Set ORT 100 Feestdagavond Dag = Feestdag and

Tijdvak = 22.00-00.00 and

Taak != Verlof

Set a field’s value: ORT = 100
Tijdvak Set ORT 50 Zondag Dag = Zondag and

Tijdvak = 07.00-22.00 and

Taak != Verlof

Set a field’s value: ORT = 50
Tijdvak Set ORT 50 Feestdag Dag = Feestdag and

Tijdvak = 07.00-22.00 and

Taak != Verlof

Set a field’s value: ORT = 50
Tijdvak Set ORT 0 dag Dag != Zondag and

Dag != Feestdag and

Tijdvak = 07.00-22.00

Set a field’s value: ORT = 0
Tijdvak Set ORT 0 verlof Taak = Verlof Set a field’s value: ORT = 0

Stap 3: Excel voor rapportage en dashboard

Voor de rapportages maken we gebruik van Excel. Ga naar de Ureninvoer lijst en klik in de ribbon op ‘Exporteren naar Excel’.

3.1 Exporteren naar Excel

 

 

Met een aantal PivotTables geven we inzicht bepaalde details over de ingevoerde uren. Het eerste voorbeeld zijn de ORT uren voor de salarisadministrateur. Het Excel bestand heb ik gedeeld met de salarisadministrateur en hij kan zo de actuele stand zien.

3.2 ORT rapport

 

 

 

 

 

 

Omdat de medewerkers de ene week meer uren maken dan in het contract afgesproken en in de andere week minder tonen we ook het saldo van de uren.

3.3 saldo uren rapport

 

En zo heb ik nog een aantal tabellen en grafieken gemaakt die inzicht geven in de ingevoerde uren. Sla het bestand op in een Document library op SharePoint.

Om deze gegevens voor het bestuur makkelijk inzichtelijk te maken heb ik een dashboard gemaakt op een pagina in SharePoint. Via de Excel Rest API kun je de tabellen en grafieken beschikbaar krijgen als onder andere afbeeldingen.

Je kunt een overzicht van beschikbare tabellen en grafieken opvragen via de API. Voer de volgende url in Internet Explorer in:

https://[tenant].sharepoint.com/sites/[SiteCollection/[Subsite]/_vti_bin/ExcelRest.aspx/[Documentlibrary]/[Excelfile].xlsx/Model/​

Je krijgt onderstaand scherm te zien.

3.4 excel rest api

 

 

 

 

 

 

 

Als ik doorklik naar Chart zie ik de beschikbare grafieken. Ik heb een grafiek gemaakt die het aantal uren per medewerk per taak toont. Als ik op de naam klik krijg de afbeelding te zien. De URL in de adresbalk van Internet Explorer kopieer ik en ik voeg in SharePoint een nieuwe afbeelding toe aan de pagina en plak de URL hier in.

De URL ziet er als volgt uit:

https://[tenant].sharepoint.com/sites/[SiteCollection/[Subsite]/_vti_bin/ExcelRest.aspx/[Documentlibrary]/[Excelfile].xlsx/Model/Charts(‘ChartUrenPerMedewerkerPerTaak’)?$format=image

Als ik een tabel wil ophalen krijg ik een 404 error met onderstaande URL:

https://[tenant].sharepoint.com/sites/[SiteCollection/[Subsite]/_vti_bin/ExcelRest.aspx/[Documentlibrary]/[Excelfile].xlsx/Model/Tables(‘TableUrenSaldo’)?$format=atom

Dit is een bekend probleem in de API. Maar je kunt nog wel gebruik maken van de API door het laatste vet gedrukte stuk kun je wijzigen, bijvoorbeeld in ‘image’ of ‘html’. Dan krijg ik de tabel wel te zien, respectievelijk als afbeelding of HTML pagina.

Hieronder zie je een deel van het dashboard:

3.5 dashboard

 

 

 

 

 

 

Het Excel bestand moet wel regelmatig worden ververst om de data op het dashboard actueel te houden. In deze oplossing is dat geen probleem, omdat de gebruikers het Excel bestand regelmatig openen en verversen.

Conclusie

We hebben een urenregistratie oplossing gemaakt waarbij de medewerkers gebruik maken van de InfoPath formulier om hun data op te slaan in SharePoint Online. De regels die we hebben ingesteld op het formulier zorgen ervoor dat de gebruikers de uren correct invoeren en de onregelmatigheidstoeslag automatisch wordt uitgerekend. De salarisadministrator kan een overzicht van de gewerkte ORT uren ophalen en verwerken in het salaris. Daarnaast heeft het bestuur inzicht in de gewerkte uren in een dashboard gemaakt met Excel grafieken en tabellen die worden getoond op een SharePoint pagina door middel van de Rest API.
Er wordt nu zo’n 9 maanden met de oplossing gewerkt en de gebruikers zijn er blij mee: het is makkelijk in gebruik en kost minder tijd dan voorheen.

You Might Also Like

1 reactie

  • avatar
    Reply Roeland 6 november 2015 at 20:56

    Bedankt om dit te delen. Maakt duidelijk dat SharePoint een platform is en dat je het voor de business en users nog moet inrichten willen ze er echt iets aan hebben.

  • Plaats een reactie