Dans les étapes ci-dessous, je vous montre comment vous calculez le jour ouvrable suivant lorsque nous ajoutons un nombre de jours ouvrés (B) à une date quelconque (A), en tenant compte des week-ends et des jours fériés (C) en utilisant K2.

Exemple: Calculez la prochaine date de travail avec 4 jours ouvrables et la date (17/07/2019), le 23/07/2019 étant un jour férié, image ci-dessous.

Nous obtenons: 24/07/2019.

Étapes de réalisation

1. Créez une smartbox SMO qui gardera toutes vos vacances.

Bank-HolidaySMO

2. Générez une vue liste smartbox SMO  qui vous permettra de gérer vos vacances.

3. Créer une vue item qui contiendra les contrôles dans l’image ci-dessousWorking Date Item View

4. Écrivez la règle _WeekEndOrNot qui indique si une date est le week-end (Yes) ou non (No), procédez comme suit:weeekend or not advanced Condition

NOTE: La règle _WeekEndOrNot contient une condition préalable qui teste la valeur renvoyée par l’expression ci-dessous (i). Mais si l’expression retourne un samedi ou un dimanche, nous concluons qu’il s’agit d’un week-end et transférons le “Yes” à dl_IsWeekEnd, sinon nous transférons le “No” à dl_IsWeekEnd.

i. Une expression qui prend la date dans dl_NextWorkingDate et renvoie le nom du jour, image ci-dessous

Calculate Week Day Expression

5. Écrivez une expression Ex_DayCounter . Il s’incrémente chaque fois que nous ajoutons une date et la stockons dans dl_ActiveDayCounter, image ci-dessous.
Increment Woeking Day                                                        

6. Lorsque btn_GetWorkingDate est cliqué:
Get Working Date

Dans 1, nous initialisons dl_ActiveWorkingDays à 1, puis nous stockons la date dans Cldr_Date dans dl_GivenDate. En 2, nous exécutons Ex_AddDate et conservons sa valeur dans dl_NextWorkingDate, qui appelle la règle du point 7 ci-dessous.

7. Ensuite, nous écrivons la règle _DateValueChange qui est structurée comme dans l’image:Date value

De l’image ci-dessus,

Bloc: I. Vérifie si la date dans dl_NextWorkingDate est un jour férié ou un week-end (dl_IsHoliday a une valeur OU dl_IsWeekEnd est égal à Oui).Working Day Rules K2

En A, nous stockons la valeur actuelle de dl_NextWorkingDate dans “dl_GivenDate”.

B Permet d’ajouter 1 jour à dl_NextWorkingDate qui appelle when dl_NextWorkingDate changes (boucle), jusqu’à ce obtenir un jour ouvrable.

Bloc: II. Vérifie si dl_NextWorkingDate contient un jour ouvrable et nous n’avons pas ajouté le nombre de jours donnés par l’utilisateur.

Working Day Rules K2 Details

En C, nous mettons à jour dl_ActiveDayCounter en lui passant Ex_DayCounter.

D Garder la date de travail dans dl_GivenDate.

E Permet d’ajouter 1 jour à dl_NextWorkingDate qui appelle When dl_NextWorkingDate change (boucle), jusqu’à ce que nous ayons un jour ouvrable.

Bloc: III. Enfin, nous vérifions si nous avons ajouté tous les jours donnés par l’utilisateur et si la date actuel dans dl_NextWorkingDate est un jour ouvrable.

 

Merci à tous,

Louis.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *