Formules de calcul: Difference between revisions

From Documentation de la solution web de gestion OpenFlyers
Jump to navigation Jump to search
imported>Claratte
imported>Claratte
Line 23: Line 23:
==Exemples de formules de calcul de l'expérience récente==
==Exemples de formules de calcul de l'expérience récente==


=Calcul du temps de vol=
=Temps d'activité=
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.


OpenFlyers permet d'attribuer des formules de calcul de temps d'activité par type de ressource. Cf. la gestion des types de ressource sur [[Resource-management3#Ajouter_un_type_de_ressource|version 3]] et [[Resource-management4#Ajouter_un_type_de_ressource|version 4]].
OpenFlyers permet d'attribuer des formules de calcul de temps d'activité par type de ressource. Cf. la gestion des types de ressource sur [[Resource-management3#Ajouter_un_type_de_ressource|version 3]] et [[Resource-management4#Ajouter_un_type_de_ressource|version 4]].


==Sexacentimal==
==Définition Unité sexacentimal==
En base de données, les temps et les compteurs sont stockés selon le plus petit multiple commun au système décimal (centième) et au système sexagésimale (hh min). Nous avons appelé cela le format ''sexacentimal''.
En base de données, les temps et les compteurs sont stockés selon le plus petit multiple commun au système décimal (centième) et au système sexagésimale (hh min). Nous avons appelé cela le format ''sexacentimal''.


Line 44: Line 44:
*pour arrondir à 10 centièmes : roundCeil(X,60)
*pour arrondir à 10 centièmes : roundCeil(X,60)


==Définitions==
==Variables autorisées pour le calcul du temps d'activité==
===variables===
 
====%TIME_DEPARTURE====
===%COUNTER_ARRIVAL===
Heure de début saisie dans le formulaire
====%TIME_ARRIVAL====
Heure de fin saisie dans le formulaire
====%COUNTER_DEPARTURE====
Compteur départ saisi dans le formulaire
====%COUNTER_ARRIVAL====
Compteur arrivé saisi dans le formulaire
Compteur arrivé saisi dans le formulaire
===Fonctions===
====roundCeil====
roundCeil(X,Y)
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche
Exemple :
roundCeil(114,100) donne 200


roundCeil(114,10) donne 120
===%COUNTER_DEPARTURE===
Compteur départ saisi dans le formulaire


====max====
===%TIME_ARRIVAL===
max(X,Y)
Heure de fin saisie dans le formulaire
donne le max entre X et Y


==Formules de calcul du temps d'activité==
===%TIME_DEPARTURE===
Heure de début saisie dans le formulaire


*Les fonctions autorisées sont
===%DURATION===
Durée du vol


max(valeur1,valeur2) : retient la plus grande des 2 valeurs
==Fonctions autorisées pour le calcul du temps d'activité==
===abs===
<pre>abs(valeur)</pre>
Retourne la valeur absolue


abs(valeur) : retour la valeur absolue
===roundCeil===
<pre>roundCeil(X,Y)</pre>
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche


roundCeil(valeur,cible) : arrondie la valeur jusqu'à la cible
Exemple :
 
<pre>roundCeil(114,100) donne 200</pre>
*Les mots clé autorisés
 
%DURATION : durée du vol


%COUNTERDEPARTURE : valeur du compteur de départ
<pre>roundCeil(114,10) donne 120</pre>


%COUNTERARRIVAL : valeur du compteur d'arrivée
===max===
<pre>max(X,Y)</pre>
Retourne le maximum entre X et Y


===Durée du vol===
==Exemples de formules de calcul du temps d'activité==
%DURATION
===Durée saisie===
<pre>%DURATION</pre>


===Différence des compteurs===
===Différence des compteurs saisis===
%COUNTER_ARRIVAL - %COUNTER_DEPARTURE
<pre>%COUNTER_ARRIVAL - %COUNTER_DEPARTURE</pre>


===Durée du vol arrondie à 5 minutes===
===Durée saisie arrondie à 5 minutes===
roundCeil(%DURATION, 50)
<pre>roundCeil(%DURATION, 50)</pre>


===Différence des compteurs plus 5 centièmes ===
===Différence des compteurs plus 5 centièmes ===
%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30
<pre>%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30</pre>


===Différence des compteurs plus 5 minutes ===
===Différence des compteurs plus 5 minutes ===
%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50
<pre>%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50</pre>


===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===
roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50
<pre>roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50</pre>


===Différence des compteurs arrondie à 10 centièmes===
===Différence des compteurs arrondie à 10 centièmes===
roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)
<pre>roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)</pre>


===Le plus grand entre la durée du vol et la différence des compteurs===
===Le plus grand entre la durée du vol et la différence des compteurs===
max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)
<pre>max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)</pre>


