Mijn Communities
Help
Muijs
CONTRIBUTOR *

Ingangsdatum alleen een maandag

door Muijs

Heeft iemand een script of controle waarmee je kan afdingen dat een ingangsdatum alleen op een maandag start?

8 ANTWOORDEN 8
Fvdzanden
VISMA

door Fvdzanden

Moet je dan ook niet meenemen de test of het een maandag is? Dus nog een toevoeging in de if zijnde

if (e==1){f=0} else anders krijg je volgens een foutmelding als de ingevulde dag echt een maandag is.

 

/*Bewerking nodig voor een hulprubriek A00001 op positie 10 waarmee een controle op dag ingangsdatum (FS0060) moet maandag zijn mogelijk wordt*/

 

a=GF_DatumIngang(); b=a.split('-'); c= (b[1] + '-' + b[0] + '-' + b[2]);
d = new Date(c);
e = d.getDay();
if (e==1){f=0} else if(e==2){f=-1} else if (e==3){f=-2} else if (e==4){f=-3} else if (e==5){f=3} else if (e==6){f=2} else if (e==7){f=1};
g=GF_DatumPlusDagen(a, f); if (e==1){h=a} else {h=g}; return(h);


De controle kan dan worden

 

GF_DagenVerschil(v_FS0060# , v_A00001_10#) == 0

 

 

John Muijs
CONTRIBUTOR ***

door John Muijs

Grote dank heren. Ik ga dit script meteen gebruiken.

vroom
CHAMPION **

door vroom

Ziet er goed uit !!

Maar nu staat (e==1) er 2x in, dus kan de omleiding via h eruit (denk ik?) en dan wordt de laatste regel: g=GF_DatumPlusDagen(a, f); return(g)
Daarnaast zie ik dat (e==7) veranderd moet worden in (e==0), want de zondag heeft waarde 0 en niet 7 ;-). Dan wordt hetb dus alsvolgt:

a=v_FS0060#; b=a.split('-'); c= (b[1] + '-' + b[0] + '-' + b[2]);
d = new Date(c);
e = d.getDay();
if (e==1){f=0} else if(e==2){f=-1} else if (e==3){f=-2} else if (e==4){f=-3} else if (e==5){f=3} else if (e==6){f=2} else if (e==0){f=1};
g=GF_DatumPlusDagen(a, f); return(g);

Fvdzanden
VISMA

door Fvdzanden

Helemaal top Melle groeten Frans

vroom
CHAMPION **

door vroom

Dit script werkt. 
Zodra het een vrijdag wordt dan springt de datum naar de volgende maandag.

a=v_A00001[600]#; b=a.split('-'); c= (b[1] + '-' + b[0] + '-' + b[2]);
d = new Date(c);
e = d.getDay();
if (e==2){f=-1} else if (e==3){f=-2} else if (e==4){f=-3} else if (e==5){f=3} else if (e==6){f=2} else if (e==7){f=1};
g=GF_DatumPlusDagen(a, f); if (e==1){h=a} else {h=g}; return(h);

Jar1k
CHAMPION *

door Jar1k

Bedankt voor het testen. De controlemogelijkheid die hierboven genoemd wordt is ook handig.

Ter verduidelijking voor mezelf en anderen die dit volgen (even e.e.a. nagezocht op w3schools en in de javascript handleiding):

met de functie 'getDay();' wordt de dag van de week opgehaald, waarbij zondag is 0 en zaterdag is 6. Die functie werkt kennelijk alleen met de amerikaanse datumnotering, dus maand - dag - jaar. Vandaar dat via '.split' de datum uit elkaar gehaald wordt en dag, maand en jaar direct in een Array (reeks) gezet wordt. Door een verwijzing met blokhaken kun je de waarde op die positie in de reeks ophalen, waarbij de eerste positie 0 is. En vervolgens wordt hij als Amerikaanse datum gedeclareerd via 'newDate()'.

vroom
CHAMPION **

door vroom

Dat is inderdaad precies hoe het script werkt, indien de instellingen in bijvoorbeeld Amerika dus op de Amerikaanse datuminstelling staan, dan moet die omzetting er uit, vervallen variabelen b en c, en moet d verwijzen naar a. 😉

John Muijs
CONTRIBUTOR ***

door John Muijs

Werkt super, nogmaals dank.