Mijn Communities
Help
mbettinger
CONTRIBUTOR **

Hulp bij 2 scriptjes

door mbettinger

Hi allen,

Ik loop vast op 2 self service scriptjes die vrij simpel zouden moeten zijn maar om de een of andere reden kom ik er toch niet uit. Wellicht dat iemand binnen de community mij hierbij kan helpen?

 

Een scriptje is voor leeftijd, welke bewerking dien ik op volgnummer 25 te zetten om het verschil in dagen of jaren te krijgen tussen volgnummer 1 (ingangsdatum) en volgnummer 10 (geboortedatum).
Voor excel zou het bijvoorbeeld onder andere simpelweg zijn =yearfrac(geboorte;ingangsdatum) in het script leek me dit dan GF_DagenVerschil maar ik krijg ‘m niet aan de praat.

jUODh7aq.png

 

 

En scriptje 2 is om het max te declareren bedrag te bepalen op basis van datum in dienst.
Als datum in dienst (volgnummer 230) valt in hetzelfde jaar als de ingangsdatum FS0060 volgnummer 8 dan willen we in een nieuwe rubriek het max te declareren bedrag in dat jaar weergeven. Dit is 300 euro naar rato op basis van periode in dienst in dat jaar.
In excel zou dit dan zijn
=IF(YEAR(indienst)=YEAR(ingangsdatum); YEARFRAC(indienst;DATE(YEAR(indienst);12;31))*300; 300)

oeNvmjqG.png

 

Zou iemand hier wellicht bij kunnen ondersteunen?

 

Alvast hartelijk dank!

4 ANTWOORDEN 4
vroom
CHAMPION **

door vroom

voor dagenverschil kan je het beste de rubriek erin zetten, bijvoorbeeld a=GF_DagenVerschil(v_P00321#,v_A00001[100]#); return(a). 
Voor het andere script begrijp ik niet precies wat je bedoelt. Op basis van welke periode bedoel je dan? Aantal dagen of weken of maanden? Als je wilt controleren of iets in hetzelfde jaar is kan je scriptjes gebruiken als: a=GF_DatumHaalJaar(v_P00322#); b=GF_DatumHaalJaar(v_FS0060#); if (a==b) etc.....

mbettinger
CONTRIBUTOR **

door mbettinger

Hi Vroom,


Heel erg bedankt voor jouw reactie. Uiteindelijk is het toch gelukt met GF_DagenVerschil, ik vermoed dat ik ergens een teken verkeerd had staan!


Met scriptje 2 loop ik nog steeds te strugglen dus zojuist een consultancyverzoek ingediend. Het komt er op neer dat we een workflow hebben waarbij men de sportcontributie bruto netto kan uitruilen. Het maximum bedrag dat men hier mag 'declareren' is 300 euro.

Deze controle hebben we ingebouwd !(v_A00001_200# >300)

Nu hebben we een additionele wens en dat is dat als men gedurende het jaar in dienst is getreden dat het max te 'declareren' bedrag dan naar rato verrekend moet worden. Met andere woorden als ik 1 juli 2023 in dienst treedt dan mag ik over 2023 maar 150 euro 'declareren'. Over 2024 mag ik dan uiteraard gewoon het volledige bedrag declareren.

In excel zou de formule bijvoorbeeld als volgt zijn:
=IF(YEAR(indienst)=YEAR(ingangsdatum); YEARFRAC(indienst;DATE(YEAR(indienst);12;31))*300; 300)

Op het formulier staan de rubrieken Datum in dienst 39PS volgnummer 230, te verrekenen bedrag A00001 volgnummer 200 en ingangsdatum FS0060 maar het lukt me niet om deze combi van formule & rubrieken te vertalen naar een javascript. Vermoedelijk zal het dan inderdaad iets zijn met datum haal jaar en dat dan combineeren met de GF_DagenVerschil.

 

Nogmaals bedantk voor de terugkoppeling!

Goedgekeurde oplossing
vroom
CHAMPION **

door vroom

Misschien kan je hier wat mee:

jid=GF_DatumHaalJaar(v_P00322#); jd=GF_DatumHaalJaar(v_FS0060#); b= parseFloat(0+v_A00001[200]#);
if (jid==jd && b<=150){x=ok} else {x=notok};
return(x);

toelichting:

  • jid=jaar in dienst
  • jd= jaar declaratie
  • b=bedrag

Ik heb  het script niet getest, maar als het werkt kan het resultaat mogelijk gebruikt worden als conditie in de workflow.

 

mbettinger
CONTRIBUTOR **

door mbettinger

Hi!

Met dank aan Visma is dit het uiteindelijk geworden:

Eerste van het jaar:
var a = v_FS0060#; var dag = GF_DatumZetDag(a,1); var maand = GF_DatumZetMaand(dag,1); return(maand);

 

Eerste datum om mee te rekenen:

var verschil = GF_DagenVerschil(v_A00001[50]#, v_39PS#); if(verschil>='0') {x=v_39PS#} else {x=v_A00001[50]#}; return(x);

 

Eerste van volgend jaar:

var a = v_FS0060#; var dag = GF_DatumZetDag(a,1); var maand = GF_DatumZetMaand(dag,1); var jaar = GF_DatumPlusJaren(maand,1); return(jaar);

 

Max te verrekenen op basis van in dienst datum:

var verschil = (GF_DagenVerschil(v_A00001[60]#, v_A00001[70]#)); var factor = parseFloat(verschil) / 365.25; var bedrag = factor * 300; var afgerond = Math.round(bedrag); return(afgerond);

 

En dan deze controle toegevoegd:
!(v_A00001_200# > v_A00001_80#)

mbettinger_0-1681465766029.png


Het was dus inderdaad die combi tussen datumhaaljaar en gf dagen verschil.

Nogmaals hartelijk dank voor de hulp!