===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===
max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))
<pre>max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))</pre>
Cette formule calcule :
Cette formule calcule :
*la différence des compteurs et l'arrondi à 5 minutes
*la différence des compteurs et l'arrondi à 5 minutes
Line 116: Line 111:
Puis elle prend le plus grand des deux
Puis elle prend le plus grand des deux


===Le plus grand entre la durée du vol, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes,===
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===
max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))
<pre>max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))</pre>
Cette formule calcule :
Cette formule calcule :
*la différence des compteurs et l'arrondi à 5 minutes
*la différence des compteurs et l'arrondi à 5 minutes

Revision as of 16:27, 23 March 2015

Date d'expiration

Variables autorisées pour le calcul de la date d'expiration

Fonctions autorisées pour le calcul de la date d'expiration

Exemples de formules de calcul de la date d'expiration

Date fixe

2012-12-31

Formule calculant la fin de l'année courante

formatDate( 'yyyy-12-31', %NOW_DATE )

Formule calculant la fin de l'année courante ou la fin de l'année suivante si la date courante est strictement supérieure au 30 septembre

formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)<10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )

Calcul de l'expérience récente

Variables autorisées pour le calcul de l'expérience récente

Fonctions autorisées pour le calcul de l'expérience récente

Exemples de formules de calcul de l'expérience récente

Temps d'activité

Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.

OpenFlyers permet d'attribuer des formules de calcul de temps d'activité par type de ressource. Cf. la gestion des types de ressource sur version 3 et version 4.

Définition Unité sexacentimal

En base de données, les temps et les compteurs sont stockés selon le plus petit multiple commun au système décimal (centième) et au système sexagésimale (hh min). Nous avons appelé cela le format sexacentimal.

Cela permet de stocker les valeurs de temps sous la forme d'un entier. Cela supprime donc tout problème d'arrondi qui pourrait être problématique pour les additions.

  • 1 heure = 600 sexacentièmes
  • 1 minute = 10 sexacentièmes
  • 5 minutes = 50 sexacentièmes
  • 1 centième de minute = 6 sexacentièmes
  • 10 centième de minute (=1 dixième de minute) = 60 sexacentièmes

Exemples de formules :

  • pour arrondir à 5 minutes : roundCeil(X,50)
  • pour arrondir à 10 centièmes : roundCeil(X,60)

Variables autorisées pour le calcul du temps d'activité

%COUNTER_ARRIVAL

Compteur arrivé saisi dans le formulaire

%COUNTER_DEPARTURE

Compteur départ saisi dans le formulaire

%TIME_ARRIVAL

Heure de fin saisie dans le formulaire

%TIME_DEPARTURE

Heure de début saisie dans le formulaire

%DURATION

Durée du vol

Fonctions autorisées pour le calcul du temps d'activité

abs

abs(valeur)

Retourne la valeur absolue

roundCeil

roundCeil(X,Y)

Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche

Exemple :

roundCeil(114,100) donne 200
roundCeil(114,10) donne 120

max

max(X,Y)

Retourne le maximum entre X et Y

Exemples de formules de calcul du temps d'activité

Durée saisie

%DURATION

Différence des compteurs saisis

%COUNTER_ARRIVAL - %COUNTER_DEPARTURE

Durée saisie arrondie à 5 minutes

roundCeil(%DURATION, 50)

Différence des compteurs plus 5 centièmes

%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30

Différence des compteurs plus 5 minutes

%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50

Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes

roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50

Différence des compteurs arrondie à 10 centièmes

roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)

Le plus grand entre la durée du vol et la différence des compteurs

max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)

Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes

max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))

Cette formule calcule :

  • la différence des compteurs et l'arrondi à 5 minutes
  • la valeur de la durée de vol saisie par le pilote

Puis elle prend le plus grand des deux

Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes

max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))

Cette formule calcule :

  • la différence des compteurs et l'arrondi à 5 minutes
  • la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes

Puis elle prend le plus grand des deux

Tarification

Définitions

Outre les définitions toujours valides pour le calcul du temps de vol, voici d'autres définitions : A rédiger

Voir Formules en anglais

Formules

Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur

Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :

%DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE

Avion : réduction lorsque le compte pilote a un solde positif

$C2 concerne le tarif horaire de l'avion
$S le solde positif qui doit être atteint pour bénéficier de la réduction
$R le montant horaire de la réduction obtenue dans ce cas

roundCeil((((getBalance(%PILOT)>$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)

Avion : réduction lorsque le vol se fait après une certaine heure

$C2 concerne le tarif horaire de l'avion
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure
659 correspond à 06:59 en temps UTC
Dans ce cas la formule considère que dès 700, la réduction s'applique.

roundCeil(((((formatDate('hmm',%START_DATE)>659)?$C2R:$C2)*%DURATION/600)-0.5),1)