<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://doc2-fr.openflyers.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Claratte</id>
		<title>Documentation de la solution web de gestion OpenFlyers version 2 - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://doc2-fr.openflyers.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Claratte"/>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/Sp%C3%A9cial:Contributions/Claratte"/>
		<updated>2026-04-30T17:13:59Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14201</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14201"/>
				<updated>2018-04-12T09:20:39Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenue sur la documentation de la '''version 2''' d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Cette version est obsolète. La version en vigueur est la version 4.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez retrouver sa documentation sur la page suivante :&lt;br /&gt;
*[[OF_doc4-fr:Accueil|Documentation OpenFlyers version 4]]&lt;br /&gt;
&lt;br /&gt;
You can also access to our [[OF_doc-en:Main-Page2|english documentation]].&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
*[[FAQ client|FAQ clients]]&lt;br /&gt;
*[[FAQ utilisateur|FAQ utilisateur]]&lt;br /&gt;
*[[FAQ administrateur 2.0|FAQ administrateur version 2.0]]&lt;br /&gt;
*[[FAQ administrateur|FAQ administrateur]]&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité]]&lt;br /&gt;
*[[FAQ export]]&lt;br /&gt;
*[[FAQ AeroBox]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Administrateurs=&lt;br /&gt;
*[[Documentation administrateur|Documentation administrateur]]&lt;br /&gt;
*[[Liste de diffusion|Gérer une liste de diffusion sur OpenFlyers]]&lt;br /&gt;
*[[Formules de calcul|Formules de calcul]]&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
*[[Use-Accounting2.1|Utilisation de la comptabilité sur version 2.1]]&lt;br /&gt;
&lt;br /&gt;
===Facturation client===&lt;br /&gt;
*[[Gestion des ventes|Gestion des ventes version]]&lt;br /&gt;
&lt;br /&gt;
===FAQ comptabilité===&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité version]]&lt;br /&gt;
&lt;br /&gt;
==Maintenance==&lt;br /&gt;
*[[Maintenance aéronautique|Maintenance aéronautique]]&lt;br /&gt;
*[[Suivi de navigabilité|Suivi de la navigabilité]]&lt;br /&gt;
&lt;br /&gt;
===Requêtes permettant de générer des rapports===&lt;br /&gt;
*[[OF_doc-en::Export generator 2.0|Génération d'export version 2.0]]&lt;br /&gt;
*[[OF_doc-en::Export generator 2.1|Génération d'export version]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Utilisateurs=&lt;br /&gt;
*[[Documentation utilisateur 2.0|Documentation utilisateur version 2.0]]&lt;br /&gt;
*[[Documentation utilisateur|Documentation utilisateur]]&lt;br /&gt;
&lt;br /&gt;
=[[OF_wiki:|Documentation Webmasters et Développeurs]]=&lt;br /&gt;
*[[Contrôle d'identification par OpenFlyers pour un logiciel tiers]]&lt;br /&gt;
*[[Structure de la base de données]]&lt;br /&gt;
&lt;br /&gt;
=[[BTS|Rapporter des bugs]]=&lt;br /&gt;
&lt;br /&gt;
=[[Trucs et astuces|Trucs et astuces]]=&lt;br /&gt;
==[[Kiosque PC|Mettre en place un PC kiosque]]==&lt;br /&gt;
==[[Réseau Internet hybride|Mettre en place un réseau internet hybride]]==&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14200</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14200"/>
				<updated>2018-04-12T09:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenue sur la documentation de la '''version 2''' d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Cette version est obsolète. La version en vigueur est la version 4.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez retrouver leur documentation sur les pages suivantes :&lt;br /&gt;
*[[OF_doc3-fr:Accueil|Documentation OpenFlyers version 3]]&lt;br /&gt;
*[[OF_doc4-fr:Accueil|Documentation OpenFlyers version 4]]&lt;br /&gt;
&lt;br /&gt;
You can also access to our [[OF_doc-en:Main-Page2|english documentation]].&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
*[[FAQ client|FAQ clients]]&lt;br /&gt;
*[[FAQ utilisateur|FAQ utilisateur]]&lt;br /&gt;
*[[FAQ administrateur 2.0|FAQ administrateur version 2.0]]&lt;br /&gt;
*[[FAQ administrateur|FAQ administrateur]]&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité]]&lt;br /&gt;
*[[FAQ export]]&lt;br /&gt;
*[[FAQ AeroBox]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Administrateurs=&lt;br /&gt;
*[[Documentation administrateur|Documentation administrateur]]&lt;br /&gt;
*[[Liste de diffusion|Gérer une liste de diffusion sur OpenFlyers]]&lt;br /&gt;
*[[Formules de calcul|Formules de calcul]]&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
*[[Use-Accounting2.1|Utilisation de la comptabilité sur version 2.1]]&lt;br /&gt;
&lt;br /&gt;
===Facturation client===&lt;br /&gt;
*[[Gestion des ventes|Gestion des ventes version]]&lt;br /&gt;
&lt;br /&gt;
===FAQ comptabilité===&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité version]]&lt;br /&gt;
&lt;br /&gt;
==Maintenance==&lt;br /&gt;
*[[Maintenance aéronautique|Maintenance aéronautique]]&lt;br /&gt;
*[[Suivi de navigabilité|Suivi de la navigabilité]]&lt;br /&gt;
&lt;br /&gt;
===Requêtes permettant de générer des rapports===&lt;br /&gt;
*[[OF_doc-en::Export generator 2.0|Génération d'export version 2.0]]&lt;br /&gt;
*[[OF_doc-en::Export generator 2.1|Génération d'export version]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Utilisateurs=&lt;br /&gt;
*[[Documentation utilisateur 2.0|Documentation utilisateur version 2.0]]&lt;br /&gt;
*[[Documentation utilisateur|Documentation utilisateur]]&lt;br /&gt;
&lt;br /&gt;
=[[OF_wiki:|Documentation Webmasters et Développeurs]]=&lt;br /&gt;
*[[Contrôle d'identification par OpenFlyers pour un logiciel tiers]]&lt;br /&gt;
*[[Structure de la base de données]]&lt;br /&gt;
&lt;br /&gt;
=[[BTS|Rapporter des bugs]]=&lt;br /&gt;
&lt;br /&gt;
=[[Trucs et astuces|Trucs et astuces]]=&lt;br /&gt;
==[[Kiosque PC|Mettre en place un PC kiosque]]==&lt;br /&gt;
==[[Réseau Internet hybride|Mettre en place un réseau internet hybride]]==&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=FAQ-administrateur&amp;diff=14189</id>
		<title>FAQ administrateur</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=FAQ-administrateur&amp;diff=14189"/>
				<updated>2016-07-30T01:57:49Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Où trouver la liste des champs et des tables des bases de données OpenFlyers ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Questions générales=&lt;br /&gt;
&lt;br /&gt;
==Comment personnaliser la documentation utilisateur ?==&lt;br /&gt;
Il suffit de suivre la FAQ indiquant [[FAQ_user2.1#Comment_imprimer_la_doc.3F|comment imprimer la doc]] et, au lieu de l'imprimer avec son navigateur, effectuer une sauvegarde avec la commande &amp;quot;Enregistrer sous...&amp;quot; ou équivalente de son navigateur.&lt;br /&gt;
Vous obtiendrez ainsi un fichier HTML que vous pourrez modifier à l'aide d'un logiciel d'édition comme Open Office.&lt;br /&gt;
&lt;br /&gt;
==Comment se connecter sur le support-forum ?==&lt;br /&gt;
*Allez sur l'onglet &amp;quot;Support&amp;quot; du site [http://www.openflyers.com openflyers]&lt;br /&gt;
*Cliquez sur '''S'identifier''' (en haut à droite)&lt;br /&gt;
*Puis cliquez sur '''Pas encore enregistré ? - Cliquez ici pour vous enregistrer -'''&lt;br /&gt;
*Vous n'avez plus qu'à vous créer un profil utilisateur, à le soumettre&lt;br /&gt;
*Vous devez recevoir automatiquement un mail de confirmation avec un lien à suivre&lt;br /&gt;
&lt;br /&gt;
==Comment se connecter sur le BTS pour rapporter un bug ?==&lt;br /&gt;
*Allez sur [http://bts.openflyers.org le BTS]&lt;br /&gt;
*Cliquez sur &amp;quot;Ouvrir un nouveau compte&amp;quot;&lt;br /&gt;
*Remplissez les champs&lt;br /&gt;
*Vous devez recevoir automatiquement un mail de confirmation avec un lien à suivre&lt;br /&gt;
&lt;br /&gt;
=Affichage=&lt;br /&gt;
&lt;br /&gt;
==Le logo du club prend toute la place sur la page d'accueil, comment corriger cela ?==&lt;br /&gt;
Il suffit de diminuer la taille du logo avec un logiciel d'édition d'image comme &amp;quot;gimp&amp;quot;. Une taille normale devrait être de l'ordre de 100 pixels par 100 pixels et faire un poids d'une vingtaine de kilo-octets.&lt;br /&gt;
&lt;br /&gt;
=Gestion des utilisateurs=&lt;br /&gt;
&lt;br /&gt;
==Comment mettre à jour les cotisations des utilisateurs ?==&lt;br /&gt;
*Aller sur la page '''Admin &amp;gt; Club &amp;gt; Paramétrage''' : sous le titre '''Gestion des cotisations''', modifier la date d'expiration de la cotisation (c'est cette date qui sera utilisée lors de la mise à jour des cotisations des membres)&lt;br /&gt;
*Aller sur la page '''Admin &amp;gt; Utilisateurs &amp;gt; Utilisateurs''' : cocher les membres à mettre à jour et cliquer sur '''Mise à jour''' au droit de la ligne '''Prochaine échéance club : ......'''&lt;br /&gt;
&lt;br /&gt;
Remarque : Le fond de la cellule '''Cotisation''' est grisé avec la date en rouge si la cotisation n'est pas à jour.&lt;br /&gt;
&lt;br /&gt;
==La cotisation d'un utilisateur a été mise à jour par erreur, comment revenir en arrière ?==&lt;br /&gt;
*Aller sur la page '''Admin &amp;gt; Club &amp;gt; Paramétrage''' : sous le titre '''Gestion des cotisations''', modifier la date d'expiration de la cotisation (c'est cette date qui sera utilisée lors de la mise à jour des cotisations des membres) en remettant l'ancienne date d'échéance de l'utilisateur concerné&lt;br /&gt;
*Aller sur la page '''Admin &amp;gt; Utilisateurs &amp;gt; Utilisateurs''' : cocher le membre qui a été accidentellement mis à jour et cliquer sur '''Mise à jour''' au droit de la ligne '''Prochaine échéance club : ......'''&lt;br /&gt;
*Retourner sur la page '''Admin &amp;gt; Club &amp;gt; Paramétrage''' : sous le titre '''Gestion des cotisations''', re-modifier la date d'expiration de la cotisation (c'est cette date qui sera utilisée lors de la mise à jour des cotisations des membres) en remettant la nouvelle date d'échéance&lt;br /&gt;
&lt;br /&gt;
==Certains utilisateurs apparaissent sur fond rouge, pourquoi ?==&lt;br /&gt;
Les utilisateurs sur fond rouge, sont les utilisateurs pour lesquels le sexe, la nationalité ou la date de naissance ne sont pas renseignés.&lt;br /&gt;
&lt;br /&gt;
==Comment permettre aux utilisateurs de réserver au-delà de la fin de validité de leur cotisation ?==&lt;br /&gt;
Plusieurs solutions possibles :&lt;br /&gt;
*[[Documentation administrateur#Gestion_des_cotisations|Paramétrer]] OpenFlyers pour qu'il n'y ait qu'un message d'alerte ou ne pas gérer du tout les cotisations.&lt;br /&gt;
*[[Documentation administrateur#Gestion_des_cotisations|Paramétrer]] OpenFlyers avec une date de fin de cotisation à x mois après l'échéance réelle afin de permettre à l'utilisateur de pouvoir disposer de tous les droits de son profil jusqu'à x mois après l'échéance réelle.&lt;br /&gt;
*[[Documentation administrateur#Gestion_des_cotisations|Paramétrer]] OpenFlyers pour un accès restreint à un profil qui n'ait que le droit de réserver (profil à créer préalablement)&lt;br /&gt;
&lt;br /&gt;
== Comment supprimer une qualification ?==&lt;br /&gt;
Il faut la supprimer dans Admin/Utilisateurs/Qualification. Auparavant il ne faut plus qu'elle soit affectée à un utilisateur. Pour voir la liste des utilisateurs ayant la qualification, il faut cliquer sur l'icône Liste dans Admin/Utilisateurs/Qualification. Il faut aussi que la Qualification ne soit pas utilisée comme &amp;quot;Qualifications requises (si seul à bord) pour un type de vol donné&amp;quot;, A décocher dans Admin/Vols/Type de Vols.&lt;br /&gt;
&lt;br /&gt;
==Import des utilisateurs et mot de passe==&lt;br /&gt;
&lt;br /&gt;
Lorsque un import est réalisé depuis Admin &amp;gt; Configuration &amp;gt; Importer des utilisateurs, les nouveaux utilisateurs ont comme mot de passe le numéro de membre. Si c'est un utilisateur qui a été remis à jour grâce au rapprochement, le mot de passe ne change pas.&lt;br /&gt;
&lt;br /&gt;
==Comment ré-utiliser des numéros de membre==&lt;br /&gt;
&lt;br /&gt;
Il n'est pas possible d'utiliser le même numéro de membre pour plusieurs utilisateurs. Le système va refuser l'attribution du numéro de membre à l'utilisateur que l'on veut créer/modifier si on lui attribue le même numéro de membre qu'un membre déjà existant en base de données.&lt;br /&gt;
&lt;br /&gt;
Attention : cette restriction s'applique également pour les utilisateurs désactivés.&lt;br /&gt;
&lt;br /&gt;
Dans ce cas, si l'on souhaite réattribuer ce numéro à un autre utilisateur, il faut procéder de la manière suivante :&lt;br /&gt;
* Ré-activer l'utilisateur désactivé&lt;br /&gt;
* Changer son numéro de membre (ou mettre le champ à vide)&lt;br /&gt;
* Désactiver l'utilisateur&lt;br /&gt;
* Créer/modifier l'autre utilisateur et lui affecter le numéro&lt;br /&gt;
&lt;br /&gt;
==[[Documentation administrateur#Restreindre_les_droits_d.27un_utilisateur_dont_le_solde_du_compte_est_insuffisant|Comment restreindre les droits d'un utilisateur dont le solde du compte est insuffisant ?]]==&lt;br /&gt;
&lt;br /&gt;
=Gestion des réservations=&lt;br /&gt;
&lt;br /&gt;
==Peut-on limiter le nombre de réservations par pilotes ?==&lt;br /&gt;
Oui :&lt;br /&gt;
*Aller sur la page Admin &amp;gt; Configuration &amp;gt; Paramétrage et dans la partie &amp;quot;Gestion des réservations&amp;quot; utilisez &amp;quot;Limitation du nombre de réservations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Peut-on limiter dans le temps les réservations ?==&lt;br /&gt;
Oui :&lt;br /&gt;
*Aller sur la page Admin &amp;gt; Configuration &amp;gt; Paramétrage et dans la partie &amp;quot;Gestion des réservations&amp;quot; utilisez &amp;quot;Limitation dans le temps des réservations&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Comment empêcher un membre de réserver si ses qualifications ne sont pas à jour ?==&lt;br /&gt;
*Aller sur la page Admin &amp;gt; Configuration &amp;gt; Paramétrage et dans la partie &amp;quot;Gestion des licences/qualifications&amp;quot; utiliser &amp;quot;En mode &amp;quot;Restriction&amp;quot; pour les réservations&amp;quot;&lt;br /&gt;
*Définir les qualifications sur la page Admin &amp;gt; Utilisateurs &amp;gt; Qualifications&lt;br /&gt;
*Ensuite pour chaque type d'aéronef (via le menu Admin &amp;gt; Flotte &amp;gt; Type d'aéronef) définir les qualifications requises (loupe dans la colonne &amp;quot;Qualification&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==Je reçois par e-mail les avis de réservation de tout le monde, pourquoi ?==&lt;br /&gt;
Sûrement parce que dans votre profil, vous avez le droit &amp;quot;Alertable par mail pour toute réservation&amp;quot; d'activé.&lt;br /&gt;
&lt;br /&gt;
=Gestion des aéronefs=&lt;br /&gt;
&lt;br /&gt;
==[[Documentation administrateur#D.C3.A9sactiver_un_a.C3.A9ronef|Comment désactiver un aéronef ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Suivi de navigabilité|Calcul des heures de vols pour maintenance]]==&lt;br /&gt;
==[[Suivi de navigabilité#Gestion_des_points_fixes|Comment saisir les points fixes ?]]==&lt;br /&gt;
&lt;br /&gt;
=[[FAQ comptabilité|Comptabilité/Finance]]=&lt;br /&gt;
&lt;br /&gt;
=Gestion des vols=&lt;br /&gt;
&lt;br /&gt;
==Comment visualiser les vols oubliés ?==&lt;br /&gt;
*Aller sur la page Admin &amp;gt; Vols &amp;gt; Liste des vols : &lt;br /&gt;
- Vous cliquez sur l'icône de l'avion de la colonne &amp;quot;Vérifier la continuité des vols&lt;br /&gt;
&lt;br /&gt;
- Vous pouvez éventuellement limiter votre contrôle entre 2 dates et/ou à partir d'un compteur particulier (utile pour lister les vols entre 2 maintenances). Par défaut les vols du mois en cours sont proposés&lt;br /&gt;
&lt;br /&gt;
- Si vous avez sélectionnez l'option compteur sur cette avion, les discordances apparaissent en rouge sur fond grisé. L'erreur peut provenir de la ligne supérieure. Cliquer sur l'icône d'édition du vols dans la colonne action. Vous retrouvez la page de saisie pour corriger le compteur (ceci peut demander de modifier aussi le temps de vol)&lt;br /&gt;
&lt;br /&gt;
==Message de type de vol manquant pour un vol en double commande...==&lt;br /&gt;
*Vous avez sélectionné en admin &amp;quot;Type de vol requis dans le cas de la présence d'un second pilote à bord&amp;quot; et lorsque vous saisissez un vol en double commande il vous est impossible de le valider malgré la sélection du fameux type de vol requis.&lt;br /&gt;
Vous avez un message d'alerte &amp;quot;Seul le type de vol requis dans le cas de la présence d'un second pilote a été sélectionné, vous devez en sélectionner au moins un autre en plus&amp;quot;.&lt;br /&gt;
Dans ce cas, il faut que l'utilisateur indiquer un type de vol complémentaire&lt;br /&gt;
* Si vous ne souhaitez pas ce comportement il fait mettre &amp;quot;NON&amp;quot; à l'option &amp;quot;Le type de vol requis dans le cas de la présence d'un second pilote à bord ne peut être sélectionné seul&amp;quot;. &lt;br /&gt;
La conséquence de cette configuration est importante sur la façon dont vous souhaitez calculer vos statistiques. Si le critère est manquant le calcul ne pourra pas être correct &lt;br /&gt;
exemple : en cas d'instruction le temps de vol, selon le critère de classement local ou navigation de la DGAC, ne sera pas comptabilisé)&lt;br /&gt;
&lt;br /&gt;
==Comment supprimer un vol ?==&lt;br /&gt;
Seuls les vols non validés peuvent être supprimés. Pour effectuer la suppression :&lt;br /&gt;
* Aller sur la page '''Admin &amp;gt; Vols &amp;gt; Liste des vols'''.&lt;br /&gt;
* Cliquer sur l'icône correspondant à la ligne de l'aéronef et de la colonne '''Valider les vols sélectionnés'''. Si l'icône est grisée alors il n'y a aucun vol à recenser.&lt;br /&gt;
* Dans le tableau qui va lister les vols, cliquer sur l'icône poubelle correspondant au vol à supprimer et confirmer.&lt;br /&gt;
&lt;br /&gt;
=Reports=&lt;br /&gt;
&lt;br /&gt;
==[[FAQ_export#Import_de_fichiers_CSV_dans_Excel|Nous rencontrons des problèmes de reconnaissance de caractères accentués avec Excel]]==&lt;br /&gt;
&lt;br /&gt;
==Où puis-je faire mes propres requêtes SQL personnalisées afin d'afficher des rapports ?==&lt;br /&gt;
Vous allez dans le menu '''Admin &amp;gt; Rapports &amp;gt; Structure &amp;gt; Créer/Modifier''' puis Ajouter et dans le champ '''Prédicat''', vous placez votre requête.&lt;br /&gt;
&lt;br /&gt;
Pour visualiser le résultat, allez '''Admin &amp;gt; Rapports &amp;gt; Structure &amp;gt; Visualiser''' puis cochez les rapports que vous désirez voir.&lt;br /&gt;
&lt;br /&gt;
Lorsqu'il existe plusieurs rapports, il faut éviter d'utiliser &amp;quot;Tous cocher&amp;quot; car cela risque d'aboutir à une page vide par dépassement des ressources.&lt;br /&gt;
&lt;br /&gt;
==Où trouver des requêtes SQL pour générer des rapports ?==&lt;br /&gt;
Nous préconisons la centralisation des requêtes SQL sur le wiki anglais sur la page [[OF_doc-en:Export_generator_2.1|Export generator]]. Cela permet d'avoir une ressource d'informations centralisée utilisable par les administrateurs de tous les pays.&lt;br /&gt;
&lt;br /&gt;
==[[OF_doc-en:Database-description|Où trouver la liste des champs et des tables des bases de données OpenFlyers ?]]==&lt;br /&gt;
&lt;br /&gt;
==Je ne trouve pas la requête que je souhaite, comment la demander ?==&lt;br /&gt;
Si vous ne trouvez pas sur la page [http://doc-en.openflyers.com/index.php?title=Export_generator_2.1 Export generator] la requête que vous souhaitez, nous préconisons l'utilisation du support-forum depuis [http://www.openflyers.com www.openflyers.com] pour effectuer une demande de création de requête SQL.&lt;br /&gt;
&lt;br /&gt;
Soit un autre utilisateur vous proposera alors son aide, soit nous vous proposerons de créer cette requête SQL. Comme cela nécessite pour nous du temps, nous facturons cette création qui ensuite sera rajoutée sur la page contenant les diverses requêtes SQL.&lt;br /&gt;
&lt;br /&gt;
Le coût de cette création est fonction de la complexité de la requête. Il est facturé au coût horaire &amp;quot;Assistance - Intervention&amp;quot; présent sur le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]. A noter que l'assistance peut être prise en charge dans le cadre du bonus développement (cf. le catalogue tarifaire).&lt;br /&gt;
&lt;br /&gt;
==Les membres ont accès à des rapports alors qu'il n'en n'ont pas le droit==&lt;br /&gt;
Si les membres ont accès à des rapports c'est que ces derniers sont rendus publics : la &amp;quot;check-box&amp;quot; a du être sélectionnée dans le groupe concerné de la colonne &amp;quot;Visualisable pour les groupes&amp;quot; (menu Rapports/Structure/&amp;quot;Créer/Modifier&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==Dans les exports csv il apparait des « N° Id ». A quoi correspond ce numéro ?==&lt;br /&gt;
C'est un numéro interne à la base de données OpenFlyers (une clé primaire en langage base de données). Il ne sert que lorsqu'il est utilisé pour des requêtes d'extractions en SQL (cf. [[OF_doc-en:Export generator|Export generator]])&lt;br /&gt;
&lt;br /&gt;
=Traçabilité des modifications de la base de données=&lt;br /&gt;
Toute action effectuée, qui impacte la base de données, ainsi que la personne ayant effectuée cette action, est enregistrée automatiquement dans la base de données.&lt;br /&gt;
&lt;br /&gt;
Selon les droits dont vous disposez dans votre profil, vous pouvez accéder à ces informations par le biais du requêteur de recherches (menu logs).&lt;br /&gt;
&lt;br /&gt;
Nous pouvons également effectuer pour le compte de la structure toute recherche conformément au tarif en vigueur dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]&lt;br /&gt;
&lt;br /&gt;
=A quoi servent les adresses IPs bloquées ou les identifiants bloqués ?=&lt;br /&gt;
Lorsqu'un utilisateur tente à plusieurs reprises et de manière infructueuse à se loguer sur OpenFlyers, au bout d'un certain nombre de tentatives son adresse IP et/ou son identifiant sont bloqués pour une durée croissante au fur et à mesure qu'il retente toujours de manière infructueuse.&lt;br /&gt;
&lt;br /&gt;
Le but de ce blocage est d'éviter à des attaques de type &amp;quot;force brute&amp;quot; d'arriver à trouver un couple identifiant/mot de passe valide.&lt;br /&gt;
&lt;br /&gt;
Cependant, il peut arriver qu'il soit nécessaire de débloquer des adresses IPs bloquées ou des identifiants bloqués. C'est l'objet du gestionnaire d'adresses IPs bloquées et du gestionnaire d'identifiants bloqués. En supprimant ces entrées de la liste des entrées bloquées, vous les débloquez.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Contr%C3%B4le-d%27identification-par-OpenFlyers-pour-un-logiciel-tiers&amp;diff=14188</id>
		<title>Contrôle d'identification par OpenFlyers pour un logiciel tiers</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Contr%C3%B4le-d%27identification-par-OpenFlyers-pour-un-logiciel-tiers&amp;diff=14188"/>
				<updated>2016-06-16T10:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : Page créée avec « =Presentation= Here is an presentation of how to check if an identification/password couple submitted by your own scripts is correct according to the OpenFlyers database.... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Presentation=&lt;br /&gt;
Here is an presentation of how to check if an identification/password couple submitted by your own scripts is correct according to the OpenFlyers database.&lt;br /&gt;
&lt;br /&gt;
=How it works=&lt;br /&gt;
If your OpenFlyers is located at http://test.openflyers.org/ just post at http://test.openflyers.org/checkIdent.php with login and rawPassword variables.&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' OpenFlyers release 2 or higher required a password hashed with MD5 (see the commented $postData line below in the PHP script).&lt;br /&gt;
&lt;br /&gt;
==Possible return values==&lt;br /&gt;
The script display return an answer code which should be one of this value:&lt;br /&gt;
*0: OK&lt;br /&gt;
*1: OK but several profile availables. OpenFlyers select automatically the best profile.&lt;br /&gt;
*2: outdate but authorized&lt;br /&gt;
*3: outdate but authorized with outdate profile&lt;br /&gt;
*4: outdate subscription, unauthorized&lt;br /&gt;
*5: bad Ident, unauthorized&lt;br /&gt;
*6: Banned (ip or login), unauthorized&lt;br /&gt;
*7: no Ident -&amp;gt; ask one&lt;br /&gt;
&lt;br /&gt;
We recommend you to consider 0-2 OK and 3-7 bad&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' you have to filter public access login (with no right) because for OF, it's a valid access !!!&lt;br /&gt;
&lt;br /&gt;
=JavaScript=&lt;br /&gt;
If you are using your own authenticate form, use javascript function submit_pwd() located into \javascript\submitPwd.js&lt;br /&gt;
&lt;br /&gt;
=PHP code example=&lt;br /&gt;
Here an example how to send a post request with php :&lt;br /&gt;
&amp;lt;php&amp;gt;function httpPostRequest($host, $path, $postData) { &lt;br /&gt;
  $result= &amp;quot;&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
  $request = &amp;quot;POST $path HTTP/1.1\n&amp;quot;. &lt;br /&gt;
  &amp;quot;Host: $host\n&amp;quot;. &lt;br /&gt;
  (isset($referer) ? &amp;quot;Referer: $referer\n&amp;quot; : &amp;quot;&amp;quot;). &lt;br /&gt;
  &amp;quot;Content-type: Application/x-www-form-urlencoded\n&amp;quot;.&lt;br /&gt;
  &amp;quot;Content-length: &amp;quot;.strlen($postData).&amp;quot;\n&amp;quot;. &lt;br /&gt;
  &amp;quot;Connection: close\n\n&amp;quot;. &lt;br /&gt;
  $postData.&amp;quot;\n&amp;quot;; &lt;br /&gt;
  &lt;br /&gt;
  // Some debug informations:&lt;br /&gt;
  // print(&amp;quot;&amp;lt;pre&amp;gt;Request:\n&amp;quot;.htmlentities($request).&amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;); &lt;br /&gt;
&lt;br /&gt;
  if ($fp = fsockopen($host, 80, $errno, $errstr, 3))&lt;br /&gt;
  // for PHP release &amp;lt; 5.3.0, use the following syntax:&lt;br /&gt;
  // if ($fp = fsockopen($host, 80, &amp;amp;$errno, &amp;amp;$errstr, 3))&lt;br /&gt;
    { &lt;br /&gt;
    if (fputs($fp, $request)) &lt;br /&gt;
    { &lt;br /&gt;
      while(! feof($fp)) &lt;br /&gt;
      { &lt;br /&gt;
       $result.= fgets($fp, 128); &lt;br /&gt;
      } &lt;br /&gt;
      fclose($fp); &lt;br /&gt;
//      print($result);&lt;br /&gt;
      return $result; &lt;br /&gt;
    } &lt;br /&gt;
  } &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//$postData='login=jbond&amp;amp;rawPassword='.md5('007'); // for OpenFlyers release 2 or higher&lt;br /&gt;
$postData='login=jbond&amp;amp;rawPassword=007';&lt;br /&gt;
$rawContent = httpPostRequest('plateform-name.openflyers.fr','http://plateform-name.openflyers.fr/checkIdent.php',$postData); [^]&lt;br /&gt;
&lt;br /&gt;
list($header, $content) = explode(&amp;quot;\r\n\r\n&amp;quot;, $rawContent, 2);&lt;br /&gt;
list($byteQty, $realContent, $dummy) = explode(&amp;quot;\r\n&amp;quot;, $content, 3);&lt;br /&gt;
&lt;br /&gt;
// the answer is in $realContent&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Joomla authentification plugin=&lt;br /&gt;
If you have a Joomla website and you want that Openflyers users could connect to your Joomla restricted access zone, you may add this plugin to have only one account database: Openflyers one.&lt;br /&gt;
You don't need to update Joomla user database, this plugin ask directly Openflyers thanks to CheckIdent.php script.&lt;br /&gt;
There are two files depending on your Joomla version:&lt;br /&gt;
&lt;br /&gt;
*[[Media:Joomla_authentication_plugin.zip|Joomla plugin for OpenFlyers]]&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14187</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14187"/>
				<updated>2016-06-16T10:29:52Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Documentation Webmasters et Développeurs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2013-OF4-launch.gif|right|link=OF_doc4-fr:Montée-de-version]]&lt;br /&gt;
&lt;br /&gt;
Bienvenue sur la documentation de la '''version 1''' d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Cette version est obsolète. Les versions en vigueurs sont les versions 3 et 4.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez retrouver leur documentation sur les pages suivantes :&lt;br /&gt;
*[[OF_doc3-fr:Accueil|Documentation OpenFlyers version 3]]&lt;br /&gt;
*[[OF_doc4-fr:Accueil|Documentation OpenFlyers version 4]]&lt;br /&gt;
&lt;br /&gt;
You can also access to our [[OF_doc-en:Main-Page2|english documentation]].&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
*[[FAQ client|FAQ clients]]&lt;br /&gt;
*[[FAQ utilisateur|FAQ utilisateur]]&lt;br /&gt;
*[[FAQ administrateur 2.0|FAQ administrateur version 2.0]]&lt;br /&gt;
*[[FAQ administrateur|FAQ administrateur]]&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité]]&lt;br /&gt;
*[[FAQ export]]&lt;br /&gt;
*[[FAQ AeroBox]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Administrateurs=&lt;br /&gt;
*[[Documentation administrateur|Documentation administrateur]]&lt;br /&gt;
*[[Liste de diffusion|Gérer une liste de diffusion sur OpenFlyers]]&lt;br /&gt;
*[[Formules de calcul|Formules de calcul]]&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
*[[Use-Accounting2.1|Utilisation de la comptabilité sur version 2.1]]&lt;br /&gt;
&lt;br /&gt;
===Facturation client===&lt;br /&gt;
*[[Gestion des ventes|Gestion des ventes version]]&lt;br /&gt;
&lt;br /&gt;
===FAQ comptabilité===&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité version]]&lt;br /&gt;
&lt;br /&gt;
==Maintenance==&lt;br /&gt;
*[[Maintenance aéronautique|Maintenance aéronautique]]&lt;br /&gt;
*[[Suivi de navigabilité|Suivi de la navigabilité]]&lt;br /&gt;
&lt;br /&gt;
===Requêtes permettant de générer des rapports===&lt;br /&gt;
*[[OF_doc-en::Export generator 2.0|Génération d'export version 2.0]]&lt;br /&gt;
*[[OF_doc-en::Export generator 2.1|Génération d'export version]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Utilisateurs=&lt;br /&gt;
*[[Documentation utilisateur 2.0|Documentation utilisateur version 2.0]]&lt;br /&gt;
*[[Documentation utilisateur|Documentation utilisateur]]&lt;br /&gt;
&lt;br /&gt;
=[[OF_wiki:|Documentation Webmasters et Développeurs]]=&lt;br /&gt;
*[[Contrôle d'identification par OpenFlyers pour un logiciel tiers]]&lt;br /&gt;
&lt;br /&gt;
=[[BTS|Rapporter des bugs]]=&lt;br /&gt;
&lt;br /&gt;
=[[Trucs et astuces|Trucs et astuces]]=&lt;br /&gt;
==[[Kiosque PC|Mettre en place un PC kiosque]]==&lt;br /&gt;
==[[Réseau Internet hybride|Mettre en place un réseau internet hybride]]==&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=FAQ-comptabilit%C3%A9&amp;diff=14185</id>
		<title>FAQ comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=FAQ-comptabilit%C3%A9&amp;diff=14185"/>
				<updated>2016-04-19T14:12:05Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Initialisation=&lt;br /&gt;
==Comment accéder à la gestion complète de la compta ?==&lt;br /&gt;
Il faut activer la gestion des comptes et attribuer les droits de gestion correspondant aux profils souhaités.&lt;br /&gt;
&lt;br /&gt;
==Comment initialiser le 1er exercice comptable ?==&lt;br /&gt;
*'''Admin &amp;gt; Comptes &amp;gt; Gestion / Export'''&lt;br /&gt;
*Dans le formulaire '''Gestion de l'exercice comptable''', il faut renseigner '''Date de début du nouvel exercice''' puis cliquer sur le bouton '''Ouvrir la saisie à cette date'''.&lt;br /&gt;
&lt;br /&gt;
==Comment initialiser la balance des comptes ?==&lt;br /&gt;
Pour que le solde des comptes soit exact il faut initialiser la balance à la date d'activation de votre comptabilité&lt;br /&gt;
* Aller dans Comptes &amp;gt; Gestion-Export et initialiser la date de début d'exercice&lt;br /&gt;
* Voir la rubrique Comment créer des comptes d'export ?&lt;br /&gt;
* Tous vos intitulés de compte doivent avoir au moins un compte valide&lt;br /&gt;
Aller dans Club &amp;gt; Reporting et cliquer sur Liste des comptes, vous récupérez un fichier au format csv &lt;br /&gt;
* Ouvrez-le avec un tableur, nous vous [[FAQ administrateur 2.0#Nous_rencontrons_des_probl.C3.A8mes_de_reconnaissance_de_caract.C3.A8res_avec_Excel|conseillons OpenOffice]]. Ouvrer ce fichier et indiquer le type d'encodage UTF8 ainsi que le séparateur de données ';' (pensez à décocher Virgule)&lt;br /&gt;
* Vous indiquez le montant pour chacun des comptes et il faut passer la colonne Update à 1 sinon la ligne ne sera pas prise en compte&lt;br /&gt;
* Il n'est pas possible de créer des comptes, il ne faut pas en ajouter&lt;br /&gt;
* Sauvez votre fichier&lt;br /&gt;
* Allez dans Club &amp;gt; Imports &amp;gt; Initialisation des comptes et importez votre fichier&lt;br /&gt;
&lt;br /&gt;
=Autorisation de saisie des encaissements=&lt;br /&gt;
&lt;br /&gt;
==Comment autoriser une personne à saisir des encaissements pour elle-même ?==&lt;br /&gt;
Il faut rajouter à son profil le droit &amp;quot;Encaisser ses paiements&amp;quot; disponible dans la liste &amp;quot;Gestion des comptes&amp;quot; des droits des profils&lt;br /&gt;
&lt;br /&gt;
==Comment autoriser une personne à saisir des encaissements pour les autres ?==&lt;br /&gt;
Il faut rajouter à son profil le droit &amp;quot;Saisir les encaissements pour les tiers&amp;quot; disponible dans la liste &amp;quot;Gestion des comptes&amp;quot; des droits des profils&lt;br /&gt;
&lt;br /&gt;
==Comment définir les types d'encaissements saisissable ?==&lt;br /&gt;
Lorsque dans Comptes &amp;gt; Encaissements &amp;gt; Types d'encaissements, le drapeau &amp;quot;Accessible aux personnes autorisées à saisir pour tous&amp;quot; est coché cela signifie que seules les personnes disposant du droit &amp;quot;Saisir les encaissements pour les tiers&amp;quot; seront autorisées à saisir un encaissement de ce type sinon toutes les personnes disposant du droit &amp;quot;Encaisser ses paiements&amp;quot; ou &amp;quot;Saisir les encaissements pour les tiers&amp;quot; en auront la possibilité.&lt;br /&gt;
&lt;br /&gt;
=Comment facturer une cotisation ?=&lt;br /&gt;
Toute facturation à un membre s'effectue par le menu Admin &amp;gt; Comptes &amp;gt; Saisir un flux&lt;br /&gt;
*Débiter le compte du membre&lt;br /&gt;
*Créditer le compte produit Cotisation&lt;br /&gt;
*Valider&lt;br /&gt;
&lt;br /&gt;
=Comment supprimer un transfert de compte à compte ?=&lt;br /&gt;
Il n'est pas possible de supprimer un transfert de compte à compte si il a été fait par les utilisateurs.&lt;br /&gt;
&lt;br /&gt;
Par contre il est possible d'annuler son &amp;quot;effet&amp;quot; en créant une écriture opposée.&lt;br /&gt;
&lt;br /&gt;
Ce choix permet de garder une traçabilité des écritures qui peuvent avoir été saisies par d'autres personnes et surtout qui peuvent affecter des comptes de membres.&lt;br /&gt;
&lt;br /&gt;
C'est comme pour un compte bancaire : un banquier ne supprime jamais une écriture sur un compte client. Il passe simplement une nouvelle écriture qui annule l'effet de la précédente.&lt;br /&gt;
&lt;br /&gt;
Si le transfert a été fait par le module Saisir un flux alors la modification est possible tant que le process de validation n'a pas été effectué&lt;br /&gt;
&lt;br /&gt;
=Comment mettre à jour le tarif des aéronefs ?=&lt;br /&gt;
*Aller sur la page '''Admin &amp;gt; Comptes &amp;gt; Tarification des heures &amp;gt; Actualisation des tarifs''' : cliquer sur '''Modifier un tarif'''.&lt;br /&gt;
&lt;br /&gt;
Un tarif débute à partir d'une date, vous pouvez anticiper un changement de tarif. Le tarif s'appliquera à la date du mouvement.&lt;br /&gt;
&lt;br /&gt;
'''Attention''' : si vous cliquez sur l'icône '''Edition''' (Crayon dans la colonne action) et que vous modifiez la valeur, alors vous changez le prix de l'heure actuel mais vous ne créez pas un nouveau tarif. Vous perdrez toute possibilité de corriger un vol à une date donnée.&lt;br /&gt;
&lt;br /&gt;
*Chaque variable doit avoir une valeur pour la période d'exercice en cours (date définie dans '''Admin &amp;gt; Comptes &amp;gt; Gestion &amp;amp; Export''') sinon il y aurait un &amp;quot;trou tarifaire&amp;quot; qui permettrait à des pilotes de voler gratuitement.&lt;br /&gt;
&lt;br /&gt;
=Les exports comptables=&lt;br /&gt;
&lt;br /&gt;
==Quels sont les formats d'export supportés ?==&lt;br /&gt;
Nous intégrons à la demande tout type de format d'export.&lt;br /&gt;
&lt;br /&gt;
Actuellement nous avons créé des formats d'export pour des logiciels de comptabilité tels que EBP, Ciel ou Sage.&lt;br /&gt;
&lt;br /&gt;
Les exports sont constitués des éléments demandés par le logiciel de comptabilité&lt;br /&gt;
En cas, de différence de format, ne pas hésiter à nous contacter.&lt;br /&gt;
&lt;br /&gt;
Le contenu de la colonne du libellé est contextuel, l'affichage dépend de la catégorie du compte:&lt;br /&gt;
*Catégorie club, charge, trésorerie, produit et taxe, c'est le nom du compte &lt;br /&gt;
*Catégorie membre, c'est le type de compte membre suivi du nom de l'utilisateur&lt;br /&gt;
*Catégorie aéronef, c'est le type de compte aéronef suivi de l'immatriculation&lt;br /&gt;
*Catégorie fournisseur, c'est le nom du fournisseur&lt;br /&gt;
&lt;br /&gt;
Cependant il faut être vigilant sur le fait que ces logiciels peuvent faire évoluer leur format d'import et qu'il est préférable de faire des tests pour valider le format avant un export avec validation des écritures.&lt;br /&gt;
&lt;br /&gt;
==Caractères accentués dans les format d'exports==&lt;br /&gt;
Les programmes d'imports sont souvent ancien et ils utilisent le format d'encodage CP850 (ciel, EBP)&lt;br /&gt;
&lt;br /&gt;
Nos fichiers sont convertis à ce format donc si vous l'ouvrez avec une programme qui n'accepte pas cette encodage (Tel que Word ou Excel) alors les caractères ne s'afficheront pas correctement. Nous conseillons les logiciels [http://fr.openoffice.org/ OpenOffice] [http://www.libreoffice.org/ ou Libre Office]&lt;br /&gt;
Lors de l'import dans votre logiciel de comptabilité les écritures doivent apparaitre correctement. La tendance des programmes plus récents est de gérer l'encodage, si ces caractères n'apparaissent pas correctement nous contacter&lt;br /&gt;
*'''Conseils''': pour OpenOffice ou Libre Office choisir dans l'import de texte: Europe occidentale (DOS/OS2-850 international). Et pour ne pas avoir de conversion des colonnes chiffres, mettre pour les colonne ou il y a des nombres, le type de colonne Texte au lieu de Standard&lt;br /&gt;
*Pour le format d'export '''csv''' vous pouvez choisir directement l'encodage de sortie: pour Windows CP1252, pour Mac Mac Roman, pour Linux ISO-8859-15. &lt;br /&gt;
*Dans Admin/Configuration/Paramètres vous pouvez mettre une valeur par défaut qui sera utilisée dans tous les exports au format csv&lt;br /&gt;
&lt;br /&gt;
==[[FAQ_export#Import_de_fichiers_CSV_dans_OpenOffice.2FLibreOffice|Lire un fichier exporté en .csv avec OpenOffice ou LibreOffice]]==&lt;br /&gt;
&lt;br /&gt;
==Exporter le résultat des requêtes SQL du gestionnaire de rapport==&lt;br /&gt;
Comment je peux exporter les informations que l'on visualise par les rapports (requêtes SQL). Le format XML enregistré n'est pas directement exploitable. Pourquoi ne pas disposer d'un format .csv ?&lt;br /&gt;
&lt;br /&gt;
Les requêtes SQL fournissent un puisant outil pour accéder à vos données. Il est cependant utile de pouvoir récupérer les données pour une exploitation particulière. Le format csv dans ce contexte n'est pas approprié. OF affiche une page XHTML ce qui signifie un texte correctement formaté qui peut être récupéré par un simple copier collé. &lt;br /&gt;
Le tableur Calc de Open Office ou Libre Office interprète correctement ce HTML et le formate en colonne conformément à la présentation de votre page. Il a cependant un paramétrage à faire pour que les textes soit correctement encodé (affichage des caractères accentués) et que les cellules numériques affichent le format correct&lt;br /&gt;
&lt;br /&gt;
*Allez dans l'onglet Outils/Options/Chargement&amp;amp;Enegistrement/Compatibilité HTML (Tools/Options/Load&amp;amp;Save/HTML Compatibility)&lt;br /&gt;
*Cocher &amp;quot;Utiliser l'environnement linguistique Anglais (USA) pour les nombres&amp;quot;, (&amp;quot;Use English (USA) locale numbers&amp;quot;)&lt;br /&gt;
*Par la même occasion vous pouvez aussi changer le Jeu d'encodage (Character set) par Unicode (UTF-8)&lt;br /&gt;
&lt;br /&gt;
Le programme interprète alors le point comme le séparateur décimal et vous avez directement le bon copier/coller&lt;br /&gt;
Si vous avec choisi l'encodage UTF-8 les caractères accentués seront aussi correctement traduits (A rechanger si vous avez à faire des copier coller depuis des programmes à l'encodage CP1252 &amp;quot;Windows Microsoft&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=A quoi servent les comptes d'export ?=&lt;br /&gt;
Pour chaque compte, il faut préciser un compte d'export qui sert dans le cas où on exporte la comptabilité vers un autre logiciel de comptabilité.&lt;br /&gt;
&lt;br /&gt;
Cela sert également si on souhaite éditer une comptabilité depuis OpenFlyers et son module de gestion des rapports tout en respectant un plan comptable codifié.&lt;br /&gt;
&lt;br /&gt;
==Comment attribuer un code d'export comptable à un utilisateur ou pour les comptes aéronefs ?==&lt;br /&gt;
*Aller dans Admin &amp;gt; Comptes &amp;gt; Membres &amp;gt; Comptes membres ou Admin &amp;gt; Comptes &amp;gt; Aéronefs &amp;gt; Comptes aéronef&lt;br /&gt;
*Retrouver le compte souhaité&lt;br /&gt;
*Cliquer sur l'icône &amp;quot;crayon&amp;quot; pour modifier : un formulaire apparait permettant de modifier/saisir le Code comptable pour l'exportation&lt;br /&gt;
&lt;br /&gt;
==Comment attribuer un code d'export comptable - Autre comptes ?==&lt;br /&gt;
*Aller dans Comptes &amp;gt; Liste les comptes &amp;gt; Tous les comptes&lt;br /&gt;
*Modifier le champ Compte d'export, la validation est automatique lors de la sortie du champs (javascript doit être activé sur l'ordinateur)&lt;br /&gt;
&lt;br /&gt;
==Comment attribuer un code d'export comptable - Méthode groupée ?==&lt;br /&gt;
La modification par lot peut etre effectué depuis Admin &amp;gt; Configuration &amp;gt; Imports &amp;gt; Initialisation des comptes avec l'importation d'un fichier au format csv&lt;br /&gt;
&lt;br /&gt;
==Comment attribuer un code d'export comptable - Numérotation automatique ?==&lt;br /&gt;
Dans Admin &amp;gt; Comptes &amp;gt; Membres &amp;gt; Gerer les comptes d'export mettez une formule&lt;br /&gt;
&lt;br /&gt;
On peut utiliser les wildcards suivants :&lt;br /&gt;
 - %MEMBER_NUM&lt;br /&gt;
 - %LASTNAME&lt;br /&gt;
 - %FIRSTNAME&lt;br /&gt;
 - %ACCOUNT_TYPE&lt;br /&gt;
 - %AUTO_INCREMENT&lt;br /&gt;
 - %AUTHENTICATION_LOGIN&lt;br /&gt;
&lt;br /&gt;
On peut utiliser les fonctions suivantes :&lt;br /&gt;
- substr&lt;br /&gt;
- strtolower&lt;br /&gt;
- strtoupper&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
 - 411+%LASTNAME vous créera un compte d'export 411dupont,411dupond,....&lt;br /&gt;
 - 411+%MEMBER_NUM vous créera un compte d'export 411XXXXX,.... (l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos clients. A vous de vérifier l'unicité de cette valeurs)&lt;br /&gt;
 - 411+%LASTNAME+substr(%FIRSTNAME,0,1) vous créera un compte d'export 411dupontf,411dupontt,....&lt;br /&gt;
 - 411+%ACCOUNT_TYPEE vous créera un compte d'export 41100045,4110005,.... Le numéro ACCOUNT est interne à OF et il sera unique&lt;br /&gt;
 - 411+%AUTO_INCRENENT vous créera un compte d'export : 41100001, 41100002,....,4110000x&lt;br /&gt;
 - 01+%AUTHENTICATION_LOGIN vous créera un compte d'export : 01XXXX (où XXX correspond à l'identifiant du client)&lt;br /&gt;
&lt;br /&gt;
==Doit-on saisir les codes d'export avant de saisir des mouvements ?==&lt;br /&gt;
C'est inutile ! Vous pouvez même modifier vos codes d'export à n'importe quel moment. Ces codes ne sont jamais utilisés dans l'application OpenFlyers. Ils sont utilisés uniquement pour générer le fichier d'export.&lt;br /&gt;
&lt;br /&gt;
==Comment est effectuée la répartition des journaux dans les exports comptables ?==&lt;br /&gt;
Les codes des journaux ne sont pas paramétrables : voici ceux utilisés dans les exports comptables : &lt;br /&gt;
* les transactions liées aux vols sont dans un journal de vente VT,&lt;br /&gt;
* les règlements sont dans un journal de banque BQ,&lt;br /&gt;
* tous les autres mouvements sont dans un journal d'ordres divers OD&lt;br /&gt;
&lt;br /&gt;
==[[Use_Accounting3#Passage_d.27un_exercice_comptable_.C3.A0_l.27autre|Comment réaliser le passage d'un exercice comptable à l'autre ?]]==&lt;br /&gt;
&lt;br /&gt;
==Comment exporter les écritures ?==&lt;br /&gt;
&lt;br /&gt;
Dans le bas de la page Admin &amp;gt; Comptes &amp;gt; Import/export vous avez soit&lt;br /&gt;
*le message&lt;br /&gt;
 Vous ne pouvez exporter car il y a des comptes sans valeur d'export :&lt;br /&gt;
 Julien Julien (Pilote)&lt;br /&gt;
&lt;br /&gt;
Dans ce cas le programme vous indique les comptes qui n'ont pas de compte d'export. Voir la rubrique [[#A_quoi_servent_les_comptes_d.27export_.3F|A quoi servent les comptes d'export ?]]&lt;br /&gt;
&lt;br /&gt;
*un formulaire qui vous permet de faire les exports&lt;br /&gt;
Choisissez le format d'export et cocher ou non la case &amp;quot;Marquer les écritures&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
'''Attention : il faut prendre soin de réaliser un premier export sans &amp;quot;Marquer les écritures&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
'''Le but est de vérifier que le format de l'export correspond bien au format souhaité par le logiciel où sont importées les données (lisible avec un traitement de texte).'''&lt;br /&gt;
&lt;br /&gt;
'''De plus, il faut toujours, pour chaque export, faire la manipulation au moins une fois sans valider au cas où il y aurait une coupure internet lors de la réception du fichier.'''&lt;br /&gt;
&lt;br /&gt;
'''Une fois marquées, les écritures exportées ne peuvent plus être modifiées!!!'''&lt;br /&gt;
&lt;br /&gt;
Sélectionner la période d'exportation&lt;br /&gt;
&lt;br /&gt;
Attention, ne soyez pas trop gourmand dans les dates d'export, selon la taille de votre club et les mois chargés (15 jours à 3 mois selon votre volume de vols). Si vous avez un fichier d'export dénommé index.php c'est que votre demande était trop forte.&lt;br /&gt;
&lt;br /&gt;
==Erreur HTTP 500 ou 504 lors d'un export==&lt;br /&gt;
Si vous rencontrer une erreur de ce type cela veut dire que le fichier d'export à générer est trop gros.&lt;br /&gt;
&lt;br /&gt;
La solution consiste à scinder l'export en plusieurs morceaux en modifiant les dates à prendre en compte.&lt;br /&gt;
&lt;br /&gt;
==Comment retrouver les écritures non validées afin de pouvoir réaliser l'export ?==&lt;br /&gt;
Dans le module de gestion des exports, vous pouvez avoir un message qui dit :&lt;br /&gt;
 &amp;quot;La 1ère écriture NON VALIDEE date de 06/01/2008 00:00 et il y en a 408&amp;quot;&lt;br /&gt;
Cela veut dire qu'il y a au moins un vol, un paiement ou un transfert de compte qui date du 6 janvier 2008 qui n'a pas été validé.&lt;br /&gt;
&lt;br /&gt;
Pour vérifier les vols restant à valider, il suffit d'aller dans Admin &amp;gt; Vols &amp;gt; Liste des vols puis &amp;quot;Valider les vols sélectionnés&amp;quot; pour chaque avion&lt;br /&gt;
&lt;br /&gt;
Pour vérifier les paiements restant à valider, il suffit d'aller dans Admin &amp;gt; Comptes &amp;gt; Pointer et choisir chaque type de paiement.&lt;br /&gt;
&lt;br /&gt;
Pour vérifier les transferts, il suffit d'aller dans Admin &amp;gt; Comptes &amp;gt; Valider les flux puis valider les transferts.&lt;br /&gt;
&lt;br /&gt;
De plus, le nombre d'écritures non validées correspond au nombre TOTAL d'écritures non validées. En effet, OpenFlyers sait quand est-ce que vous commencez un exercice mais il ne sait pas quand est-ce que vous voulez qu'il s'arrête. Donc il prend toutes les écritures non validées.&lt;br /&gt;
&lt;br /&gt;
Enfin, OpenFlyers ne vous permettra d'exporter QUE la période qui inclut des écritures validées. Dès qu'il rencontre une écriture non validée, il vous empêche d'exporter une période qui inclut cette écriture.&lt;br /&gt;
&lt;br /&gt;
=Comment revenir sur une écriture saisie ?=&lt;br /&gt;
*Soit l'écriture n'est pas validée (elle apparaît en vert, gras, italique) : vous pouvez alors modifier ou supprimer l'écriture&lt;br /&gt;
*Soit l'écriture est validée (elle apparaît en noir, &amp;quot;droit&amp;quot;) : dans ce cas, vous ne pouvez pas revenir sur cette écriture. Il s'agit d'un principe fondamental de traçabilité comptable. En effet, si vous pouviez faire &amp;quot;disparaître&amp;quot; une écriture validée, alors vos utilisateurs pourraient croire qu'ils ont &amp;quot;rêvé&amp;quot; en voyant une écriture un jour et en ne la voyant plus le lendemain. Par contre, vous pouvez toujours passer une contrepartie qui annule l'effet d'une écriture qui n'aurait pas due exister. Ainsi, les utilisateurs verront la première écriture et également la seconde.&lt;br /&gt;
&lt;br /&gt;
=Comment mettre en place des alertes par e-mail pour les soldes insuffisants ?=&lt;br /&gt;
*'''Configuration &amp;gt; Paramétrage'''&lt;br /&gt;
*Formulaire '''Gestion des comptes'''&lt;br /&gt;
*Renseigner le champ '''Seuil de compte pour l'envoi d'email d'alerte :'''&lt;br /&gt;
*Renseigner le champ '''Fréquence de rappel pour l'envoi d'email d'alerte :'''&lt;br /&gt;
*Cliquer sur '''Valider'''&lt;br /&gt;
&lt;br /&gt;
=Alertes de configuration=&lt;br /&gt;
==Message d'erreur avec nombre de membres sans compte==&lt;br /&gt;
 ALERTE DE CONFIGURATION :&lt;br /&gt;
 La gestion des comptes est activée mais il y a 3 membre(s) qui n'a (ont) pas de compte&lt;br /&gt;
&lt;br /&gt;
Ce message survient si des membres non pas de compte de défini. Chaque utilisateur avec le statut membre et appartenant à un groupe doit avoir au moins un compte, sinon aucun mouvement ne sera autorisé pour cet utilisateur&lt;br /&gt;
Allez dans la page Admin &amp;gt; Comptes &amp;gt; Membres et cliquer sur l'icône rouge&lt;br /&gt;
&lt;br /&gt;
Si le nombre est négatif (- 3) cela signifie qu'il y a des membres avec des comptes alors qu'ils n'appartiennent à aucun groupe (Ceci a pu ce produire avant la correction d'un bug qui ne verrouillait pas cette situation)&lt;br /&gt;
Aller dans Admin &amp;gt; Club &amp;gt; Utilisateurs repérez les membres dont le Groupe est vide et affectez lui un groupe&lt;br /&gt;
&lt;br /&gt;
Si vous créer de &amp;quot;Faux&amp;quot; utilisateurs pour des besoins de gestion, il ne faut pas leur attribuer de Groupe. Ceci bloquera une éventuelle utilisation de ce compte pour une opération comptable&lt;br /&gt;
==Vol sans écriture comptable==&lt;br /&gt;
 ALERTE DE CONFIGURATION :&lt;br /&gt;
 Il n'y a pas de mouvement comptable associé au vol&lt;br /&gt;
 01 01 2000 F-ABCD DUPONT Pierre 1:32&lt;br /&gt;
Ce message survient lorsqu'il y a un trou dans le paramétrage de la tarification des heures de vols : le vol saisi ne correspond à aucune des règles définies et par conséquent aucun mouvement comptable n'est créé (alors que le vol lui est bien créé).&lt;br /&gt;
&lt;br /&gt;
Pour corriger ce problème, il faut regarder pour ce vol :&lt;br /&gt;
*Le type d'aéronef&lt;br /&gt;
*Les types de vols&lt;br /&gt;
*Le groupe auquel appartient le pilote&lt;br /&gt;
Et ensuite regarder dans les règles de tarification, la ou les règles qui devraient s'appliquer et détecter pourquoi dans le cas présent la où les règles ne s'appliquent.&lt;br /&gt;
&lt;br /&gt;
Il faut notamment faire attention aux exclusions des types de vol qui peuvent avoir été attribuées aux règles de tarification.&lt;br /&gt;
&lt;br /&gt;
Si ce vol a été validé, alors il faut le faire dé-valider par l'équipe OpenFlyers. Cette opération est soit incluse soit en sus de votre abonnement.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=%C3%89critures-comptables&amp;diff=14184</id>
		<title>Écritures comptables</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=%C3%89critures-comptables&amp;diff=14184"/>
				<updated>2016-04-19T14:11:36Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Règles sur les écritures=&lt;br /&gt;
&lt;br /&gt;
En comptabilité, il ne peut y avoir d'écriture de débit négatif ou de crédit négatif.&lt;br /&gt;
&lt;br /&gt;
=Les 4 grands types d'écritures=&lt;br /&gt;
 Note : quelque soit l'écriture (=ensemble de mouvements)&lt;br /&gt;
 elle doit toujours être équilibrée (=la somme des débits doit être égale à la somme des crédits)&lt;br /&gt;
&lt;br /&gt;
==Facture fournisseur==&lt;br /&gt;
'''Attention :''' nous présentons ici uniquement la saisie d'une facture fournisseur d'un produit non immobilisé. Cf. le cas d'une [[#Facture_fournisseur_d.27immobilisation|facture fournisseur d'un produit immobilisé]].&lt;br /&gt;
&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 17.94 € sur son compte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||17.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Facture fournisseur intra-communautaire===&lt;br /&gt;
*http://www.eguens.com/v2/comptabilite/cours/tva-intracommunautaire.php&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie allemande :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660)||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie (401)||||15 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA due intracommunautaire (445200)||||2.94 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 15.00 € sur son compte&lt;br /&gt;
&lt;br /&gt;
====Passage de la TVA fournisseur en intra-communautaire====&lt;br /&gt;
Si cette facture a déjà été [[#Saisie_d.27une_facture_fournisseur|saisie comme une facture fournisseur normale]], alors il faut rajouter les écritures :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible intracommunautaire(445661)||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA due intracommunautaire (445200)||||2.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Facture client==&lt;br /&gt;
Je vend un stylo à 20 € HT + 3.92 € de TVA à un client :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||23.92 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA collectée (445710) ||||3.92 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le client à un solde débiteur 23.92 € sur son compte&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne facture pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||20 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Paiement (à un fournisseur)==&lt;br /&gt;
Je fais un chèque de 17.94 € à mon papetier :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Encaissement (d'un client)==&lt;br /&gt;
Je reçois un chèque de 23.92 € de mon client :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||||23.92 €&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||23.92 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Avoirs=&lt;br /&gt;
==Avoir clients==&lt;br /&gt;
Si vous souhaitez faire bénéficier un client d'un avoir sur ses futures factures (par exemple dans le cas où il paie une facture d'essence qui est normalement supportée par la structure), il vous faut saisir une écriture qui va créditer son compte client et débiter un compte produit. Cependant, normalement, on ne débite pas les comptes produits. Il faut donc enregistrer le mouvement sur un compte produit particulier en 709x. Voici un exemple avec un avoir sur des prestations de service à venir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client (411)||||119.60 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA collectée (445710) ||19.60 €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte remise (709600 dans le cas d'une remise des services en 706)||100.00 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client (411)||||119.60 €&lt;br /&gt;
|-&lt;br /&gt;
|Compte remise (709600 dans le cas d'une remise des services en 706)||119.60 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Remises sur facture clients===&lt;br /&gt;
Si vous souhaitez effectuer une remise sur une facture client, il faut passer une écriture de ce sens opposé à l'écriture correspondant à la facture en tenant compte de la TVA, si applicable.&lt;br /&gt;
&lt;br /&gt;
==Avoir fournisseurs==&lt;br /&gt;
Un avoir fournisseur peut correspondre à une remise ou à un retour sur achat.&lt;br /&gt;
===Remise sur facture fournisseur===&lt;br /&gt;
''A documenter''&lt;br /&gt;
&lt;br /&gt;
===Retour sur achat fournisseur===&lt;br /&gt;
Il s'agit d'annuler partiellement ou totalement une facture du fait du retour du produit ou d'une partie des produits. Dans ce cas, les écritures à passer corresponde exactement à l'opposé des écritures de d'une [[#Saisie_d.27une_facture_fournisseur|facture fournisseur]] :&lt;br /&gt;
&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie puis finalement, le stylo ne met plait pas, je le ramène et le fournisseur me rembourse. Je dois donc saisir une écriture qui annulera la 1ère facture :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||||15 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||||2.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||||17.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si le fournisseur m'a fait un avoir, alors le montant de cet avoir doit correspondre au solde du compte du fournisseur (sous réserve que l'ensemble de ses factures soient payées).&lt;br /&gt;
&lt;br /&gt;
Si le fournisseur m'a remboursé le trop perçu, alors il faut également [[#Remboursement_fournisseur|saisir un remboursement fournisseur]].&lt;br /&gt;
&lt;br /&gt;
=Factures clients spécifiques=&lt;br /&gt;
==Saisie d'une facture client Google AdSense==&lt;br /&gt;
Je vend à Google AdSense de l'espace publicitaire. Sur leur attestation de revenus, il n'y a pas mention de TVA. Sur leur FAQ, il est noté : &amp;quot;Dans ce cas [je suis hors d'Irlande], les paiements dus sont effectués par Google Ireland, entreprise régie par les lois irlandaises. Conformément aux termes de votre contrat avec Google, les services fournis sont soumis au mécanisme d'autoliquidation : la TVA est due par le bénéficiaire du service, à savoir Google Ireland, conformément à l'article 196 de la directive 2006/112/CE du Conseil.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
C'est donc Google (le bénéficiaire du service) qui se charge d'acquitter la TVA.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client AdSense||20 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Factures fournisseurs spécifiques=&lt;br /&gt;
==Achat direct==&lt;br /&gt;
On appelle &amp;quot;achat direct&amp;quot; un achat pour lequel on a effectué le paiement directement et dont on ne souhaite pas gérer le compte fournisseur. Cela permet d'avoir 1 seule saisie au lieu de 2 normalement à savoir :&lt;br /&gt;
*[[#Facture_fournisseur|Facture fournisseur]]&lt;br /&gt;
*[[#Paiement_.28.C3.A0_un_fournisseur.29|Paiement au fournisseur]]&lt;br /&gt;
Ainsi, comptablement, on a les écritures suivantes :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Saisie d'une facture fournisseur Google AdWords==&lt;br /&gt;
J'achète à Google AdWords de l'espace publicitaire. Sur leur facture, il n'y a pas mention de TVA. Par contre, il est mentionné : &amp;quot;conformément à l'article 196 de la directive du Conseil 2006/112/EC, la TVA sur ce service est due par le bénéficiaire du service.&amp;quot; (à savoir nous).&lt;br /&gt;
&lt;br /&gt;
Dans ce cas, on saisit la facture sans la TVA et [[#Passage_de_la_TVA_fournisseur_en_intra-communautaire|on saisit ensuite 2 lignes fictives qui s'équilibrent]]. Cette opération est possible car Google est en Irlande (il s'agit donc d'une TVA intra-communautaire).&lt;br /&gt;
&lt;br /&gt;
==Facture fournisseur d'immobilisation==&lt;br /&gt;
Référence : [http://www.eguens.com/v2/comptabilite/cours/enregistrer-achat-immobilisation.php enregistrer achat immobilisation].&lt;br /&gt;
&lt;br /&gt;
J'achète un avion à 150 000 € HT + 29 400 € de TVA chez un constructeur :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Immobilisation corporelle (21xxxx)||150 000 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible sur immobilisations (445620) ||29 400 €||&lt;br /&gt;
|-&lt;br /&gt;
|Constructeur (401xxx)||||179 400 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 179 400 € sur son compte&lt;br /&gt;
&lt;br /&gt;
=Remboursement fournisseur=&lt;br /&gt;
Si j'ai payé trop à un fournisseur ou que j'ai retourné un achat, ce dernier va me rembourser le trop perçu. Un remboursement fournisseur correspond à l'opposé d'un paiement fournisseur :&lt;br /&gt;
&lt;br /&gt;
Mon papetier me fait un chèque de 17.94 € :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Revenus mobiliers=&lt;br /&gt;
Dans ce type de revenu, il n'y a pas de facture et il n'y a pas de client. Il suffit donc de saisir un mouvement entre le compte de trésorerie (au débit dans le cas d'un revenu positif) et le compte de produit correspondant à l'enregistrement des revenus mobiliers (compte 764 par exemple).&lt;br /&gt;
&lt;br /&gt;
=Paiement de la TVA=&lt;br /&gt;
==TVA annuelle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|TVA à décaisser (445510)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte courant (512xxx)||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Acomptes de TVA==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Taxes sur le chiffre d'affaires à régulariser ou en attente - Acomptes - Régime simplifié d'imposition (445810)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte courant (512xxx)||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Solde de compte de bilan=&lt;br /&gt;
Normalement, il n'y a pas lieu de modifier le solde d'un compte de bilan autrement que lors de la mise en place de la comptabilité. Cette initialisation s'effectue lors du rapatriement des à nouveaux. Dans OpenFlyers, elle est automatisable pour les comptes clients. Elle peut être décalée dans le temps et doit être faite manuellement pour les autres comptes de bilan sur le modèle ci-dessous qui correspond au type d'écriture généré automatiquement pour l'import des comptes clients :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|[[Comptabilité#Comptes_de_bilan|Compte de bilan concerné]]||10.000 €||&lt;br /&gt;
|-&lt;br /&gt;
|[[Comptabilité#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]||||10.000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Initialiser le solde d'un compte de trésorerie==&lt;br /&gt;
'''Attention''' : dans le cas d'un compte de trésorerie il faut penser que le signe du solde doit être inversé par rapport au relevé de banque. Ainsi, si le compte de trésorerie est positif de +1234 €, alors il faut saisir un flux qui va le débiter de +1234 €. L'écriture comptable sera donc la suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte de trésorerie||1.234 €||&lt;br /&gt;
|-&lt;br /&gt;
|[[Comptabilité#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]||||1.234 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dans la version 3 d'OpenFlyers cette opération se fait au travers de la [[Use_Accounting3#Saisie_d.27un_flux|saisie d'un flux]].&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
==Subventions d'exploitation==&lt;br /&gt;
*[http://www.compta-facile.com/la-comptabilisation-des-subventions-dexploitation/ La comptabilisation des subventions d'exploitation]&lt;br /&gt;
===Subventions d’exploitation accordées sans conditions===&lt;br /&gt;
Enregistrement de la &amp;quot;promesse&amp;quot; de subvention (par exemple lors de l'obtention d'un document officiel indiquant l'obtention de la subvention)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir ([[Comptabilité#Comptes_de_tiers|4417]] - compte de tiers)||10.000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation ([[Wikipedia-fr:Plan_comptable_général_(France)#74._Subventions_d.27exploitation|74]] - compte produit)||||10.000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lorsque la subvention est réellement encaissée, il faut [[#Saisie_d.27un_encaissement_.28d.27un_client.29|saisir cet encaissement]] sur le compte 4417.&lt;br /&gt;
&lt;br /&gt;
==Subventions d'investissement==&lt;br /&gt;
*[http://www.compta-facile.com/subventions-dinvestissement-comptabilite/ La comptabilisation des subventions d'investissement]&lt;br /&gt;
&lt;br /&gt;
=Transfert de charge=&lt;br /&gt;
Dans certains cas, de l'argent peut &amp;quot;arriver&amp;quot; sur le compte de trésorerie sans que cela soit pour autant une recette issue d'une facturation client. C'est le cas par exemple :&lt;br /&gt;
*Lorsqu'une assurance rembourse un sinistre,&lt;br /&gt;
*Lorsque des utilisateurs bénéficient d'une subvention attribuée par leur fédération et qui est versée sur le compte de leur de leur structure&lt;br /&gt;
&lt;br /&gt;
L'écriture de transfert de charge correspond alors à enregistrer :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie (512)||100.00 €||&lt;br /&gt;
|-&lt;br /&gt;
|Transfert de charge (791) ||||100.00 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'opération de TVA à associer.&lt;br /&gt;
&lt;br /&gt;
=Écritures de fin d'exercice avant la clôture de la comptabilité=&lt;br /&gt;
OpenFlyers n'implémente pas de fonctionnalité permettant de générer automatiquement les écritures de fin d'année à passer en comptabilité hormis l'[[#.C3.89criture_d.27apurement_des_comptes_de_r.C3.A9sultat|écriture d'apurement du compte de résultat]]. Il peut être nécessaire de faire appel à un expert-comptable.&lt;br /&gt;
&lt;br /&gt;
Entre autre, il faut penser à :&lt;br /&gt;
*Calculer le solde de TVA lorsque la structure est soumise à la TVA&lt;br /&gt;
*Corriger éventuellement les ventilations des salaires et charges sociales&lt;br /&gt;
*[[#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|Transférer les produits et charges constatées d'avance]]&lt;br /&gt;
*Passer les amortissements et provisions pour charge&lt;br /&gt;
*Passer l'[[#.C3.89criture_d.27apurement_des_comptes_de_r.C3.A9sultat|écriture d'apurement des comptes de résultat]]&lt;br /&gt;
&lt;br /&gt;
==Écriture d'apurement des comptes de résultat==&lt;br /&gt;
L'écriture d’apurement des comptes de charges (6x) et de produits (7x) se fait après édition du compte de résultat au 31 décembre de l'année considérée.&lt;br /&gt;
&lt;br /&gt;
Le but est de solder (=mettre à 0) tous les comptes de résultat et d'injecter le résultat de l'exercice dans le compte 129000 (perte) ou 120000 (bénéfice).&lt;br /&gt;
&lt;br /&gt;
[[Use_Accounting3#Solder_les_comptes|La version 3 d'OpenFlyers intègre un module]] permettant d'effectuer cette opération semi-automatiquement.&lt;br /&gt;
&lt;br /&gt;
==Écriture de report à nouveau==&lt;br /&gt;
Cette écriture n'a pas besoin d'être passée dans OpenFlyers lorsqu'on ouvre un nouvel exercice Comptable. En effet, les à nouveaux sont repris automatiquement du solde de l'exercice précédent.&lt;br /&gt;
&lt;br /&gt;
Cependant, lorsqu'on crée de nouveaux comptes, lorsqu'on met en place la comptabilité dans OpenFlyers, il peut être nécessaire de passer une ou plusieurs écritures de report d'à nouveau. Il s'agit de saisir un flux au sens OpenFlyers en effectuant un mouvement entre un compte bilan 110000 &amp;quot;Report à nouveau&amp;quot; et le ou les comptes concernés. Voir saisie d'un flux sur la [[Use_Accounting3#Saisie_d.27un_flux| version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux| version 4]].&lt;br /&gt;
&lt;br /&gt;
==Écritures de transfert des produits et charges constatées d'avance==&lt;br /&gt;
L'idéal est d'avoir des comptes produits dédiés pour recevoir les ventes correspondant à des produits constatés d'avance. Il en est de même pour les comptes de charges.&lt;br /&gt;
&lt;br /&gt;
Ainsi, supposons que nous ayons un compte produit ''Cotisation N+1'' recevant [[Conseils spécifiques pour la comptabilité#Cotisations.2Fabonnements_ann.C3.A9e_N.2B1|les produits des cotisations valables pour l'année suivante]]. En fin d'année, ce compte produit à un solde X. Il faut transférer le montant de ce solde sur un compte de produits constatés d'avance :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Cotisations N+1 (compte de produit)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Produits constatés d'avances ([[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|compte de tiers 487]])||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Après l'ouverture du nouvel exercice, il faudra [[#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|réaffecter les produits/charges constatées d'avances]].&lt;br /&gt;
&lt;br /&gt;
=Écritures de début d'exercice après l'ouverture de la comptabilité=&lt;br /&gt;
==Écritures de réaffectation des produits/charges constatées d'avances==&lt;br /&gt;
Avant la clôture de la comptabilité, s'il a été nécessaire de [[#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|transférer des produits ou charges constatées d'avances]], alors après l'ouverture de la comptabilité, il faut réaffecter ces montants sur les comptes produits &amp;quot;normaux&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ainsi, supposons que nous ayons passé un mouvement de X € entre le compte produit ''Cotisations N+1'' et le compte de produits constatés d'avance. Alors il faudra réaffecter ce même montant sur le compte produit ''Cotisations N'' :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Produits constatés d'avances ([[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|compte de tiers 487]])||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Cotisations (compte de produit)||||X €&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=FAQ-administrateur-2.0&amp;diff=14183</id>
		<title>FAQ administrateur 2.0</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=FAQ-administrateur-2.0&amp;diff=14183"/>
				<updated>2016-04-19T14:10:44Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Questions générales=&lt;br /&gt;
==Comment personnaliser la documentation utilisateur ?==&lt;br /&gt;
Il suffit de suivre la FAQ indiquant [[FAQ utilisateur#Comment_imprimer_la_doc.3F|comment imprimer la doc]] et, au lieu de l'imprimer avec son navigateur, effectuer une sauvegarde avec la commande &amp;quot;Enregistrer sous...&amp;quot; ou équivalente de son navigateur.&lt;br /&gt;
Vous obtiendrez ainsi un fichier HTML que vous pourrez modifier à l'aide d'un logiciel d'édition comme Open Office.&lt;br /&gt;
&lt;br /&gt;
==Comment se connecter sur le support-forum ?==&lt;br /&gt;
*Allez sur l'onglet &amp;quot;Support&amp;quot; du site [http://www.openflyers.com openflyers]&lt;br /&gt;
*Cliquez sur '''S'identifier'''&lt;br /&gt;
*Puis cliquez sur '''Pas encore enregistré ? - Cliquez ici pour vous enregistrer -'''&lt;br /&gt;
*Vous n'avez plus qu'à vous créer un profil utilisateur, à le soumettre&lt;br /&gt;
*Vous devez recevoir automatiquement un mail de confirmation avec un lien à suivre&lt;br /&gt;
==Comment se connecter sur le BTS pour rapporter un bug ?==&lt;br /&gt;
*Allez sur [http://bts.openflyers.org le BTS]&lt;br /&gt;
*Cliquez sur &amp;quot;Ouvrir un nouveau compte&amp;quot;&lt;br /&gt;
*Remplissez les champs&lt;br /&gt;
*Vous devez recevoir automatiquement un mail de confirmation avec un lien à suivre&lt;br /&gt;
=Affichage=&lt;br /&gt;
==Le logo du club prend toute la place sur la page d'accueil, comment corriger cela ?==&lt;br /&gt;
Il suffit de diminuer la taille du logo avec un logiciel d'édition d'image comme &amp;quot;gimp&amp;quot;. Une taille normale devrait être de l'ordre de 100 pixels par 100 pixels et faire un poids d'une vingtaine de kilo-octets.&lt;br /&gt;
=Gestion des utilisateurs=&lt;br /&gt;
==Comment mettre à jour les cotisations des membres ?==&lt;br /&gt;
*Aller sur la page Admin/Club/Paramétrage : sous le titre &amp;quot;Gestion des cotisations&amp;quot;, modifier la date d'expiration de la cotisation (c'est cette date qui sera utilisée lors de la mise à jour des cotisations des membres)&lt;br /&gt;
*Aller sur la page Utilisateurs/Utilisateurs : cocher les membres à mettre à jour et cliquer sur &amp;quot;Mise à jour&amp;quot; au droit de la ligne &amp;quot;Prochaine échéance club : ......&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Remarque : Le fond de la cellule &amp;quot;Cotisation&amp;quot; est grisé avec la date en rouge si la cotisation n'est pas à jour.&lt;br /&gt;
==Comment permettre aux utilisateurs de réserver au-delà de la fin de validité de leur cotisation ?==&lt;br /&gt;
Plusieurs solutions possibles :&lt;br /&gt;
*[[Documentation administrateur#Gestion_des_cotisations|Paramétrer]] OpenFlyers pour qu'il n'y ait qu'un message d'alerte ou ne pas gérer du tout les cotisations.&lt;br /&gt;
*[[Documentation administrateur#Gestion_des_cotisations|Paramétrer]] OpenFlyers avec une date de fin de cotisation à x mois après l'échéance réelle afin de permettre à l'utilisateur de pouvoir disposer de tous les droits de son profil jusqu'à x mois après l'échéance réelle.&lt;br /&gt;
*[[Documentation administrateur#Gestion_des_cotisations|Paramétrer]] OpenFlyers pour un accès restreint à un profil qui n'ait que le droit de réserver (profil à créer préalablement)&lt;br /&gt;
&lt;br /&gt;
==Certains utilisateurs apparaissent sur fond rouge, pourquoi ?==&lt;br /&gt;
Les utlisateurs sur fond rouge, sont les utilisateurs pour lesquels le sexe, la nationalité ou la date de naissance ne sont pas renseignés.&lt;br /&gt;
&lt;br /&gt;
==[[Documentation administrateur#Restreindre_les_droits_d.27un_utilisateur_dont_le_solde_du_compte_est_insuffisant|Comment restreindre les droits d'un utilisateur dont le solde du compte est insuffisant ?]]==&lt;br /&gt;
&lt;br /&gt;
=Gestion des réservations=&lt;br /&gt;
==Peut-on limiter le nombre de réservations par pilotes ?==&lt;br /&gt;
Oui :&lt;br /&gt;
*Aller sur la page Admin/Configuration/Paramétrage et dans la partie &amp;quot;Gestion des réservations&amp;quot; utilisez &amp;quot;Limitation du nombre de réservations&amp;quot;&lt;br /&gt;
==Peut-on limiter dans le temps les réservations ?==&lt;br /&gt;
Oui :&lt;br /&gt;
*Aller sur la page Admin/Configuration/Paramétrage et dans la partie &amp;quot;Gestion des réservations&amp;quot; utilisez &amp;quot;Limitation dans le temps des réservations&amp;quot;&lt;br /&gt;
==Comment empêcher un membre de réserver si ses qualifications ne sont pas à jour ?==&lt;br /&gt;
*Aller sur la page Admin/Configuration/Paramétrage et dans la partie &amp;quot;Gestion des licences/qualifications&amp;quot; utiliser &amp;quot;En mode &amp;quot;Restriction&amp;quot; pour les réservations&amp;quot;&lt;br /&gt;
*Définir les qualifications sur la page Admin/Utilisateurs/Qualifications&lt;br /&gt;
*Ensuite pour chaque type d'aéronef (via le menu Admin/Flotte/Type d'aéronef) définir les qualifications requises (loupe dans la colonne &amp;quot;Qualification&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=Gestion des aéronefs=&lt;br /&gt;
==[[Documentation administrateur#D.C3.A9sactiver_un_a.C3.A9ronef|Comment désactiver un aéronef ?]]==&lt;br /&gt;
&lt;br /&gt;
=Comptabilité / Finance=&lt;br /&gt;
==Autorisation de saisie des encaissements==&lt;br /&gt;
===Comment autoriser une personne à saisir des encaissements pour elle-même ?===&lt;br /&gt;
Il faut rajouter à son profil le droit &amp;quot;Encaisser ses paiements&amp;quot; disponible dans la liste &amp;quot;Gestion des comptes&amp;quot; des droits des profils&lt;br /&gt;
===Comment autoriser une personne à saisir des encaissements pour les autres ?===&lt;br /&gt;
Il faut rajouter à son profil le droit &amp;quot;Saisir les encaissement pour les tiers&amp;quot; disponible dans la liste &amp;quot;Gestion des comptes&amp;quot; des droits des profils&lt;br /&gt;
===Comment définir les types d'encaissements saisissable ?===&lt;br /&gt;
Lorsque dans Comptes/Encaissements/Types d'encaissements, le drapeau &amp;quot;Accessible aux personnes autorisées à saisir pour tous&amp;quot; est coché cela signifie que seules les personnes disposant du droit &amp;quot;Saisir les encaissement pour les tiers&amp;quot; seront autorisées à saisir un encaissement de ce type sinon toutes les personnes disposant du droit &amp;quot;Encaisser ses paiements&amp;quot; ou &amp;quot;Saisir les encaissement pour les tiers&amp;quot; en auront la possibilité.&lt;br /&gt;
&lt;br /&gt;
==Comment facturer une cotisation ?==&lt;br /&gt;
Toute facturation à un membre s'effectue par la page transfert de compte à compte du menu Admin/Comptes&lt;br /&gt;
*Débiter le compte du membre&lt;br /&gt;
*Créditer le compte divers cotisation&lt;br /&gt;
*Indiquer le montant&lt;br /&gt;
*Valider&lt;br /&gt;
&lt;br /&gt;
==Comment initialiser la balance des comptes ?==&lt;br /&gt;
Pour que le solde des comptes soit exact il faut initialiser la balance à la date d'activation de votre comptabilité. Cette opération se fait en 2 temps :&lt;br /&gt;
*On exporte un fichier csv qui contient la structure et notamment les numéros des comptes depuis OpenFlyers&lt;br /&gt;
*On modifie ce fichier pour mettre à jour les soldes des comptes puis on le ré-injecte dans OpenFlyers&lt;br /&gt;
&lt;br /&gt;
La procédure se décompose comme suit :&lt;br /&gt;
* Aller dans '''Comptes &amp;gt; Gestion-Export''' et initialiser la date de début d'exercice&lt;br /&gt;
* Voir la rubrique Comment créer des comptes d'export ?&lt;br /&gt;
* Tous vos intitulés de compte doivent avoir au moins un compte valide&lt;br /&gt;
* Aller dans '''Admin &amp;gt; Configuration &amp;gt; Reporting''' et cliquer sur '''Liste des comptes''', vous récupérez un fichier au format csv. Le fichier est [[Wikipedia-fr:Encodage_de_caract%C3%A8res|encodé]] selon le paramètre d'encodage défini dans la page  '''Admin &amp;gt; Configuration &amp;gt; Paramétrage''' formulaire '''Reporting/Export'''.&lt;br /&gt;
** Si vous avez sélectionné UTF-8 alors le fichier sera encodé en UTF-8. Attention : si par la suite vous éditez le fichier avec un logiciel qui n'accepte pas l'UTF-8 alors le fichier ne sera plus conforme au format d'encodage UTF-8 après enregistrement par ce logiciel. Pour ouvrir un fichier encodé en UTF-8 nous conseillons [http://fr.openoffice.org/ OpenOffice]. A l'ouverture du fichier il y a une fenêtre de paramétrage. Il faut choisir le jeu de caractère UTF-8, séparateur '''Point virgule''' (décocher l'option par défaut '''Virgule''') et dans les champs '''Débit''' et '''Crédit''' il faut mettre le type '''Texte''' (sinon, avec les paramètres par défaut, certains montants seront transformés en Date). Le fichier garde alors sa structure UTF-8 et à l'enregistrement ces paramètres seront conservés.&lt;br /&gt;
** si vous avez choisi un autre encodage (CP-1252 pour Microsoft Windows), vous devez l'ouvrir avec un éditeur de texte qui reconnait votre encodage. Mais à l'enregistrement vous devrez définir l'encodage UTF-8 du fichier de sorti. [http://fr.openoffice.org/ OpenOffice] permet de faire ce choix. &lt;br /&gt;
* Vous indiquez le montant pour chacun des comptes (attention au séparateur décimale des débits/crédits, c'est le point et non la virgule qui est reconnu) et il faut passer la colonne '''Update''' à 1 sinon la ligne ne sera pas prise en compte&lt;br /&gt;
* Il n'est pas possible de créer des comptes, il ne faut pas en ajouter&lt;br /&gt;
* Sauvez votre fichier&lt;br /&gt;
* Allez dans '''Admin &amp;gt; Configuration &amp;gt; Imports &amp;gt; Initialisation''' des comptes et importez votre fichier&lt;br /&gt;
A noter que lors de l'import, les seuls champs qui sont pris en compte par OpenFlyers sont n° de compte;;;;;compte d'export;débit;crédit;update;. De plus, les colonnes comptes d'export, débit et crédit, rattachés au compte dont le numéro correspond, sont mise à jour uniquement si la colonne update est à un.&lt;br /&gt;
&lt;br /&gt;
Si vous rencontrez des problèmes d'encodage de caractères, pensez [[FAQ_accounting3#Caract.C3.A8res_accentu.C3.A9s_dans_les_format_d.27exports|à regarder du coté de la FAQ]].&lt;br /&gt;
&lt;br /&gt;
==Comment supprimer un transfert de compte à compte ?==&lt;br /&gt;
Il n'est pas possible de supprimer un transfert de compte à compte.&lt;br /&gt;
&lt;br /&gt;
Par contre il est possible d'annuler son &amp;quot;effet&amp;quot; en créant une écriture opposée.&lt;br /&gt;
&lt;br /&gt;
Ce choix permet de garder une traçabilité des écritures qui peuvent avoir été saisies par d'autres personnes et surtout qui peuvent affecter des comptes de membres.&lt;br /&gt;
&lt;br /&gt;
C'est comme pour un compte bancaire : un banquier ne supprime jamais une écriture sur un compte client. Il passe simplement une nouvelle écriture qui annule l'effet de la précédente.&lt;br /&gt;
&lt;br /&gt;
==Comment mettre à jour le tarif des avions ?==&lt;br /&gt;
*Aller sur la page Admin/Comptes/Tarification des heures/Paramétrage des valeurs : cliquer sur &amp;quot;Ajouter une valeur&amp;quot; pour &amp;lt;u&amp;gt;chaque&amp;lt;/u&amp;gt; variable.&lt;br /&gt;
'''Attention''' : si vous cliquez sur l'icône &amp;quot;Edition&amp;quot; (Crayon dans la colonne action) et que vous modifiez la valeur, alors vous perdrez toute possibilité de corriger un vol à un tarif horaire différent du dernier tarif en vigueur.&lt;br /&gt;
*Chaque variable doit avoir une valeur pour la période d'exercice en cours sinon il y aurait un &amp;quot;trou tarifaire&amp;quot; où les pilotes voleraient gratuitement.&lt;br /&gt;
&lt;br /&gt;
==Les exports comptables==&lt;br /&gt;
===Quels sont les formats d'export supportés ?===&lt;br /&gt;
Nous intégrons à la demande tout type de format d'export.&lt;br /&gt;
&lt;br /&gt;
Actuellement nous avons créé des formats d'export pour des logiciels de comptabilité tels que EBP, Ciel ou Sage.&lt;br /&gt;
&lt;br /&gt;
Cependant il faut être vigilant sur le fait que ces logiciels peuvent faire évoluer leur format d'import et qu'il est préférable de faire des tests pour valider le format avant un export avec validation des écritures.&lt;br /&gt;
&lt;br /&gt;
En cas, de différence de format, ne pas hésiter à nous contacter.&lt;br /&gt;
===Comment attribuer un code d'export comptable à un utilisateur ?===&lt;br /&gt;
*Aller dans Comptes/Membres&lt;br /&gt;
*Retrouver l'utilisateur concerné&lt;br /&gt;
*Cliquer sur l'icone &amp;quot;crayon&amp;quot; pour modifier : un formulaire apparait permettant de modifier/saisir le code comptable pour l'exportation&lt;br /&gt;
&lt;br /&gt;
Remarque : cette opération peut être effectuée de manière globale depuis Comptes/Membres/Types de comptes puis &amp;quot;Gérer massivement les comptes d'export pour les comptes membres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Doit-on saisir les codes d'export avant de saisir des mouvements ?===&lt;br /&gt;
C'est inutile ! Vous pouvez même modifier vos codes d'export à n'importe quel moment. Ces codes ne sont jamais utilisés dans l'application OpenFlyers. Ils sont utilisés uniquement pour générer le fichier d'export.&lt;br /&gt;
&lt;br /&gt;
===Comment est effectuée la répartition des journaux dans les exports comptables ?===&lt;br /&gt;
Les codes des journaux ne sont pas paramétrables : voici ceux utilisés dans les exports comptables : &lt;br /&gt;
* les transactions liées aux vols sont dans un journal de vente VT,&lt;br /&gt;
* les règlements sont dans un journal de banque BQ,&lt;br /&gt;
* tous les autres mouvements sont dans un journal d'ordres divers OD&lt;br /&gt;
&lt;br /&gt;
===Comment réaliser le passage d'un exercice comptable à l'autre ?===&lt;br /&gt;
Au préalable il est bon de dire qu'il n'y a pas urgence à faire la clôture. Le programme continue à fonctionner de la même façon, que la clôture soit faite ou pas. La différence est seulement sur la date de prise en compte des éléments. Le programme additionne ou soustrait tout les mouvements d'un compte qui sont postérieurs à la date de début d'exercice. Le fait de faire une clôture vous permettra toutefois de faire des opérations qui ne sont pas possible si des données sont dans l'exercice en cours (suppression d'un avion ou d'un compte par exemple).&lt;br /&gt;
&lt;br /&gt;
Si vous avez un logiciel de comptabilité, la clôture OF doit être faite après la clôture de votre compta. il vous sera possible de vérifier que votre A nouveaux est identique dans OF en allant dans &amp;quot;Admin/Rapports/Voir les rapports&amp;quot; (nous avons mis la requête des A nouveaux disponible sur [[http://doc-en.openflyers.com/index.php?title=Export_generator#Carry_forwards Carry forwards]]).&lt;br /&gt;
&lt;br /&gt;
Jusqu'à la version 2.0 OF ne fait pas la comptabilité. Il faut donc transférer les données dans votre logiciel de comptabilité. L'export est prévu pour Ciel Compta, EBP et SAGE; si vous avez un autre logiciel, regardez s'il n'accepte pas un de ces formats ou alors utilisez le format .csv et formatez-le conformément à votre besoin.&lt;br /&gt;
&lt;br /&gt;
A partir de la version 2.1 OF permet de saisir facilement toutes les écritures comptables usuelles (ventes, achats, paiements, encaissements). Par contre, il n'y a pour le moment rien de fait au niveau des amortissements et plus généralement du bilan. Mais cela peut très bien se faire à la main en passant les écritures adéquates.&lt;br /&gt;
&lt;br /&gt;
Si vous n'avez pas de logiciel de compta, il faudra quand même faire l'export et l'archiver sur votre disque dur car les données dans OF ne seront plus modifiables une fois l'export effectué (leur visualisation reste toujours possible dans OF).&lt;br /&gt;
&lt;br /&gt;
Pour clôturer un exercice il faut :&lt;br /&gt;
- que toutes les écritures de l'exercice (vols + comptes) soient validées,&lt;br /&gt;
- que tous vos comptes aient un compte d'export,&lt;br /&gt;
- que les écritures soient exportées.&lt;br /&gt;
&lt;br /&gt;
Vous visualisez l'état de toutes ces étapes en allant dans le menu Admin/Comptes/Import-export. Au début de la page vous allez avoir quelque chose comme cela :&lt;br /&gt;
 La 1ère écriture date de 02/01/2007 01:00 et il y en a 11758&lt;br /&gt;
 La 1ère écriture VALIDEE date de 02/01/2007 01:00 et il y en a 11648&lt;br /&gt;
 La 1ère écriture NON VALIDEE date de 01/11/2008 18:15 et il y en a 110&lt;br /&gt;
 La 1ère écriture EXPORTEE date de 02/01/2007 01:00 et il y en a 6300&lt;br /&gt;
 La 1ère écriture NON EXPORTEE date de 01/01/2008 01:00 et il y en a 5458&lt;br /&gt;
 L'exercice comptable débute au 01/01/2008&lt;br /&gt;
&lt;br /&gt;
Selon l'état de votre base vous pouvez clôturer ou non. Il faut définir la date de clôture et celle de début puis cliquer sur le bouton  &amp;quot;Clôturer l'exercice puis ouvrir un nouvel exercice&amp;quot;.&lt;br /&gt;
Pour un club qui a un exercice annuel les dates devraient être 31/12/XXXX et 01/01/XXXX+1&lt;br /&gt;
&lt;br /&gt;
Dans l'exemple ci-dessus, cela n'est pas possible car ils y a des écritures non exportées de 2008. Voir la rubrique [[http://wiki.openflyers.fr/index.php?title=FAQ administrateur 2.0 Comment exporter les écritures]]&lt;br /&gt;
&lt;br /&gt;
===Comment exporter les écritures ?===&lt;br /&gt;
&lt;br /&gt;
Dans le bas de la page Admin/Comptes/Import-export vous avez soit&lt;br /&gt;
*le message&lt;br /&gt;
 Vous ne pouvez exporter car il y a des comptes sans valeur d'export :&lt;br /&gt;
 Julien Julien (Pilote)&lt;br /&gt;
&lt;br /&gt;
Dans ce cas le programme vous indique les comptes qui n'ont pas de compte d'export. Voir la rubrique [[http://wiki.openflyers.fr/index.php?title=FAQ administrateur 2.0 Comment créer des comptes d'export]]&lt;br /&gt;
&lt;br /&gt;
*un formulaire qui vous permet de faire les exports&lt;br /&gt;
Choisissez le format d'export et cocher ou non la case &amp;quot;Marquer les écritures&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
'''Attention : il faut prendre soin de réaliser un premier export sans &amp;quot;Marquer les écritures&amp;quot;.'''&lt;br /&gt;
&lt;br /&gt;
'''Le but est de vérifier que le format de l'export correspond bien au format souhaité par le logiciel où sont importées les données (lisible avec un traitement de texte).'''&lt;br /&gt;
&lt;br /&gt;
'''De plus, il faut toujours, pour chaque export, faire la manipulation au moins une fois sans valider au cas où il y aurait une coupure internet lors de la réception du fichier.'''&lt;br /&gt;
&lt;br /&gt;
'''Une fois marquées, les écritures exportées ne peuvent plus l'être !!!'''&lt;br /&gt;
&lt;br /&gt;
Sélectionner la période d'exportation&lt;br /&gt;
&lt;br /&gt;
Attention, ne soyez pas trop gourmand dans les dates d'export, selon la taille de votre club et les mois chargés (15 jours à 3 mois selon votre volume de vols). Si vous avez un fichier d'export dénommé index.php c'est que votre demande était trop forte.&lt;br /&gt;
&lt;br /&gt;
===Comment retrouver les écritures non validées afin de pouvoir réaliser l'export ?===&lt;br /&gt;
Dans le module de gestion des exports, vous pouvez avoir un message qui dit :&lt;br /&gt;
 &amp;quot;La 1ère écriture NON VALIDEE date de 06/01/2008 00:00 et il y en a 408&amp;quot;&lt;br /&gt;
Cela veut dire que soit un vol ou un paiement qui datent du 6 janvier 2008 n'a pas été validé.&lt;br /&gt;
&lt;br /&gt;
Pour vérifier les vols restant à valider, il suffit d'aller dans VOLS/LISTE DES VOLS puis &amp;quot;valider les vols sélectionnés&amp;quot; pour chaque avion&lt;br /&gt;
&lt;br /&gt;
Pour vérifier les paiements restant à valider, il suffit d'aller dans COMPTES/POINTER et choisir chaque type de paiement.&lt;br /&gt;
&lt;br /&gt;
De plus, le nombre d'écritures non validées correspond au nombre TOTAL d'écritures non validées. En effet, OpenFlyers sait quand est-ce que vous commencez un exercice mais il ne sait pas quand est-ce que vous voulez qu'il s'arrête. Donc il prend toutes les écritures non validées.&lt;br /&gt;
&lt;br /&gt;
Enfin, OpenFlyers ne vous permettra d'exporter QUE la période qui inclut des écritures validées. Dès qu'il rencontre une écriture non validée, il vous empêche d'exporter une période qui inclut cette écriture.&lt;br /&gt;
&lt;br /&gt;
===Comment créer des comptes d'export ?===&lt;br /&gt;
&lt;br /&gt;
- Pour les comptes avion et club les comptes d'export sont à créer individuellement&lt;br /&gt;
Dans la page Admin/Comptes/Aéronef ou Admin/Comptes/Lister les comptes/Comptes divers puis cliquer sur l'icône Crayon pour éditer le compte&lt;br /&gt;
&lt;br /&gt;
Vous indiquez le compte d'export dans le champ '''Code comptable''' pour l'exportation&lt;br /&gt;
&lt;br /&gt;
- Pour les comptes membre la méthode individuelle est aussi disponible mais peut être fastidieuse. 2 possibilités de renseignement groupé vous sont offertes&lt;br /&gt;
*Dans la page Admin/Comptes/Membres/Type de compte cliquer sur le bouton &amp;quot;'''Gérer massivement les comptes d'export pour les comptes membres'''&amp;quot;. Vous avez la possibilité de définir un pattern qui structurera vos comptes d'export en indiquant une racine et un complément variable en fonction d'un paramètre&lt;br /&gt;
&lt;br /&gt;
On peut utiliser les wildcards suivants :&lt;br /&gt;
 - %MEMBER_NUM&lt;br /&gt;
 - %LASTNAME&lt;br /&gt;
 - %FIRSTNAME&lt;br /&gt;
 - %ACCOUNT_TYPE&lt;br /&gt;
 - %AUTO_INCREMENT&lt;br /&gt;
Exemples :&lt;br /&gt;
 - 411+%LASTNAME vous créera un compte d'export 411dupont,411dupond,....&lt;br /&gt;
 - 411+%MEMBER_NUM vous créera un compte d'export 411XXXXX,.... (l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. A vous de vérifier l'unicité de cette valeurs)&lt;br /&gt;
 - 411+%LASTNAME+substr(%FIRSTNAME,0,1) vous créera un compte d'export 411dupontf,411dupontt,....&lt;br /&gt;
 - 411+%ACCOUNT_TYPEE vous créera un compte d'export 41100045,4110005,.... Le numéro ACCOUNT est interne à OF et il sera unique&lt;br /&gt;
 - 411+%AUTO_INCRENENT vous créera un compte d'export : 41100001, 41100002,....,4110000x&lt;br /&gt;
&lt;br /&gt;
*Enfin si vos numéros sont existants et que vous voulez les copier dans OF vous pouvez aller dans Admin/Configuration/Imports/Initialisation des comptes. Il est possible d'importer un fichier .csv avec vos numéros, suivez les explications fournis sur cette page&lt;br /&gt;
===Erreur HTTP 500, 502 ou 504 lors d'un export===&lt;br /&gt;
Si vous rencontrer une erreur de ce type cela veut dire que le fichier d'export à générer est trop gros.&lt;br /&gt;
&lt;br /&gt;
La solution consiste à scinder l'export en plusieurs morceaux en modifiant les dates à prendre en compte.&lt;br /&gt;
&lt;br /&gt;
==Comment revenir sur une écriture saisie ?==&lt;br /&gt;
*Soit l'écriture n'est pas validée (elle apparaît en vert, gras, italique) : vous pouvez alors modifier ou supprimer l'écriture&lt;br /&gt;
*Soit l'écriture est validée (elle apparaît en noir, &amp;quot;droit&amp;quot;) : dans ce cas, vous ne pouvez pas revenir sur cette écriture. Il s'agit d'un principe fondamental de traçabilité comptable. En effet, si vous pouviez faire &amp;quot;disparaître&amp;quot; une écriture validée, alors vos utilisateurs pourraient croire qu'ils ont &amp;quot;rêvé&amp;quot; en voyant une écriture un jour et en ne la voyant plus le lendemain. Par contre, vous pouvez toujours passer une contrepartie qui annule l'effet d'une écriture qui n'aurait pas due exister. Ainsi, les utilisateurs verront la première écriture et également la seconde.&lt;br /&gt;
&lt;br /&gt;
=Gestion des vols=&lt;br /&gt;
==Comment visualiser les vols oubliés ?==&lt;br /&gt;
*Aller sur la page Admin/Vols/Liste des vols : &lt;br /&gt;
- Vous cliquez sur l'icône de l'avion de la colonne &amp;quot;Vérifier la continuité des vols&lt;br /&gt;
- Vous pouvez éventuellement limiter votre contrôle entre 2 dates et/ou à partir d'un compteur particulier (utile pour lister les vols entre 2 maintenances). Par défaut les vols du mois en cours sont proposés&lt;br /&gt;
- Si vous avez sélectionnez l'option compteur sur cette avion, les discordances apparaissent en rouge sur fond grisé. L'erreur peut provenir de la ligne supérieure. Cliquer sur l'icône d'édition du vols dans la colonne action. Vous retrouvez la page de saisie pour corriger le compteur (ceci peut demander de modifier aussi le temps de vol)&lt;br /&gt;
==Comment savoir quel est le vol sans mouvement ?==&lt;br /&gt;
*Vous avez côté admin, le message suivant :&lt;br /&gt;
 &amp;quot;Le vol suivant n'a pas de mouvement associé : x&amp;quot;&lt;br /&gt;
Pour connaitre le vol concerné, il faut utiliser dans le gestionnaire des rapports la requête suivante :&lt;br /&gt;
 http://doc-en.openflyers.com/index.php?title=Export_generator#Flight_without_account_movement&lt;br /&gt;
==Message de type de vol manquant pour un vol en double commande...==&lt;br /&gt;
Vous avez sélectionné en admin &amp;quot;Type de vol requis dans le cas de la présence d'un second pilote à bord&amp;quot; et lorsque vous saisissez un vol en double commande il vous est impossible de le valider malgré la sélection du fameux type de vol requis.&lt;br /&gt;
Vous avez un message d'alerte &amp;quot;Seul le type de vol requis dans le cas de la présence d'un second pilote a été sélectionné, vous devez en sélectionner au moins un autre en plus&amp;quot;.&lt;br /&gt;
Dans ce cas, il faut également mettre &amp;quot;NON&amp;quot; à l'option &amp;quot;Le type de vol requis dans le cas de la présence d'un second pilote à bord ne peut être sélectionné seul&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Reports=&lt;br /&gt;
==Nous rencontrons des problèmes de reconnaissance de caractères avec Excel==&lt;br /&gt;
Nous conseillons [http://fr.openoffice.org/ OpenOffice] car Excel ne gère pas les encodages de caractère dans toutes ses versions.&lt;br /&gt;
&lt;br /&gt;
==Comment effectuer des requêtes SQL pour générer des rapports ?==&lt;br /&gt;
*La saisie des requêtes se fait dans le menu Rapports/Critères&lt;br /&gt;
*Leur visualisation se fait dans le menu Rapports/Voir les rapports&lt;br /&gt;
==Où trouver des requêtes SQL pour générer des rapports ?==&lt;br /&gt;
Nous préconisons la centralisation des requêtes SQL sur le wiki anglais sur la page [http://doc-en.openflyers.com/index.php?title=Export_generator Export generator]. Cela permet d'avoir une ressource d'informations centralisée utilisable par les administrateurs de tous les pays.&lt;br /&gt;
==Je ne trouve pas la requête que je souhaite, comment la demander ?==&lt;br /&gt;
Si vous ne trouvez pas sur la page [http://doc-en.openflyers.com/index.php?title=Export_generator Export generator] la requête que vous souhaitez, nous préconisons l'utilisation du support-forum depuis [http://www.openflyers.com www.openflyers.com] pour effectuer une demande de création de requête SQL.&lt;br /&gt;
&lt;br /&gt;
Soit un autre utilisateur vous proposera alors son aide, soit nous vous proposerons de créer cette requête SQL. Comme cela nécessite pour nous du temps, nous facturons cette création qui ensuite sera rajoutée sur la page contenant les diverses requêtes SQL.&lt;br /&gt;
&lt;br /&gt;
Le coût de cette création est fonction de la complexité de la requête. Il est facturé au coût horaire &amp;quot;Assistance - Intervention&amp;quot; présent sur le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]. A noter que l'assistance peut être prise en charge dans le cadre d'un abonnement spécifique (cf. le catalogue tarifaire).&lt;br /&gt;
==Dans les exports csv il apparait des « N° Id ». A quoi correspond ce numéro ?==&lt;br /&gt;
C'est un numéro interne à la base de données OpenFlyers (une clé primaire en langage base de données). Il ne sert que lorsqu'il est utilisé pour des requêtes d'extractions en SQL (cf. http://wiki.openflyers.org/index.php/Export_generator )&lt;br /&gt;
&lt;br /&gt;
==A quoi servent les adresses IPs bloquées ou les identifiants bloqués ?==&lt;br /&gt;
Lorsqu'un utilisateur tente à plusieurs reprises et de manière infructueuse à se loguer sur OpenFlyers, au bout d'un certain nombre de tentatives son adresse IP et/ou son identifiant sont bloqués pour une durée croissante au fur et à mesure qu'il retente toujours de manière infructueuse.&lt;br /&gt;
&lt;br /&gt;
Le but de ce blocage est d'éviter à des attaques de type &amp;quot;force brute&amp;quot; d'arriver à trouver un couple identifiant/mot de passe valide.&lt;br /&gt;
&lt;br /&gt;
Cependant, il peut arriver qu'il soit nécessaire de débloquer des adresses IPs bloquées ou des identifiants bloqués. C'est l'objet du gestionnaire d'adresses IPs bloquées et du gestionnaire d'identifiants bloqués. En supprimant ces entrées de la liste des entrées bloquées, vous les débloquez.&lt;br /&gt;
&lt;br /&gt;
=Armoire à clé=&lt;br /&gt;
==Check-list Armoire à clé INOP==&lt;br /&gt;
#Vérifier les branchements&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=FAQ-client&amp;diff=14182</id>
		<title>FAQ client</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=FAQ-client&amp;diff=14182"/>
				<updated>2016-04-19T14:10:10Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Fonctionnement d'OpenFlyers=&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Fonctionnement_.C3.A9conomique|Fonctionnement économique]]==&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement applicatif==&lt;br /&gt;
Les composants logiciels utilisés pour développer notre applicatif sont tous open source (notamment PHP et MySQL).&lt;br /&gt;
&lt;br /&gt;
La version 2.0 du logiciel OpenFlyers, propriété de la S.A.R.L. OpenFlyers, est sous licence semi-libre : il peut être installé et utilisé pour les besoins propres d'une structure aéronautique mais il ne peut être commercialisé par une société tiers sans licence spécifique (même à la demande d'un seul client) ou déployé pour des filiales d'une structure commerciale ou non.&lt;br /&gt;
&lt;br /&gt;
Les versions ultérieures à la version 2.0 du logiciel OpenFlyers, sont commercialisées uniquement par le biais d'un abonnement auprès de la S.A.R.L. OpenFlyers qui en garde l'hébergement exclusif.&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Arbitrage_des_demandes_de_d.C3.A9veloppements#Financement_des_d.C3.A9veloppements|Nouveaux développements]]==&lt;br /&gt;
&lt;br /&gt;
==De quoi avons-nous besoin pour faire fonctionner OpenFlyers ?==&lt;br /&gt;
Il suffit de disposer d'un ordinateur avec un accès internet et d'un navigateur moderne tel que Google Chrome, Firefox, Internet Explorer, Opera ou Safari. Aucune installation particulière n'est nécessaire sur l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
=Les bases de données=&lt;br /&gt;
==Les données stockées sont-elles bien protégées ?==&lt;br /&gt;
Nous tâchons de mettre en œuvre les différentes recommandations concernant la gestion des serveurs afin d'empêcher toute intrusion.&lt;br /&gt;
&lt;br /&gt;
De plus, nous disposons de plusieurs serveurs répartis en plusieurs endroits de la planète.&lt;br /&gt;
&lt;br /&gt;
Chaque nuit, tous les serveurs sauvegardent leurs bases de données et les envoient à tous les autres serveurs.&lt;br /&gt;
&lt;br /&gt;
Ces sauvegardes sont stockées par roulement sur une quinzaine de jours.&lt;br /&gt;
==Comment récupérer notre base de données ?==&lt;br /&gt;
Vous pouvez à tout moment récupérer le contenu de votre base de données :&lt;br /&gt;
*[[AdminDoc3#Configuration_.3E_Export_SQL_.3E_Complet|Procédure version 3]]&lt;br /&gt;
&lt;br /&gt;
==Peut-on avoir un accès de type &amp;quot;phpMyAdmin&amp;quot; à notre base de données ?==&lt;br /&gt;
Vous avez un accès en lecture à la base de données via l'export mais également via la génération des rapports.&lt;br /&gt;
&lt;br /&gt;
La structure de la base de données est documentée ici : http://doc-en.openflyers.com/index.php?title=Database_specification&lt;br /&gt;
&lt;br /&gt;
Par contre, nous nous interdisons de vous fournir un accès en écriture à la base de données. Car nous devons pouvoir garantir l'intégrité de cette base de données vis-à-vis de vous-même, vis-à-vis de vos utilisateurs mais également vis-à-vis de tierces personnes ou encore vis-à-vis des autorités.&lt;br /&gt;
&lt;br /&gt;
Cependant, si vous avez besoin de modifier une saisie en base de données, nous pouvons intervenir sur votre demande par e-mail ou courrier. Cette opération est facturée en fonction de sa complexité (voir [http://www.openflyers.com/pricing/catalog-price le catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Peut-on importer notre ancienne base de données externe OF 1.3.x lors du passage en production sur la solution hébergée OpenFlyers ?==&lt;br /&gt;
Oui, il est tout a fait possible de reprendre votre ancienne base de données OF 1.3.x.&lt;br /&gt;
&lt;br /&gt;
Le coût est à partir de 50 € HT/heure, le temps effectif étant déterminé lors de l'import. Il faut nous faire parvenir un export complet de la base SQL de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Il faut au préalable que vous ayez créé une [https://client.openflyers.com/newSubscription.php?lang=francais plateforme client ], puis nous signaler l'identifiant de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite vous créer la ou les factures, selon l'abonnement choisi, à partir de votre [http://client.openflyers.com/ clientmanager]&lt;br /&gt;
&lt;br /&gt;
Vous acquittez les factures correspondant à la migration de votre base de données, de votre abonnement et éventuellement de la migration de votre plateforme de la version 2.1 en 3.0&lt;br /&gt;
&lt;br /&gt;
Puis, l'idéal est de fixer un rendez-vous, par exemple, le XX-XX-2012 à 9 h. Puis, à cette même date :&lt;br /&gt;
*vous bloquez votre accès sur votre plateforme OF le jour J à 9h00 ;&lt;br /&gt;
*vous nous envoyez la base de données en suivant ;&lt;br /&gt;
*nous migrons, dès réception, votre base de données vers la version 2.1 (ou la version 3.0) sur nos serveurs ;&lt;br /&gt;
*une fois cela fait, on vous envoie un e-mail ;&lt;br /&gt;
*vous mettez en place de votre côté une redirection vers la nouvelle URL OF.&lt;br /&gt;
&lt;br /&gt;
Il faut compter environ 2 heures maximum pour procéder à la migration (suivant les difficultés que nous rencontrerons avec votre base de données).&lt;br /&gt;
&lt;br /&gt;
Les opérations d'export/import sont ainsi synchronisées et l'interruption de service est la plus courte possible.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Comment accéder à mon compte client ?]]==&lt;br /&gt;
&lt;br /&gt;
==Comment modifier des éléments de la fiche client ?==&lt;br /&gt;
Il vous suffit de vous [[Modèle_commercial_et_compte_client_OpenFlyers#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|connecter à votre plateforme]] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Puis d'éditer la fiche en allant dans Données/Affichage et fiche personnelle.&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Changer_de_responsable_en_charge_d.27OpenFlyers|Comment changer de responsable OpenFlyers ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Renouveler_son_abonnement_OpenFlyers|Comment renouveler l'abonnement ?]]==&lt;br /&gt;
&lt;br /&gt;
==Nous avons renouvelé notre abonnement et nous avons quand même un message d'alerte concernant la cotisation==&lt;br /&gt;
Le message d'alerte '''votre cotisation n'est pas à jour''' correspond à un message lié à la configuration de la plateforme OpenFlyers et non pas à l'abonnement OpenFlyers de cette plateforme. Il signifie que l'utilisateur qui se connecte n'est pas à jour de sa qualification/validité cotisation au sein de la structure.&lt;br /&gt;
&lt;br /&gt;
Dans tous les cas, l'administrateur référent (celui dont l'adresse e-mail doit apparaitre sur la page d'accueil d'OpenFlyers) conserve néanmoins tous ses droits.&lt;br /&gt;
&lt;br /&gt;
Cf. Gestion des validités des utilisateurs dans OpenFlyers [[Validity-management3#Gestion_des_validit.C3.A9s_des_utilisateurs| la version 3]] et la [[Validity-management4#Gestion_des_validit.C3.A9s_des_utilisateurs| la version 4]].&lt;br /&gt;
&lt;br /&gt;
==Changement du nombre de ressources en cours d'année et mise à jour de l'abonnement==&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|Ajouter une ressource à son abonnement OpenFlyers]]&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Enlever_une_ressource_.C3.A0_son_abonnement_OpenFlyers|Enlever une ressource à son abonnement OpenFlyers]]&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Remplacer_une_ressource_par_une_autre_dans_son_abonnement_OpenFlyers|Remplacer une ressource dans son abonnement OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==[[Modèle-commercial-et-compte-client-OpenFlyers#Remplacer-une-ressource-par-une-autre-dans-son-abonnement-OpenFlyers|Comment remplacer une ressource par une autre ?]]==&lt;br /&gt;
&lt;br /&gt;
==Facturation des ressources réelles et virtuelles==&lt;br /&gt;
A partir de la version 2.1 d'OpenFlyers, seules les ressources qui génèrent du chiffre d'affaires pour la structure cliente sont intégrées dans l'abonnement. Ainsi, les salles de cours ne sont pas retenues dans le calcul de l'abonnement. Pour qu'OpenFlyers fasse la différence entre une ressource &amp;quot;réelle&amp;quot; et une ressource &amp;quot;virtuelle&amp;quot;, il suffit de décocher &amp;quot;Aéronef réel&amp;quot; au niveau de la ligne associée à l'aéronef ('''Admin &amp;gt; Flotte &amp;gt; Aéronefs''' colonne Aéronefs réels).&lt;br /&gt;
&lt;br /&gt;
==[[Créer_une_plateforme_OpenFlyers_pour_sa_structure#Prise_d.27abonnement|Nous avons créé une plateforme, comment passer en production ?]]==&lt;br /&gt;
&lt;br /&gt;
==J'ai souscrit un abonnement First Price - Peut-on souscrire à tout moment un forfait paramétrage ?==&lt;br /&gt;
Oui, effectivement. Il se peut que le paramétrage de votre plateforme se révèle complexe, ou bien que vous manquiez de temps pour le configurer. Vous pouvez à tout moment opter pour notre forfait paramétrage, dont vous pouvez retrouver le tarif dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire].&lt;br /&gt;
&lt;br /&gt;
Cependant, dans le cas là, nous repartons d'une base de données vierge pour ne pas perdre de temps dans la correction (et la compréhension) du paramétrage initialement effectué.&lt;br /&gt;
&lt;br /&gt;
==J'ai souscrit un abonnement First Price - Peut-on basculer en cours d'année vers un abonnement Business ?==&lt;br /&gt;
Oui, vous pouvez à tout moment basculer vers un abonnement Business. Il faut pour cela nous en faire la demande. Nous vous créons alors la facture correspondant à la différence de tarif. Vous pouvez ensuite régler cette facture depuis votre Client Manager.&lt;br /&gt;
&lt;br /&gt;
==Je m'abonne en cours d'année - Combien vais-je devoir payer ?==&lt;br /&gt;
Pour la première année d'abonnement, le prix est calculé au prorata du nombre de jours civils entre la date de la commande et le trente-et-un (31) décembre de l’année civile en cours cf nos [http://www.openflyers.com/license/conditionsgenerales1_3.pdf conditions générales].&lt;br /&gt;
&lt;br /&gt;
==L'accès First Price dispose-t-il d'une connexion sécurisée ?==&lt;br /&gt;
Non, l'accès First Price ne dispose pas d'une connexion sécurisée. Il peut être pris en option (renouvelable chaque année) selon le tarif en vigueur dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]. L'accès First Price plus l'option HTTPS est de même niveau que le Business avec HTTPS inclus (256 bits).&lt;br /&gt;
&lt;br /&gt;
=Plateforme OpenFlyers=&lt;br /&gt;
==[[Créer_une_plateforme_OpenFlyers_pour_sa_structure|Comment créer une plateforme ?]]==&lt;br /&gt;
&lt;br /&gt;
==Impossible d'accéder à la plateforme de notre structure après création==&lt;br /&gt;
Attention ! Il ne faut pas confondre le couple identifiant/mot de passe qui permet d'accéder au compte client OpenFlyers de votre structure, depuis [https://client.openflyers.com Client Manager], avec le couple identifiant/mot de passe qui permet d'accéder à la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
*Le couple identifiant/mot de passe pour accéder au compte client OpenFlyers de votre structure vous a été communiqué par e-mail.&lt;br /&gt;
*Le couple identifiant/mot de passe pour accéder à votre plateforme OpenFlyers, immédiatement après création, est admin/admin. Vous êtes invité à le modifier des que possible&lt;br /&gt;
&lt;br /&gt;
==Nous avons déjà une plateforme OpenFlyers version X et nous voudrions tester la version Y==&lt;br /&gt;
===Quelles alternatives ?===&lt;br /&gt;
====soit vous migrez directement de la version X vers la version Y====&lt;br /&gt;
'''Nous recommandons cette solution (c'est même un prérequis dans le cadre du [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|forfait paramétrage]])'''&lt;br /&gt;
&lt;br /&gt;
*avantages :&lt;br /&gt;
:*Vous habituez vos utilisateurs à la nouvelle interface sans pour autant leur activer les nouvelles fonctionnalités&lt;br /&gt;
:*Vous paramétrez tranquillement depuis une base de données à jour les éléments&lt;br /&gt;
*inconvénients :&lt;br /&gt;
:*vous payez de suite la tarification de la version Y&lt;br /&gt;
:*vous êtes moins libre car vous travaillez sur une base de données en production (mais vous pouvez supprimer cet inconvénient en travaillant en parallèle sur une autre base de données en test)&lt;br /&gt;
Pour procéder à cette migration, il suffit d'envoyer un e-mail à l'équipe OpenFlyers. A noter, qu'il faudra acquitter une nouvelle facture d'hébergement correspondant à la différence de tarification entre la version X et la version Y.&lt;br /&gt;
&lt;br /&gt;
====soit vous créez une nouvelle plateforme qui vous servira de plateforme de test====&lt;br /&gt;
*avantages :&lt;br /&gt;
:*vous avez toute latitude pour paramétrer sans risque&lt;br /&gt;
:*vous ne payez pas la différence de coût entre la version X et la version Y pendant que vous testez&lt;br /&gt;
*inconvénients :&lt;br /&gt;
:*lors de votre migration de votre plateforme en production, vous devrez reprendre tout le paramétrage&lt;br /&gt;
&lt;br /&gt;
Pour cela, il vous suffit de suivre [[#Comment_cr.C3.A9er_une_plateforme_.3F|la procédure de création de plateforme]].&lt;br /&gt;
&lt;br /&gt;
Ensuite, lorsque vous souhaiterez migrer de la version X à la version Y (passage en production sur la version Y), voici ce qu'il faudra faire :&lt;br /&gt;
*nous envoyer un e-mail de demande de migration (ou passer par le forum)&lt;br /&gt;
Alors nous effectuerons les actions suivantes :&lt;br /&gt;
*migration de la base de données X vers la Y&lt;br /&gt;
*changement du pointage de votre adresse nom_de_la_plateforme.openflyers.fr par exemple de la X vers la version Y&lt;br /&gt;
Ensuite vous devrez modifier les paramétrages de la nouvelle Y (en reprenant par exemple ceux de votre version de test)&lt;br /&gt;
&lt;br /&gt;
Une fois que cela sera fait, vous nous le direz et nous supprimerons la base de données de la version Y&lt;br /&gt;
&lt;br /&gt;
Ensuite nous facturons chaque demande de migration de base de données (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
====Forfait paramétrage====&lt;br /&gt;
N'oubliez-pas que nous proposons [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|le forfait paramétrage]] pour la configuration d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
===Quel est le délai pour migrer une base de données ?===&lt;br /&gt;
Il faut compter 1 semaine&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#D.C3.A9roulement_d.27une_migration|Comment se fait la migration vers une version supérieure ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Cons.C3.A9quences_d.27une_migration|Quelles sont les conséquences d'une migration ?]]==&lt;br /&gt;
&lt;br /&gt;
==La configuration nous laisse perplexe (paramétrage de la facturation, de la comptabilité, du décompte des temps de vols), comment faire ?==&lt;br /&gt;
Si vous souhaitez utiliser en production rapidement votre plateforme OpenFlyers (par exemple idéalement à l'occasion d'un nouvel exercice comptable, c'est à dire au 1er janvier), et que vous souhaitez avoir un paramétrage fonctionnel rapidement sans avoir à y consacrer des heures pour comprendre, tester et sans doute passer à côté de certaines &amp;quot;subtilités&amp;quot;, alors sachez que nous avons mis en place un &amp;quot;[[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|forfait paramétrage]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ce forfait est également valable pour un client utilisateur de la version 1.3.x et qui souhaite migrer sans attendre à la version 3.0.3 en utilisant toutes ses fonctionnalités (comptes pilotes et heures de vols).&lt;br /&gt;
&lt;br /&gt;
==Nous avons une version 3 en test==&lt;br /&gt;
===mais nous souhaiterions reprendre tout à zéro, comment faire ?===&lt;br /&gt;
Vous vous inscrivez à nouveau avec un nouveau nom ici : http://client.openflyers.com&lt;br /&gt;
&lt;br /&gt;
===Peut-on garder la configuration de la version 3 et migrer uniquement les réservations de la 1.3.x ?===&lt;br /&gt;
Non, ce n'est pas possible car les contenus auront évolués différemment.&lt;br /&gt;
&lt;br /&gt;
Voila ce qu'il faut faire :&lt;br /&gt;
*demander la migration par e-mail de la 1.3.x vers la 3 avec passage en prod sur la 3 (c'est transparent pour les utilisateurs : seule l'interface changera pour eux tant que l'administrateur ne leur aura pas donné de droits supplémentaires)&lt;br /&gt;
*reprendre la configuration faite sur la 3 en test sur la nouvelle 3&lt;br /&gt;
*envoyer un nouveau e-mail pour dire que l'on peut supprimer l'ancienne 3 en test&lt;br /&gt;
&lt;br /&gt;
==Comment passer à la gestion des comptes et la comptabilité dans OpenFlyers ?==&lt;br /&gt;
Pour activer la gestion des comptes et de la comptabilité dans OpenFlyers, vous pouvez suivre les FAQ dédiées à la comptabilité ainsi que les documentations qui présentent les modules de comptabilité :&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité version 2.1]]&lt;br /&gt;
*[[FAQ_accounting3|FAQ comptabilité version 3.0]]&lt;br /&gt;
*[[FAQ_accounting4|FAQ comptabilité version 4]]&lt;br /&gt;
*[[Accueil#Comptabilit.C3.A9|Documentations sur la comptabilité]]&lt;br /&gt;
dont [[Comptabilité#Mise_en_place_de_la_comptabilit.C3.A9_dans_OpenFlyers|Quelques conseils sur la mise en place de la comptabilité dans OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
=Support=&lt;br /&gt;
==Quels sont les supports techniques ?==&lt;br /&gt;
Il existe à ce jour 3 types de support :&lt;br /&gt;
*le support-forum accessible depuis notre site internet http://www.openflyers.com à l'onglet &amp;quot;Support&amp;quot;&lt;br /&gt;
*le support par e-mail réservé aux abonnements &amp;quot;Business&amp;quot; et plus.&lt;br /&gt;
*le [http://www.openflyers.com/support support ponctuel par téléphone] qui peut vous permettre de vous dépanner si nous pouvons vous fournir la réponse en temps réel.&lt;br /&gt;
&lt;br /&gt;
==[[How_to_communicate_with_OpenFlyers#Cr.C3.A9er_un_compte_d.27acc.C3.A8s_au_support-forum|Comment créer son accès au support-forum ?]]==&lt;br /&gt;
&lt;br /&gt;
==Les e-mails envoyés à OpenFlyers sont retournés en erreur==&lt;br /&gt;
Lors de l'envoi de vos messages, vous avez avez eu un message d'erreur en retour.&lt;br /&gt;
&lt;br /&gt;
Le problème peut venir de l'[[Wikipedia-fr:Sender_Policy_Framework|authentification SPF]] que nous avons mis en place.&lt;br /&gt;
&lt;br /&gt;
Ainsi, si le serveur OpenFlyers refuse les e-mails non authentifiés qui parviennent depuis un nom de domaine comme smtp.nom-de-domaine.com pour défaut de SPF, il faut rajouter un enregistrmenet TXT dans le gestionnaire du serveur concerné avec la ligne de commande : v=spf1 include:_spf.nom-de-domaine.com ~all.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Comptabilit%C3%A9&amp;diff=14181</id>
		<title>Comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Comptabilit%C3%A9&amp;diff=14181"/>
				<updated>2016-04-19T14:09:28Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
Cette page présente la comptabilité en général. Il existe d'autres pages en relation avec ce sujet :&lt;br /&gt;
*la [[Configuration_Accounting3|configuration]] de la comptabilité dans OpenFlyers version 3&lt;br /&gt;
*la [[Configuration_Accounting4|configuration]] de la comptabilité dans OpenFlyers version 4&lt;br /&gt;
*l'[[Use_Accounting3|utilisation]] du module de comptabilité d'OpenFlyers version 3&lt;br /&gt;
*l'[[Use_Accounting4|utilisation]] du module de comptabilité d'OpenFlyers version 4&lt;br /&gt;
*les [[Conseils spécifiques pour la comptabilité|conseils]] sur la comptabilité&lt;br /&gt;
&lt;br /&gt;
=Définitions=&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
[http://fr.wikipedia.org/wiki/Comptabilit%C3%A9 définition de la comptabilité d'après wikipedia]&lt;br /&gt;
&lt;br /&gt;
==Principe de la partie double==&lt;br /&gt;
[http://fr.wikipedia.org/wiki/Comptabilit%C3%A9_en_partie_double définition de la partie double d'après wikipedia]&lt;br /&gt;
&lt;br /&gt;
==[[Écritures comptables#R.C3.A8gles_sur_les_.C3.A9critures|Règles concernant les écritures]]==&lt;br /&gt;
&lt;br /&gt;
=Que fait OpenFlyers ?=&lt;br /&gt;
A partir de la version 3, OpenFlyers gère la saisie des écritures courantes de la comptabilité :&lt;br /&gt;
*facturation client&lt;br /&gt;
*facturation fournisseur&lt;br /&gt;
*encaissements&lt;br /&gt;
*paiements&lt;br /&gt;
*mouvements de compte à compte&lt;br /&gt;
&lt;br /&gt;
=La Comptabilité=&lt;br /&gt;
==[[Wikipedia-fr:Plan_comptable_g%C3%A9n%C3%A9ral_%28France%29#Cadre_comptable|Plan comptable à la française]]==&lt;br /&gt;
===[[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|Comptes de bilan]]===&lt;br /&gt;
Les comptes de bilan regroupent l'ensemble des comptes qui ne sont pas réinitialisés lors d'un changement d'exercice comptable, c'est à dire que leur solde être conservé d'un exercice à l'autre pour assurer notamment la traçabilité des dettes envers [[#Comptes_de_tiers|les tiers]].&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#11._Report_.C3.A0_nouveau|Compte de report à nouveau]]====&lt;br /&gt;
Le compte report à nouveau est utilisé pour l'initialisation des comptes bilan ainsi que pour contenir déterminer le bénéfice ou le déficit d'un exercice comptable.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#16._Emprunts_et_dettes_assimil.C3.A9es|Comptes d'emprunts et de dettes assimilées]]====&lt;br /&gt;
Les comptes d'emprunts et de dettes assimilées sont des comptes du bilan : leur solde n'est pas réinitialisé d'un exercice comptable à l'autre.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_4_:_Comptes_de_tiers|Comptes de tiers]]====&lt;br /&gt;
Les comptes de tiers sont des comptes du bilan : leur solde n'est pas réinitialisé d'un exercice comptable à l'autre.&lt;br /&gt;
&lt;br /&gt;
Dans le plan comptable à la française, les comptes de tiers ont une racine en 4 ou 5.&lt;br /&gt;
&lt;br /&gt;
Ils regroupent :&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#40._Fournisseurs_et_comptes_rattach.C3.A9s|Les comptes fournisseurs, racine en 401]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#41._Clients_et_comptes_rattach.C3.A9s|Les comptes clients, racine en 411]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#44._.C3.89tat_et_autres_collectivit.C3.A9s_publiques|Les comptes représentant les collectivités pour les subventions, racine en 441]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|Les comptes de régularisation]]&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_5_:_Comptes_financiers|Comptes financiers]]====&lt;br /&gt;
Les comptes financiers regroupent :&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#51._Banques.2C_.C3.A9tablissements_financiers_et_assimil.C3.A9s|Les comptes bancaires, racine en 512]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#53._CAISSE|Les comptes de caisses, racine en 531]]&lt;br /&gt;
&lt;br /&gt;
===[[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|Comptes d'exploitation]]===&lt;br /&gt;
Ou comptes de résultat. A l'opposé des comptes de bilan, les comptes d'exploitation sont remis à zéro à chaque changement d'exercice.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_6_:_Comptes_de_charges|Comptes de charges]]====&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_6_:_Comptes_de_charges|en France: comptes 6xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de charges permettent de regrouper les coûts supportés par la structure sur un exercice donné. Il reçoivent les contreparties des factures fournisseurs.&lt;br /&gt;
&lt;br /&gt;
Les principaux comptes de charges ont leur racine en [[Wikipedia-fr:Plan_comptable_général_(France)#60._Achats_.28sauf_603.29|60]] ou [[Wikipedia-fr:Plan_comptable_général_(France)#61._Services_ext.C3.A9rieurs|61]]. Le 61 permet de désigner les &amp;quot;Services extérieurs&amp;quot;. C'est donc sur cette racine que trouveront leur place les charges &amp;quot;immatérielles&amp;quot; comme les assurances.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_7_:_comptes_de_produits|Comptes de produits]]====&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_7_:_comptes_de_produits|en France: comptes 7xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de produits permettent de regrouper les ventes effectuées par la structure sur un exercice donné. Il reçoivent les contreparties des factures clients/utilisateurs.&lt;br /&gt;
&lt;br /&gt;
De façon simplifiée, le total des soldes des comptes de produits représente le [[Wikipedia-fr:Chiffre_d'affaires|chiffre d'affaire]] de la structure.&lt;br /&gt;
&lt;br /&gt;
==Présentation des comptes dans OpenFlyers==&lt;br /&gt;
===Comptes utilisateurs===&lt;br /&gt;
Au sens comptable, il s'agit en général de [[#Comptes_clients|comptes clients]] mais parfois également de [[Comptabilité#Comptes_fournisseurs|comptes fournisseurs]]. L'appellation &amp;quot;compte utilisateur&amp;quot; est propre à OpenFlyers et permet de coupler un compte comptable avec un utilisateur de la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont débités des factures (activités, cotisations, etc.)&lt;br /&gt;
*Les comptes utilisateurs sont crédités par les paiements des utilisateurs (carte bancaire, chèques, liquide, etc.) que l'on nomme dans OpenFlyers les '''encaissements'''.&lt;br /&gt;
&lt;br /&gt;
Quand un compte utilisateur est crédité par un encaissement, l'autre entrée (qui est un débit) doit affecter un compte de trésorerie (selon la ventilation paramétrée dans le gestionnaire des encaissements)&lt;br /&gt;
&lt;br /&gt;
===Comptes ressources===&lt;br /&gt;
Les comptes ressources sont une notion propre à OpenFlyers. Ils servent à coupler des [[#Comptes_d.27exploitation|comptes d'exploitation]] liés aux ressources.&lt;br /&gt;
&lt;br /&gt;
===Comptes clients===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#41._Clients_et_comptes_rattach.C3.A9s|en France: comptes 411xxx]])&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont débités des factures clients (vente de produit)&lt;br /&gt;
*La contrepartie va au crédit sur un compte de produit.&lt;br /&gt;
*Les encaissements des clients sont crédités sur le compte client et débité sur le compte de trésorerie&lt;br /&gt;
&lt;br /&gt;
===Comptes fournisseurs===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#40._Fournisseurs_et_comptes_rattach.C3.A9s|en France: comptes 401xxx]])&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont crédités des factures fournisseurs (loyers, eau, électricité, etc.)&lt;br /&gt;
*La contrepartie va au débit sur un compte de charge.&lt;br /&gt;
*Les paiements des fournisseurs sont débités sur le compte fournisseur et crédité sur le compte de trésorerie&lt;br /&gt;
&lt;br /&gt;
===Comptes de trésorerie===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_5_:_Comptes_financiers|en France: comptes 5xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de trésorerie sont essentiellement des comptes bancaires.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' les mouvements sur ces comptes se font dans le sens opposé du relevé de compte bancaire. Ainsi, une opération au débit sur un relevé de compte bancaire sera enregistré en comptabilité au crédit et une opération au crédit sur un relevé de compte bancaire sera enregistré au débit.&lt;br /&gt;
&lt;br /&gt;
===Comptes de TVA===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#44._.C3.89tat_et_autres_collectivit.C3.A9s_publiques|en France comptes 445xxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de TVA sont utilisés pour enregistrer les contreparties liées à la TVA des factures fournisseurs et des factures clients.&lt;br /&gt;
&lt;br /&gt;
Ils ne sont pas usités dans les associations qui ne facturent pas la TVA à leurs clients et qui n'ont donc pas besoin de gérer la contrepartie liée à la TVA des factures fournisseurs.&lt;br /&gt;
&lt;br /&gt;
===[[#Comptes_de_charges|Comptes de charges]]===&lt;br /&gt;
&lt;br /&gt;
===[[#Comptes_de_produits|Comptes de produits]]===&lt;br /&gt;
Normalement, dans OpenFlyers, la majorité des factures clients doivent être affectées à des [[#Comptes_ressources|comptes ressources-produits]] étant donné que les structures utilisant OpenFlyers génèrent l'essentiel de leur chiffre d'affaire par le biais de la mise à disposition de ressources.&lt;br /&gt;
&lt;br /&gt;
===Comptes bilan===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|en France : comptes 1, 2, 3, 4, 5]])&lt;br /&gt;
&lt;br /&gt;
Dans OpenFlyers, on ne met dans les comptes de bilan que les comptes qui ne sont ni des comptes de trésorerie, ni des comptes clients, ni des comptes fournisseurs&lt;br /&gt;
&lt;br /&gt;
====[[#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]====&lt;br /&gt;
*Compte 110000&lt;br /&gt;
&lt;br /&gt;
==[[Écritures comptables|Les écritures comptables]]==&lt;br /&gt;
==Comptabilités multiples==&lt;br /&gt;
Dans le cas ou des entreprises ou associations mettent en commun des ressources qu'ils gèrent conjointement sur une même plateforme OpenFlyers, il est possible de mettre en place des comptabilités distinctes pour chaque entité.&lt;br /&gt;
&lt;br /&gt;
===Facturations automatiques entre entités comptables distinctes===&lt;br /&gt;
Dans le cas où chaque utilisateur dispose d'un compte unique dans une seule des entités, alors l'utilisateur est facturé dans la comptabilité de son entité d'appartenance quelque soit la ressource utilisée.&lt;br /&gt;
&lt;br /&gt;
Si la ressource utilisée appartient à une autre entité que celle à laquelle l'utilisateur est client alors il est possible de mettre en place des facturations automatiques entre les entités mises en jeu et cela dans chacune des comptabilités.&lt;br /&gt;
&lt;br /&gt;
Exemple avec 2 entités A et B, un utilisateur U client de l'entité A et une ressource R appartenant à l'entité B. On considère que l'utilisateur U utilise la ressource R.&lt;br /&gt;
*L'utilisateur U sera débité sur son compte client de l'entité A et la contrepartie ira sur un compte produit de cette entité :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité A'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client Utilisateur U||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte produit Ressource R||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Mais comme la ressource R appartient à l'entité B, alors l'entité B va enregistrer automatiquement une écriture de débit sur le compte client A et la contrepartie ira sur un compte produit de l'entité B :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité B'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client Entité A||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte produit Ressource R||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Parallèlement, l'entité A, enregistre également le fait qu'elle est facturée par le fournisseur entité B :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité A'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte charge Ressource R||||X €&lt;br /&gt;
|-&lt;br /&gt;
|Compte fournisseur Entité B||X €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Principes comptables généraux=&lt;br /&gt;
==Règles de saisies de la comptabilité courante==&lt;br /&gt;
Ces règles s'incrivent dans le cadre du workflow proposé par OpenFlyers.&lt;br /&gt;
#La facturation client et les encaissements clients sont normalement saisies au jour le jour soit par les utilisateurs soit par des gestionnaires&lt;br /&gt;
#Il faut saisir les factures fournisseurs au vu des factures&lt;br /&gt;
#Nous recommandons de saisir les écritures bancaires au vu du relevé de banque et en utilisant la date d'enregistrement indiquée sur le relevé de banque. Cette forme de saisie vaut alors pointage.&lt;br /&gt;
Le principe est normalement de saisir les paiements et les encaissements à la vue des chèques, bordereaux, etc. puis ensuite de vérifier que l'on tombe juste avec la banque. Mais il est plus simple de saisir les écritures bancaires au vu du relevé : cela permet d'être tout de suite juste avec la banque. Cette façon de procéder ne peut s'appliquer que si on limite le paiement par chèque qui ne permet pas de maitriser la date d'encaissement par le fournisseur. Il faut ainsi privilégier les paiements par carte bancaire ou par virement qui permettent une prise en compte immédiate ou quasiment immédiate de la part de la banque et évitent ainsi les problèmes de &amp;quot;chèque dans la nature&amp;quot; car non encaissés par le fournisseur.&lt;br /&gt;
En procédant ainsi, les vérifications s'en trouvent simplifiées.&lt;br /&gt;
&lt;br /&gt;
==Traçabilité des écritures==&lt;br /&gt;
Afin d'assurer la traçabilité des écritures comptables, il n'est pas possible d'effacer une écriture comptable validée. Cela permet de garantir la confiance entre les parties prenantes (utilisateurs, gestionnaires et OpenFlyers). Par contre, il est toujours possible d'annuler l'effet d'une écriture en saisissant un flux opposé. (cf. procédure pour [[Use_Accounting3#Annuler_l.27effet_d.27une_.C3.A9criture_comptable|OpenFlyers version 3]] et [[Use_Accounting4#Annuler_l.27effet_d.27une_.C3.A9criture_comptable|OpenFlyers version 4]]).&lt;br /&gt;
&lt;br /&gt;
==Vérifications sur la comptabilité courante==&lt;br /&gt;
En respectant les [[#R.C3.A8gles_de_saisies_de_la_comptabilit.C3.A9_courante|recommandations de saisie d'OpenFlyers de la comptabilité courante]], les éléments à vérifiés sont les suivants :&lt;br /&gt;
#On vérifie que l'on tombe juste sur le solde du compte bancaire : le solde du compte bancaire sur la plateforme OpenFlyers doit correspondre au solde présent sur le relevé de banque à la même date. Si une erreur apparait, on procède par dychotomie pour identifier à partir de quelle date, les soldes sont différents et ainsi retrouver l'écriture en défaut. C'est seulement une fois que ce travail est effectué, que l'on peut passer à l'étape suivante.&lt;br /&gt;
#On vérifie que les comptes fournisseurs sont tous à 0 et lorsqu'ils ne sont pas à 0, on doit être capable de dire pourquoi (facture non payée par exemple). En effet, on peut être juste au niveau de la banque sans que pour autant le compte fournisseur débité soit le bon.&lt;br /&gt;
#Il reste alors à contrôler le chiffre d'affaire. Pour cette vérification le plus simple est de vérifier que le chiffre d'affaire correspond au volume de l'activité multiplié par le prix unitaire. Dans certains cas, cette vérification n'est pas aisée (changements de tarifs en cours d'année par exemple). Il faut donc scinder le volume en autant de composantes qu'il peut y avoir de tarifs.&lt;br /&gt;
&lt;br /&gt;
=Quelques conseils généraux=&lt;br /&gt;
==Gestion comptable de cas particuliers==&lt;br /&gt;
===Débiter les vols mécaniques===&lt;br /&gt;
Les vols mécaniques sont une charge pour une structure. La structure peut être tentée de ne pas faire apparaitre cette charge dans sa comptabilité car il n'y a personne à facturer. Cependant OpenFlyers recommande de facturer les vols mécaniques au même tarif que autres vols pour plusieurs raisons :&lt;br /&gt;
*Cela permet de suivre d'une manière comptable le coût de la mécanique (et notamment sa partie &amp;quot;vols&amp;quot;) et éventuellement de détecter des dérives. C'est aussi utile lorsque l'on veut calculer le prix de revient d'une ressource.&lt;br /&gt;
*Cela permet de contrôler plus facilement le chiffre d'affaire de la structure puisque le produit reste proportionnel aux heures de vol.&lt;br /&gt;
*L'impact sur le résultat est nul puisque la charge est égale au produit. De ce fait cela n'a pas de conséquence fiscale pour les structures soumises à l'impôt sur les sociétés ou à la TVA.&lt;br /&gt;
*Seul le rapport du résultat par rapport au chiffre d'affaire est très légèrement modifié.&lt;br /&gt;
Par contre la facturation d'un vol mécanique s'effectue en débitant un compte de charge au lieu d'un compte client. Ainsi, c'est neutre pour les utilisateurs.&lt;br /&gt;
&lt;br /&gt;
===TVA sur les ventes à soi-même===&lt;br /&gt;
Lorsque vous faites de la vente à vous-même vous devez calculer la TVA correspondante. Cette opération est neutre car vous déduisez aussi la TVA déductible pour le même montant.&lt;br /&gt;
&lt;br /&gt;
===Saisie des salaires===&lt;br /&gt;
Nous recommandons de dissocier les salaires en 2 parties :&lt;br /&gt;
*Le salaire net versé au salarié qui fait l'objet d'un mouvement qui crédite le compte &amp;quot;fournisseur&amp;quot; du salarié (401MARTIN pour M. MARTIN) et débite le compte de charge ''Rémunérations brutes'' (641100)&lt;br /&gt;
*Les taxes sur les salaires regroupées en un seul mouvement qui crédite le compte &amp;quot;fournisseur&amp;quot; URSSAF (431000) et débite le compte de charges ''Cotisations à l'URSSAF'' (645100)&lt;br /&gt;
Nous recommandons de saisir ces écritures récurrentes en tant que facture fournisseur (cf. procédure pour la [[Use_Accounting3#Saisie_des_factures_fournisseurs|version 3]] et la [[Use_Accounting4#Saisie_des_factures_fournisseurs|version 4]]). Cela permet d'enregistrer la ventilation des mouvements et ensuite de simplifier cette saisie.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du chiffre d'affaire==&lt;br /&gt;
Le contrôle du chiffre d'affaire est une opération que devrait faire les personnes en charge de la validation des comptes.&lt;br /&gt;
&lt;br /&gt;
Contrôler le chiffre d'affaire c'est vérifier que ce que l'on a fabriqué à bien était facturé (ou stocké).&lt;br /&gt;
&lt;br /&gt;
Dans le cas des vols, il n'y a pas de stock possible. Donc le contrôle du chiffre d'affaire est très simple : on prend le nombre d'heures de vol faite par un avion et on multiplie par son coÃ»t horaire. On vérifie alors que le CA lié à cet avion correspond avec l'ensemble facturé qui apparait dans les comptes produits.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
*L'avion UE a fait 300 heures de vols en 2008.&lt;br /&gt;
*Le prix de l'heure de vol est de 100 €.&lt;br /&gt;
*Le chiffre d'affaire lié à l'avion est alors de 300*100 = 30 000 €.&lt;br /&gt;
*Le compte produit de l'avion doit donc faire apparaître exactement un solde de 30 000 €.&lt;br /&gt;
&lt;br /&gt;
Il faut tenir compte des changements tarifaires intervenus durant l'année. Le trésorier devrait donc fournir un état des heures de vol sur chacune des périodes tarifaires de l'année. D'où l'utilité d'effectuer les changements de tarifaire au 1er d'un mois : les états sont plus faciles à créer.&lt;br /&gt;
&lt;br /&gt;
Il faut également tenir compte des différents tarifs (double commande, baptêmes de l'air, etc.)&lt;br /&gt;
&lt;br /&gt;
Ainsi, le trésorier ou le secrétaire devrait communiquer un tableau pour chaque avion (ou chaque type avion) avec une ligne par type de vol (impliquant un tarif différent) et une colonne par date d'application du tarif.&lt;br /&gt;
&lt;br /&gt;
Un autre tableau devrait comporter la ventilation des heures en fonction des mêmes éléments.&lt;br /&gt;
&lt;br /&gt;
Il suffit alors de multiplier les cellules du premier tableau avec celles du second tableau puis d'additionner le tout : on obtient le chiffre d'affaire de l'avion (que l'on doit comparer avec le chiffre d'affaire effectivement facturé).&lt;br /&gt;
&lt;br /&gt;
==Messages d'alertes==&lt;br /&gt;
Nous recommandons comme bonne pratique d'attirer l'attention des utilisateurs autorisés à valider les vols ou les écritures comptables que '''tout message d'alerte apparaissant dans l'espace d'administration doit conduire à stopper la validation des écritures''' dans l'attente de la résolution du problème par l'administrateur.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Comptabilit%C3%A9&amp;diff=14180</id>
		<title>Comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Comptabilit%C3%A9&amp;diff=14180"/>
				<updated>2016-04-19T14:09:00Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
Cette page présente la comptabilité en général. Il existe d'autres pages en relation avec ce sujet :&lt;br /&gt;
*la [[Configuration_Accounting3|configuration]] de la comptabilité dans OpenFlyers version 3&lt;br /&gt;
*la [[Configuration_Accounting4|configuration]] de la comptabilité dans OpenFlyers version 4&lt;br /&gt;
*l'[[Use_Accounting3|utilisation]] du module de comptabilité d'OpenFlyers version 3&lt;br /&gt;
*l'[[Use_Accounting4|utilisation]] du module de comptabilité d'OpenFlyers version 4&lt;br /&gt;
*les [[Conseils spécifiques pour la comptabilité|conseils]] sur la comptabilité&lt;br /&gt;
&lt;br /&gt;
=Définitions=&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
[http://fr.wikipedia.org/wiki/Comptabilit%C3%A9 définition de la comptabilité d'après wikipedia]&lt;br /&gt;
&lt;br /&gt;
==Principe de la partie double==&lt;br /&gt;
[http://fr.wikipedia.org/wiki/Comptabilit%C3%A9_en_partie_double définition de la partie double d'après wikipedia]&lt;br /&gt;
&lt;br /&gt;
==[[Écritures comptables#R.C3.A8gles_sur_les_.C3.A9critures|Règles concernant les écritures]]==&lt;br /&gt;
&lt;br /&gt;
=Que fait OpenFlyers ?=&lt;br /&gt;
A partir de la version 3, OpenFlyers gère la saisie des écritures courantes de la comptabilité :&lt;br /&gt;
*facturation client&lt;br /&gt;
*facturation fournisseur&lt;br /&gt;
*encaissements&lt;br /&gt;
*paiements&lt;br /&gt;
*mouvements de compte à compte&lt;br /&gt;
&lt;br /&gt;
=La Comptabilité=&lt;br /&gt;
==[[Wikipedia-fr:Plan_comptable_g%C3%A9n%C3%A9ral_%28France%29#Cadre_comptable|Plan comptable à la française]]==&lt;br /&gt;
===[[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|Comptes de bilan]]===&lt;br /&gt;
Les comptes de bilan regroupent l'ensemble des comptes qui ne sont pas réinitialisés lors d'un changement d'exercice comptable, c'est à dire que leur solde être conservé d'un exercice à l'autre pour assurer notamment la traçabilité des dettes envers [[#Comptes_de_tiers|les tiers]].&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#11._Report_.C3.A0_nouveau|Compte de report à nouveau]]====&lt;br /&gt;
Le compte report à nouveau est utilisé pour l'initialisation des comptes bilan ainsi que pour contenir déterminer le bénéfice ou le déficit d'un exercice comptable.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#16._Emprunts_et_dettes_assimil.C3.A9es|Comptes d'emprunts et de dettes assimilées]]====&lt;br /&gt;
Les comptes d'emprunts et de dettes assimilées sont des comptes du bilan : leur solde n'est pas réinitialisé d'un exercice comptable à l'autre.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_4_:_Comptes_de_tiers|Comptes de tiers]]====&lt;br /&gt;
Les comptes de tiers sont des comptes du bilan : leur solde n'est pas réinitialisé d'un exercice comptable à l'autre.&lt;br /&gt;
&lt;br /&gt;
Dans le plan comptable à la française, les comptes de tiers ont une racine en 4 ou 5.&lt;br /&gt;
&lt;br /&gt;
Ils regroupent :&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#40._Fournisseurs_et_comptes_rattach.C3.A9s|Les comptes fournisseurs, racine en 401]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#41._Clients_et_comptes_rattach.C3.A9s|Les comptes clients, racine en 411]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#44._.C3.89tat_et_autres_collectivit.C3.A9s_publiques|Les comptes représentant les collectivités pour les subventions, racine en 441]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|Les comptes de régularisation]]&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_5_:_Comptes_financiers|Comptes financiers]]====&lt;br /&gt;
Les comptes financiers regroupent :&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#51._Banques.2C_.C3.A9tablissements_financiers_et_assimil.C3.A9s|Les comptes bancaires, racine en 512]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#53._CAISSE|Les comptes de caisses, racine en 531]]&lt;br /&gt;
&lt;br /&gt;
===[[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|Comptes d'exploitation]]===&lt;br /&gt;
Ou comptes de résultat. A l'opposé des comptes de bilan, les comptes d'exploitation sont remis à zéro à chaque changement d'exercice.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_6_:_Comptes_de_charges|Comptes de charges]]====&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_6_:_Comptes_de_charges|en France: comptes 6xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de charges permettent de regrouper les coûts supportés par la structure sur un exercice donné. Il reçoivent les contreparties des factures fournisseurs.&lt;br /&gt;
&lt;br /&gt;
Les principaux comptes de charges ont leur racine en [[Wikipedia-fr:Plan_comptable_général_(France)#60._Achats_.28sauf_603.29|60]] ou [[Wikipedia-fr:Plan_comptable_général_(France)#61._Services_ext.C3.A9rieurs|61]]. Le 61 permet de désigner les &amp;quot;Services extérieurs&amp;quot;. C'est donc sur cette racine que trouveront leur place les charges &amp;quot;immatérielles&amp;quot; comme les assurances.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_7_:_comptes_de_produits|Comptes de produits]]====&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_7_:_comptes_de_produits|en France: comptes 7xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de produits permettent de regrouper les ventes effectuées par la structure sur un exercice donné. Il reçoivent les contreparties des factures clients/utilisateurs.&lt;br /&gt;
&lt;br /&gt;
De façon simplifiée, le total des soldes des comptes de produits représente le [[Wikipedia-fr:Chiffre_d'affaires|chiffre d'affaire]] de la structure.&lt;br /&gt;
&lt;br /&gt;
==Présentation des comptes dans OpenFlyers==&lt;br /&gt;
===Comptes utilisateurs===&lt;br /&gt;
Au sens comptable, il s'agit en général de [[#Comptes_clients|comptes clients]] mais parfois également de [[Comptabilité#Comptes_fournisseurs|comptes fournisseurs]]. L'appellation &amp;quot;compte utilisateur&amp;quot; est propre à OpenFlyers et permet de coupler un compte comptable avec un utilisateur de la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont débités des factures (activités, cotisations, etc.)&lt;br /&gt;
*Les comptes utilisateurs sont crédités par les paiements des utilisateurs (carte bancaire, chèques, liquide, etc.) que l'on nomme dans OpenFlyers les '''encaissements'''.&lt;br /&gt;
&lt;br /&gt;
Quand un compte utilisateur est crédité par un encaissement, l'autre entrée (qui est un débit) doit affecter un compte de trésorerie (selon la ventilation paramétrée dans le gestionnaire des encaissements)&lt;br /&gt;
&lt;br /&gt;
===Comptes ressources===&lt;br /&gt;
Les comptes ressources sont une notion propre à OpenFlyers. Ils servent à coupler des [[#Comptes_d.27exploitation|comptes d'exploitation]] liés aux ressources.&lt;br /&gt;
&lt;br /&gt;
===Comptes clients===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#41._Clients_et_comptes_rattach.C3.A9s|en France: comptes 411xxx]])&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont débités des factures clients (vente de produit)&lt;br /&gt;
*La contrepartie va au crédit sur un compte de produit.&lt;br /&gt;
*Les encaissements des clients sont crédités sur le compte client et débité sur le compte de trésorerie&lt;br /&gt;
&lt;br /&gt;
===Comptes fournisseurs===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#40._Fournisseurs_et_comptes_rattach.C3.A9s|en France: comptes 401xxx]])&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont crédités des factures fournisseurs (loyers, eau, électricité, etc.)&lt;br /&gt;
*La contrepartie va au débit sur un compte de charge.&lt;br /&gt;
*Les paiements des fournisseurs sont débités sur le compte fournisseur et crédité sur le compte de trésorerie&lt;br /&gt;
&lt;br /&gt;
===Comptes de trésorerie===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_5_:_Comptes_financiers|en France: comptes 5xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de trésorerie sont essentiellement des comptes bancaires.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' les mouvements sur ces comptes se font dans le sens opposé du relevé de compte bancaire. Ainsi, une opération au débit sur un relevé de compte bancaire sera enregistré en comptabilité au crédit et une opération au crédit sur un relevé de compte bancaire sera enregistré au débit.&lt;br /&gt;
&lt;br /&gt;
===Comptes de TVA===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#44._.C3.89tat_et_autres_collectivit.C3.A9s_publiques|en France comptes 445xxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de TVA sont utilisés pour enregistrer les contreparties liées à la TVA des factures fournisseurs et des factures clients.&lt;br /&gt;
&lt;br /&gt;
Ils ne sont pas usités dans les associations qui ne facturent pas la TVA à leurs clients et qui n'ont donc pas besoin de gérer la contrepartie liée à la TVA des factures fournisseurs.&lt;br /&gt;
&lt;br /&gt;
===[[#Comptes_de_charges|Comptes de charges]]===&lt;br /&gt;
&lt;br /&gt;
===[[#Comptes_de_produits|Comptes de produits]]===&lt;br /&gt;
Normalement, dans OpenFlyers, la majorité des factures clients doivent être affectées à des [[#Comptes_ressources|comptes ressources-produits]] étant donné que les structures utilisant OpenFlyers génèrent l'essentiel de leur chiffre d'affaire par le biais de la mise à disposition de ressources.&lt;br /&gt;
&lt;br /&gt;
===Comptes bilan===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|en France : comptes 1, 2, 3, 4, 5]])&lt;br /&gt;
&lt;br /&gt;
Dans OpenFlyers, on ne met dans les comptes de bilan que les comptes qui ne sont ni des comptes de trésorerie, ni des comptes clients, ni des comptes fournisseurs&lt;br /&gt;
&lt;br /&gt;
====[[#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]====&lt;br /&gt;
*Compte 110000&lt;br /&gt;
&lt;br /&gt;
==[[Écritures comptables|Les écritures comptables]]==&lt;br /&gt;
==Comptabilités multiples==&lt;br /&gt;
Dans le cas ou des entreprises ou associations mettent en commun des ressources qu'ils gèrent conjointement sur une même plateforme OpenFlyers, il est possible de mettre en place des comptabilités distinctes pour chaque entité.&lt;br /&gt;
&lt;br /&gt;
===Facturations automatiques entre entités comptables distinctes===&lt;br /&gt;
Dans le cas où chaque utilisateur dispose d'un compte unique dans une seule des entités, alors l'utilisateur est facturé dans la comptabilité de son entité d'appartenance quelque soit la ressource utilisée.&lt;br /&gt;
&lt;br /&gt;
Si la ressource utilisée appartient à une autre entité que celle à laquelle l'utilisateur est client alors il est possible de mettre en place des facturations automatiques entre les entités mises en jeu et cela dans chacune des comptabilités.&lt;br /&gt;
&lt;br /&gt;
Exemple avec 2 entités A et B, un utilisateur U client de l'entité A et une ressource R appartenant à l'entité B. On considère que l'utilisateur U utilise la ressource R.&lt;br /&gt;
*L'utilisateur U sera débité sur son compte client de l'entité A et la contrepartie ira sur un compte produit de cette entité :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité A'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client Utilisateur U||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte produit Ressource R||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Mais comme la ressource R appartient à l'entité B, alors l'entité B va enregistrer automatiquement une écriture de débit sur le compte client A et la contrepartie ira sur un compte produit de l'entité B :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité B'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client Entité A||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte produit Ressource R||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Parallèlement, l'entité A, enregistre également le fait qu'elle est facturée par le fournisseur entité B :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité A'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte charge Ressource R||||X €&lt;br /&gt;
|-&lt;br /&gt;
|Compte fournisseur Entité B||X €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Principes comptables généraux=&lt;br /&gt;
==Règles de saisies de la comptabilité courante==&lt;br /&gt;
Ces règles s'incrivent dans le cadre du workflow proposé par OpenFlyers.&lt;br /&gt;
#La facturation client et les encaissements clients sont normalement saisies au jour le jour soit par les utilisateurs soit par des gestionnaires&lt;br /&gt;
#Il faut saisir les factures fournisseurs au vu des factures&lt;br /&gt;
#Nous recommandons de saisir les écritures bancaires au vu du relevé de banque et en utilisant la date d'enregistrement indiquée sur le relevé de banque. Cette forme de saisie vaut alors pointage.&lt;br /&gt;
Le principe est normalement de saisir les paiements et les encaissements à la vue des chèques, bordereaux, etc. puis ensuite de vérifier que l'on tombe juste avec la banque. Mais il est plus simple de saisir les écritures bancaires au vu du relevé : cela permet d'être tout de suite juste avec la banque. Cette façon de procéder ne peut s'appliquer que si on limite le paiement par chèque qui ne permet pas de maitriser la date d'encaissement par le fournisseur. Il faut ainsi privilégier les paiements par carte bancaire ou par virement qui permettent une prise en compte immédiate ou quasiment immédiate de la part de la banque et évitent ainsi les problèmes de &amp;quot;chèque dans la nature&amp;quot; car non encaissés par le fournisseur.&lt;br /&gt;
En procédant ainsi, les vérifications s'en trouvent simplifiées.&lt;br /&gt;
&lt;br /&gt;
==Traçabilité des écritures==&lt;br /&gt;
Afin d'assurer la traçabilité des écritures comptables, il n'est pas possible d'effacer une écriture comptable validée. Cela permet de garantir la confiance entre les parties prenantes (utilisateurs, gestionnaires et OpenFlyers). Par contre, il est toujours possible d'annuler l'effet d'une écriture en saisissant un flux opposé. (cf. procédure pour [[Use_Accounting3#Annuler_l.27effet_d.27une_.C3.A9criture_comptable|OpenFlyers version 3]] et [[Use_Accounting4#Annuler_l.27effet_d.27une_.C3.A9criture_comptable|OpenFlyers version 4]]).&lt;br /&gt;
&lt;br /&gt;
==Vérifications sur la comptabilité courante==&lt;br /&gt;
En respectant les [[#R.C3.A8gles_de_saisies_de_la_comptabilit.C3.A9_courante|recommandations de saisie d'OpenFlyers de la comptabilité courante]], les éléments à vérifiés sont les suivants :&lt;br /&gt;
#On vérifie que l'on tombe juste sur le solde du compte bancaire : le solde du compte bancaire sur la plateforme OpenFlyers doit correspondre au solde présent sur le relevé de banque à la même date. Si une erreur apparait, on procède par dychotomie pour identifier à partir de quelle date, les soldes sont différents et ainsi retrouver l'écriture en défaut. C'est seulement une fois que ce travail est effectué, que l'on peut passer à l'étape suivante.&lt;br /&gt;
#On vérifie que les comptes fournisseurs sont tous à 0 et lorsqu'ils ne sont pas à 0, on doit être capable de dire pourquoi (facture non payée par exemple). En effet, on peut être juste au niveau de la banque sans que pour autant le compte fournisseur débité soit le bon.&lt;br /&gt;
#Il reste alors à contrôler le chiffre d'affaire. Pour cette vérification le plus simple est de vérifier que le chiffre d'affaire correspond au volume de l'activité multiplié par le prix unitaire. Dans certains cas, cette vérification n'est pas aisée (changements de tarifs en cours d'année par exemple). Il faut donc scinder le volume en autant de composantes qu'il peut y avoir de tarifs.&lt;br /&gt;
&lt;br /&gt;
=Quelques conseils généraux=&lt;br /&gt;
==[[Bien débuter avec OpenFlyers#Passer_en_production|Passer en production sur la saisie des vols dans OpenFlyers]]==&lt;br /&gt;
&lt;br /&gt;
==[[Bien débuter avec OpenFlyers#Workflow|Mettre en place un workflow]]==&lt;br /&gt;
&lt;br /&gt;
==Gestion comptable de cas particuliers==&lt;br /&gt;
===Débiter les vols mécaniques===&lt;br /&gt;
Les vols mécaniques sont une charge pour une structure. La structure peut être tentée de ne pas faire apparaitre cette charge dans sa comptabilité car il n'y a personne à facturer. Cependant OpenFlyers recommande de facturer les vols mécaniques au même tarif que autres vols pour plusieurs raisons :&lt;br /&gt;
*Cela permet de suivre d'une manière comptable le coût de la mécanique (et notamment sa partie &amp;quot;vols&amp;quot;) et éventuellement de détecter des dérives. C'est aussi utile lorsque l'on veut calculer le prix de revient d'une ressource.&lt;br /&gt;
*Cela permet de contrôler plus facilement le chiffre d'affaire de la structure puisque le produit reste proportionnel aux heures de vol.&lt;br /&gt;
*L'impact sur le résultat est nul puisque la charge est égale au produit. De ce fait cela n'a pas de conséquence fiscale pour les structures soumises à l'impôt sur les sociétés ou à la TVA.&lt;br /&gt;
*Seul le rapport du résultat par rapport au chiffre d'affaire est très légèrement modifié.&lt;br /&gt;
Par contre la facturation d'un vol mécanique s'effectue en débitant un compte de charge au lieu d'un compte client. Ainsi, c'est neutre pour les utilisateurs.&lt;br /&gt;
&lt;br /&gt;
===TVA sur les ventes à soi-même===&lt;br /&gt;
Lorsque vous faites de la vente à vous-même vous devez calculer la TVA correspondante. Cette opération est neutre car vous déduisez aussi la TVA déductible pour le même montant.&lt;br /&gt;
&lt;br /&gt;
===Saisie des salaires===&lt;br /&gt;
Nous recommandons de dissocier les salaires en 2 parties :&lt;br /&gt;
*Le salaire net versé au salarié qui fait l'objet d'un mouvement qui crédite le compte &amp;quot;fournisseur&amp;quot; du salarié (401MARTIN pour M. MARTIN) et débite le compte de charge ''Rémunérations brutes'' (641100)&lt;br /&gt;
*Les taxes sur les salaires regroupées en un seul mouvement qui crédite le compte &amp;quot;fournisseur&amp;quot; URSSAF (431000) et débite le compte de charges ''Cotisations à l'URSSAF'' (645100)&lt;br /&gt;
Nous recommandons de saisir ces écritures récurrentes en tant que facture fournisseur (cf. procédure pour la [[Use_Accounting3#Saisie_des_factures_fournisseurs|version 3]] et la [[Use_Accounting4#Saisie_des_factures_fournisseurs|version 4]]). Cela permet d'enregistrer la ventilation des mouvements et ensuite de simplifier cette saisie.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du chiffre d'affaire==&lt;br /&gt;
Le contrôle du chiffre d'affaire est une opération que devrait faire les personnes en charge de la validation des comptes.&lt;br /&gt;
&lt;br /&gt;
Contrôler le chiffre d'affaire c'est vérifier que ce que l'on a fabriqué à bien était facturé (ou stocké).&lt;br /&gt;
&lt;br /&gt;
Dans le cas des vols, il n'y a pas de stock possible. Donc le contrôle du chiffre d'affaire est très simple : on prend le nombre d'heures de vol faite par un avion et on multiplie par son coÃ»t horaire. On vérifie alors que le CA lié à cet avion correspond avec l'ensemble facturé qui apparait dans les comptes produits.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
*L'avion UE a fait 300 heures de vols en 2008.&lt;br /&gt;
*Le prix de l'heure de vol est de 100 €.&lt;br /&gt;
*Le chiffre d'affaire lié à l'avion est alors de 300*100 = 30 000 €.&lt;br /&gt;
*Le compte produit de l'avion doit donc faire apparaître exactement un solde de 30 000 €.&lt;br /&gt;
&lt;br /&gt;
Il faut tenir compte des changements tarifaires intervenus durant l'année. Le trésorier devrait donc fournir un état des heures de vol sur chacune des périodes tarifaires de l'année. D'où l'utilité d'effectuer les changements de tarifaire au 1er d'un mois : les états sont plus faciles à créer.&lt;br /&gt;
&lt;br /&gt;
Il faut également tenir compte des différents tarifs (double commande, baptêmes de l'air, etc.)&lt;br /&gt;
&lt;br /&gt;
Ainsi, le trésorier ou le secrétaire devrait communiquer un tableau pour chaque avion (ou chaque type avion) avec une ligne par type de vol (impliquant un tarif différent) et une colonne par date d'application du tarif.&lt;br /&gt;
&lt;br /&gt;
Un autre tableau devrait comporter la ventilation des heures en fonction des mêmes éléments.&lt;br /&gt;
&lt;br /&gt;
Il suffit alors de multiplier les cellules du premier tableau avec celles du second tableau puis d'additionner le tout : on obtient le chiffre d'affaire de l'avion (que l'on doit comparer avec le chiffre d'affaire effectivement facturé).&lt;br /&gt;
&lt;br /&gt;
==Messages d'alertes==&lt;br /&gt;
Nous recommandons comme bonne pratique d'attirer l'attention des utilisateurs autorisés à valider les vols ou les écritures comptables que '''tout message d'alerte apparaissant dans l'espace d'administration doit conduire à stopper la validation des écritures''' dans l'attente de la résolution du problème par l'administrateur.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14179</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14179"/>
				<updated>2016-04-19T14:07:39Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Présentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2013-OF4-launch.gif|right|link=OF_doc4-fr:Montée-de-version]]&lt;br /&gt;
&lt;br /&gt;
Bienvenue sur la documentation de la '''version 1''' d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Cette version est obsolète. Les versions en vigueurs sont les versions 3 et 4.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez retrouver leur documentation sur les pages suivantes :&lt;br /&gt;
*[[OF_doc3-fr:Accueil|Documentation OpenFlyers version 3]]&lt;br /&gt;
*[[OF_doc4-fr:Accueil|Documentation OpenFlyers version 4]]&lt;br /&gt;
&lt;br /&gt;
You can also access to our [[OF_doc-en:Main-Page2|english documentation]].&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
*[[FAQ client|FAQ clients]]&lt;br /&gt;
*[[FAQ utilisateur|FAQ utilisateur]]&lt;br /&gt;
*[[FAQ administrateur 2.0|FAQ administrateur version 2.0]]&lt;br /&gt;
*[[FAQ administrateur|FAQ administrateur]]&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité]]&lt;br /&gt;
*[[FAQ export]]&lt;br /&gt;
*[[FAQ AeroBox]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Administrateurs=&lt;br /&gt;
*[[Documentation administrateur|Documentation administrateur]]&lt;br /&gt;
*[[Liste de diffusion|Gérer une liste de diffusion sur OpenFlyers]]&lt;br /&gt;
*[[Formules de calcul|Formules de calcul]]&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
*[[Use-Accounting2.1|Utilisation de la comptabilité sur version 2.1]]&lt;br /&gt;
&lt;br /&gt;
===Facturation client===&lt;br /&gt;
*[[Gestion des ventes|Gestion des ventes version]]&lt;br /&gt;
&lt;br /&gt;
===FAQ comptabilité===&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité version]]&lt;br /&gt;
&lt;br /&gt;
==Maintenance==&lt;br /&gt;
*[[Maintenance aéronautique|Maintenance aéronautique]]&lt;br /&gt;
*[[Suivi de navigabilité|Suivi de la navigabilité]]&lt;br /&gt;
&lt;br /&gt;
===Requêtes permettant de générer des rapports===&lt;br /&gt;
*[[OF_doc-en::Export generator 2.0|Génération d'export version 2.0]]&lt;br /&gt;
*[[OF_doc-en::Export generator 2.1|Génération d'export version]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Utilisateurs=&lt;br /&gt;
*[[Documentation utilisateur 2.0|Documentation utilisateur version 2.0]]&lt;br /&gt;
*[[Documentation utilisateur|Documentation utilisateur]]&lt;br /&gt;
&lt;br /&gt;
=[[OF_wiki:|Documentation Webmasters et Développeurs]]=&lt;br /&gt;
&lt;br /&gt;
=[[BTS|Rapporter des bugs]]=&lt;br /&gt;
&lt;br /&gt;
=[[Trucs et astuces|Trucs et astuces]]=&lt;br /&gt;
==[[Kiosque PC|Mettre en place un PC kiosque]]==&lt;br /&gt;
==[[Réseau Internet hybride|Mettre en place un réseau internet hybride]]==&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14178</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14178"/>
				<updated>2016-04-19T14:07:03Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2013-OF4-launch.gif|right|link=OF_doc4-fr:Montée-de-version]]&lt;br /&gt;
&lt;br /&gt;
Bienvenue sur la documentation de la '''version 1''' d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Cette version est obsolète. Les versions en vigueurs sont les versions 3 et 4.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez retrouver leur documentation sur les pages suivantes :&lt;br /&gt;
*[[OF_doc3-fr:Accueil|Documentation OpenFlyers version 3]]&lt;br /&gt;
*[[OF_doc4-fr:Accueil|Documentation OpenFlyers version 4]]&lt;br /&gt;
&lt;br /&gt;
You can also access to our [[OF_doc-en:Main-Page2|english documentation]].&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
*[[Technologies de géolocalisation pour aéronautique|Technologies de géolocalisation pour aéronautique]]&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
*[[FAQ client|FAQ clients]]&lt;br /&gt;
*[[FAQ utilisateur|FAQ utilisateur]]&lt;br /&gt;
*[[FAQ administrateur 2.0|FAQ administrateur version 2.0]]&lt;br /&gt;
*[[FAQ administrateur|FAQ administrateur]]&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité]]&lt;br /&gt;
*[[FAQ export]]&lt;br /&gt;
*[[FAQ AeroBox]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Administrateurs=&lt;br /&gt;
*[[Documentation administrateur|Documentation administrateur]]&lt;br /&gt;
*[[Liste de diffusion|Gérer une liste de diffusion sur OpenFlyers]]&lt;br /&gt;
*[[Formules de calcul|Formules de calcul]]&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
*[[Use-Accounting2.1|Utilisation de la comptabilité sur version 2.1]]&lt;br /&gt;
&lt;br /&gt;
===Facturation client===&lt;br /&gt;
*[[Gestion des ventes|Gestion des ventes version]]&lt;br /&gt;
&lt;br /&gt;
===FAQ comptabilité===&lt;br /&gt;
*[[FAQ comptabilité|FAQ comptabilité version]]&lt;br /&gt;
&lt;br /&gt;
==Maintenance==&lt;br /&gt;
*[[Maintenance aéronautique|Maintenance aéronautique]]&lt;br /&gt;
*[[Suivi de navigabilité|Suivi de la navigabilité]]&lt;br /&gt;
&lt;br /&gt;
===Requêtes permettant de générer des rapports===&lt;br /&gt;
*[[OF_doc-en::Export generator 2.0|Génération d'export version 2.0]]&lt;br /&gt;
*[[OF_doc-en::Export generator 2.1|Génération d'export version]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Utilisateurs=&lt;br /&gt;
*[[Documentation utilisateur 2.0|Documentation utilisateur version 2.0]]&lt;br /&gt;
*[[Documentation utilisateur|Documentation utilisateur]]&lt;br /&gt;
&lt;br /&gt;
=[[OF_wiki:|Documentation Webmasters et Développeurs]]=&lt;br /&gt;
&lt;br /&gt;
=[[BTS|Rapporter des bugs]]=&lt;br /&gt;
&lt;br /&gt;
=[[Trucs et astuces|Trucs et astuces]]=&lt;br /&gt;
==[[Kiosque PC|Mettre en place un PC kiosque]]==&lt;br /&gt;
==[[Réseau Internet hybride|Mettre en place un réseau internet hybride]]==&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=MediaWiki:Sidebar&amp;diff=14087</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=MediaWiki:Sidebar&amp;diff=14087"/>
				<updated>2016-03-03T08:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*Documentations&lt;br /&gt;
**OF_doc1-fr:Accueil|OpenFlyers 1&lt;br /&gt;
**OF_doc2-fr:Accueil|OpenFlyers 2&lt;br /&gt;
**OF_doc3-fr:Accueil|OpenFlyers 3&lt;br /&gt;
**OF_doc4-fr:Accueil|OpenFlyers 4&lt;br /&gt;
*navigation&lt;br /&gt;
**mainpage|mainpage&lt;br /&gt;
**Special:RecentChanges|Changements récents&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14086</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Accueil&amp;diff=14086"/>
				<updated>2016-03-02T18:03:53Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:2013-OF4-launch.gif|right|link=Upgrade4]]&lt;br /&gt;
&amp;lt;p style=&amp;quot;float: right&amp;quot; &amp;gt;[[OF_doc4-fr:Upgrade4|Découvrir OpenFlyers 4]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bienvenue sur la documentation de la '''version 1''' d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Cette version est obsolète. Les versions en vigueurs sont les versions 3 et 4.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez retrouver leur documentation sur les pages suivantes :&lt;br /&gt;
*[[OF_doc3-fr:Accueil|Documentation OpenFlyers version 3]]&lt;br /&gt;
*[[OF_doc4-fr:Accueil|Documentation OpenFlyers version 4]]&lt;br /&gt;
&lt;br /&gt;
=FAQ=&lt;br /&gt;
*[[FAQ client|FAQ clients]]&lt;br /&gt;
*[[FAQ user2.1|FAQ utilisateur version 2.1]]&lt;br /&gt;
*[[FAQ admin2.0|FAQ administrateur version 2.0]]&lt;br /&gt;
*[[FAQ admin2.1|FAQ administrateur version 2.1]]&lt;br /&gt;
*[[FAQ accounting2.1|FAQ comptabilité version 2.1]]&lt;br /&gt;
*[[FAQ export]]&lt;br /&gt;
*[[FAQ AeroBox]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Administrateurs=&lt;br /&gt;
*[[adminDoc2.1|Documentation administrateur version 2.1]]&lt;br /&gt;
*[[Liste de diffusion|Gérer une liste de diffusion sur OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
*[[Use-Accounting2.1|Utilisation de la comptabilité sur version 2.1]]&lt;br /&gt;
&lt;br /&gt;
===Facturation client===&lt;br /&gt;
*[[admin-sale-manager2.1|Gestionnaire des ventes version 2.1]]&lt;br /&gt;
&lt;br /&gt;
===FAQ comptabilité===&lt;br /&gt;
*[[FAQ accounting2.1|FAQ comptabilité version 2.1]]&lt;br /&gt;
&lt;br /&gt;
==Maintenance==&lt;br /&gt;
*[[MRO|Généralités sur la maintenance]]&lt;br /&gt;
*[[MRO2.1|Suivi de la navigabilité version 2.1]]&lt;br /&gt;
&lt;br /&gt;
===Requêtes permettant de générer des rapports===&lt;br /&gt;
*[[OF_doc-en::Export generator 2.0|Génération d'export version 2.0]]&lt;br /&gt;
*[[OF_doc-en::Export generator 2.1|Génération d'export version 2.1]]&lt;br /&gt;
&lt;br /&gt;
=Documentation Utilisateurs=&lt;br /&gt;
*[[userDoc2.0|Documentation utilisateur version 2.0]]&lt;br /&gt;
*[[userDoc2.1|Documentation utilisateur version 2.1]]&lt;br /&gt;
&lt;br /&gt;
=[[OF_wiki:|Documentation Webmasters et Développeurs]]=&lt;br /&gt;
&lt;br /&gt;
=[[BTS|Rapporter des bugs]]=&lt;br /&gt;
&lt;br /&gt;
=[[Trucs et astuces|Trucs et astuces]]=&lt;br /&gt;
==[[Kiosque PC|Mettre en place un PC kiosque]]==&lt;br /&gt;
==[[Réseau Internet hybride|Mettre en place un réseau internet hybride]]==&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=14065</id>
		<title>Modèle commercial et compte client OpenFlyers</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=14065"/>
				<updated>2016-02-29T10:07:09Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Remplacer une ressource par une autre dans son abonnement OpenFlyers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Définitions=&lt;br /&gt;
==Plateforme de démonstration==&lt;br /&gt;
Les plateformes de démonstration sont accessibles au public et servent de bac à sable.&lt;br /&gt;
&lt;br /&gt;
Le sous-domaine de l'URL des plateformes de démonstration est ''demo'' ou commence par ''demo-''. Il existe également des plateformes de démonstration spécifiques dont le sous-domaine est différent.&lt;br /&gt;
&lt;br /&gt;
Elles sont réinitialisées toutes les heures à la minute 44.&lt;br /&gt;
==Plateforme en production==&lt;br /&gt;
Une plateforme est considérée en production lorsque l'abonnement pour l'année en cours a été payé.&lt;br /&gt;
&lt;br /&gt;
La phase de paramétrage qui précède le &amp;quot;passage en production&amp;quot; effectif s'effectue toujours sur une &amp;quot;plateforme en production&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Plateforme en test==&lt;br /&gt;
Les plateformes en test sont de 2 natures :&lt;br /&gt;
*Les plateformes créées par un utilisateur et qui ne sont pas [[#Plateforme_en_production|en production]];&lt;br /&gt;
*[[#Plateforme_suppl.C3.A9mentaire_de_test|Les plateformes supplémentaires de test]];&lt;br /&gt;
&lt;br /&gt;
=Le modèle commercial de la SARL OpenFlyers=&lt;br /&gt;
==Fonctionnement économique==&lt;br /&gt;
OpenFlyers fonctionne sur le modèle économique d'une ASP (=Application Service Provider) ou SaaS (= Software as a Service). On parle également de &amp;quot;cloud computing&amp;quot; (informatique dans les nuages). C'est-à-dire que nous fournissons un service applicatif par le biais d'internet pour lequel nous facturons un abonnement annuel.&lt;br /&gt;
&lt;br /&gt;
Les avantages de ce système pour les clients finaux sont les suivants :&lt;br /&gt;
*la maintenance logiciel est déportée et ne nécessite plus le déplacement d'un technicien. Cela permet également de mettre en œuvre plus rapidement des correctifs à la demande ;&lt;br /&gt;
*le coût des développements est mutualisé entre les différents clients ;&lt;br /&gt;
*nous assurons nous-mêmes la pérennité des données par sauvegardes journalières sur plusieurs serveurs en plusieurs lieux et cela sur 20 jours glissants.&lt;br /&gt;
&lt;br /&gt;
De plus, OpenFlyers existe en plusieurs versions dont certaines sont disponibles en téléchargement. Vous pouvez retrouver [http://wiki.openflyers.org/index.php?title=FAQ#May_I_install_OpenFlyers_on_my_own_server.3F plus d'infos sur notre support libre].&lt;br /&gt;
&lt;br /&gt;
==Arbitrage des demandes de développements==&lt;br /&gt;
Les demandes de développements pour avoir de nouvelles fonctionnalités sont infinies. Au début de son existence OpenFlyers devait arbitrer entre les demandes des différents clients. Pour cela, l'équipe de développement OpenFlyers tenait compte de la taille d'un client ou d'un prospect pour arbitrer les différentes demandes et du potentiel impact qui pouvait en résulter sur le chiffre d'affaire au travers des nouveaux clients qui pouvaient se décider à passer à OpenFlyers du fait de l'existence de telle ou telle fonctionnalité. Ces demandes étant nombreuses, les demandes non retenues étaient nombreuses et cela pouvait conduire à &amp;quot;vexer&amp;quot; un client qui pouvait considérer que sa demande non retenue ou mise en attente était plus pertinente qu'une autre demande retenue.&lt;br /&gt;
&lt;br /&gt;
Afin de ne plus être juge et parti, OpenFlyers a remis au goût du jour le [[Wikipedia-fr:Suffrage_censitaire|vote censitaire]] au travers des heures de bonus développement. Ainsi, les conditions générales d'OpenFlyers donne la possibilité aux clients de choisir eux-mêmes les développements qui leur seront le plus profitable. Le fonctionnement est le suivant :&lt;br /&gt;
*Tout client désireux de voir développer une nouvelle fonctionnalité peut faire '''une unique demande''' de devis développement '''par an'''. Cette demande doit être effectuée par e-mail en précisant le nom de la structure aéronautique cliente.&lt;br /&gt;
*En fonction du coût en heures de développement, ce développement peut être financé par les heures de bonus développement dont bénéficie chaque client. Plusieurs clients peuvent mutualiser leurs heures de bonus de développement. Les développements peuvent être également financés en partie ou en totalité par une facturation spécifique dans le cas où le bonus développement ne permet pas de couvrir l'intégralité du coût en heures.&lt;br /&gt;
*A l'issue d'une demande de devis, un client peut demander un nouveau devis à condition qu'il ait accepté le 1er devis. Le but est de limiter le temps consacré par l'équipe OpenFlyers à effectuer des devis.&lt;br /&gt;
Nous mutualisons les développements : tous nos développements sont intégrés au sein de l'unique version en cours de développement. Ainsi, tous les clients bénéficient des demandes de chacun d'entre-eux.&lt;br /&gt;
*Les développements &amp;quot;votés&amp;quot; sont triés par ordre d'arrivé sauf pour ceux dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
Enfin, les clients peuvent, avant d'effectuer une demande de devis par e-mail, faire part de leur demande sur le [http://support-fr.openflyers.com/ forum] dans la partie '''Evolutions et Adaptations''' en vérifiant qu'elle n'existe pas déjà. C'est aussi un moyen pour le demandeur d'inviter d'autres clients à s'associer à leur demande en mutualisant leurs heures de bonus développement.&lt;br /&gt;
&lt;br /&gt;
==Bonus assistance/développement==&lt;br /&gt;
Chaque client dispose en fonction de son abonnement d'un quota d'heures de bonus qui peuvent être utilisées comme assistance ou comme développement (cf. [[#Arbitrage_des_demandes_de_d.C3.A9veloppements|Arbitrage des demandes de développements]]).&lt;br /&gt;
&lt;br /&gt;
L'assistance permet de couvrir une demande de support téléphonique ou une demande d'intervention sur la plateforme.&lt;br /&gt;
&lt;br /&gt;
Pour utiliser les heures de bonus, il faut :&lt;br /&gt;
*Faire une demande par e-mail d'intervention ou de support.&lt;br /&gt;
''Nous répondons en indiquant le temps à prévoir/déduire des heures de bonus''&lt;br /&gt;
*Confirmer sa demande par retour d'e-mail&lt;br /&gt;
&lt;br /&gt;
Les demandes sont triées par ordre d'arrivé sauf pour celles dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
A noter que les heures non utilisées dans l'année sont perdues (cf. les [https://openflyers.com/fr/entreprise/conditions-generales conditions générales de vente]).&lt;br /&gt;
&lt;br /&gt;
Il n'existe pas à ce jour d'interface permettant de suivre les heures déjà utilisées. Il est néanmoins possible d'en obtenir le suivi sur simple demande par e-mail.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
Attention, il ne faut pas confondre son compte client OpenFlyers qui permet d'accéder à sa fiche client OpenFlyers et qui permet de renouveler son abonnement OpenFlyers avec son identifiant personnel permettant d'accéder à sa plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
==Accéder à son compte client OpenFlyers==&lt;br /&gt;
Aller sur [https://client.openflyers.com l'espace client] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'identifiant permettant d'accéder à votre compte client correspond au sous-domaine de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Par exemple, si votre plateforme est référencée par l'adresse :&lt;br /&gt;
 http://mermoz.openflyers.fr&lt;br /&gt;
&lt;br /&gt;
Alors le sous-domaine est '''mermoz'''.&lt;br /&gt;
&lt;br /&gt;
C'est donc '''mermoz''' qu'il faut utiliser comme identifiant pour vous connecter au .&lt;br /&gt;
&lt;br /&gt;
Si vous n'avez pas le mot de passe, vous pouvez le réactiver avec la fonction '''Mot de passe oublié ?''' qui est sur la page d'identification.&lt;br /&gt;
&lt;br /&gt;
Une adresse e-mail vous sera demandée. Vous pourrez saisir l'adresse e-mail de la structure aéronautique ou celle du contact qui ont été saisies dans la fiche client (il s'agit des adresses e-mails sur lesquelles sont envoyées nos e-mails d'alerte de renouvellement ou d'information).&lt;br /&gt;
&lt;br /&gt;
Dans le but de ne pas être submergés par les demandes, nous facturons la ré-initialisation manuelle, par nos soins, du mot de passe ou la mise à jour des adresses e-mails présentes sur la fiche client pour les abonnement First Price (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Changer de responsable en charge d'OpenFlyers==&lt;br /&gt;
Lorsqu'il y a un changement de responsable en charge d'OpenFlyers, pour que la passation se passe dans les meilleures conditions, il faut penser à effectuer les 3 changements suivants :&lt;br /&gt;
*Attribuer un profil d'administrateur de la plateforme OpenFlyers au niveau de la plateforme (procédure pour intervenir sur la fiche utilisateur pour la [[User-management3#Modifier_un_utilisateur|version 3]] ou la [[User-management4#Acc.C3.A9der_.C3.A0_l.27interface_de_gestion_des_utilisateurs|version 4]])&lt;br /&gt;
*Mettre à jour le champ du responsable OpenFlyers au niveau de la plateforme (procédure pour la [[AdminDoc3#Responsable_OpenFlyers|version 3]] et la [[AdminDoc4#Responsable_OpenFlyers|version 4]]).&lt;br /&gt;
*Mettre à jour le nom du responsable OpenFlyers au niveau de la fiche client en effectuant la procédure suivante :&lt;br /&gt;
**[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client OpenFlyers]]&lt;br /&gt;
**Aller dans '''Fiche contact'''&lt;br /&gt;
**Mettre à jour la fiche&lt;br /&gt;
**Cliquer sur le bouton '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Dans le cas où la passation ne peut pas se faire ainsi car l'ancien responsable OpenFlyers ne peut pas effectuer ces opérations ou transmettre les couples (identifiants, mots de passe) au nouveau responsable pour qu'il effectue ces opérations, vous pouvez nous demandez, uniquement par e-mail, d'effectuer ces changements de responsable OpenFlyers, en joignant à l'e-mail :&lt;br /&gt;
*Un courrier signé du responsable de la structure (gérant, président, etc.) contenant la demande de mise à jour du responsable OpenFlyers désigné et indiquant explicitement le nom du nouveau responsable avec son adresse e-mail&lt;br /&gt;
*Une copie d'un document officiel (extrait K-BIS, procès-verbal d'assemblée générale, etc.) permettant de prouver la qualité du responsable de la structure.&lt;br /&gt;
Le courrier scanné n'est pas nécessaire dans le cas où le nouveau responsable OpenFlyers apparait sur l'extrait K-BIS.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' dans le cas d'une société, le responsable de la structure doit détenir plus de la moitié des parts dans la société. Dans le cas où il y a cogérance, alors il faut que le courrier soit signé de l'ensemble des responsables de sorte à représenter plus de la moitié des parts de la société.&lt;br /&gt;
&lt;br /&gt;
==Mettre à jour sa fiche client==&lt;br /&gt;
*[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client]]&lt;br /&gt;
*Cliquer sur le menu '''Fiche contact'''&lt;br /&gt;
*Mettre à jour le contenu des champs concernés&lt;br /&gt;
*Cliquer sur le bouton valider&lt;br /&gt;
''Conseil OpenFlyers :'' Il est fortement recommandé d'avoir 2 adresses e-mails différentes pour les champs '''E-mail client''' et '''E-mail contact'''&lt;br /&gt;
&lt;br /&gt;
==Migrer vers une nouvelle version OpenFlyers==&lt;br /&gt;
Chez OpenFlyers, nous parlons de migration vers une nouvelle version lorsqu'il s'agit de mettre à jour une plateforme d'une version X vers une version Y incluant des changements majeurs.&lt;br /&gt;
&lt;br /&gt;
Par contre, il existe les mises à jours. Les mises à jour ne changent pas le numéro de version principal (exemple : 3.2 ou 3.5 correspondent à la même version principale). OpenFlyers effectue ces mises à jour automatiquement. Leur objectif est de corriger des bugs ou de rajouter de nouvelles fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
Hormis pour les abonnements Première, qui disposent d'une plateforme avec une version gelée et indépendante d'OpenFlyers, toutes les autres plateformes OpenFlyers sont sur un moteur commun qui est mis à jour de façon transparente plusieurs fois par semaine, voir même par jour.&lt;br /&gt;
&lt;br /&gt;
Nous ne présentons ci-dessous que les migrations &amp;quot;majeurs&amp;quot; qui peuvent impliquer des opérations de nettoyage manuel post-migration.&lt;br /&gt;
&lt;br /&gt;
===Coût d'une migration===&lt;br /&gt;
Lorsque vous êtes en production sur une version X d'OpenFlyers, vous pouvez demander à migrer vers la dernière version stable proposée aux nouveaux clients ou même vers la dernière version en développement dénommée &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; (par exemple &amp;quot;version 3.0alpha&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Les migrations sont incluses dans le support des abonnement Business, Première et Corporate.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un abonnement First Price, la migration est facturée 50 € HT sauf dans le cas d'une migration vers une version alpha ou beta ou depuis vers une version alpha ou beta vers la version stable suivante. Exemple de migrations offertes en abonnement First Price :&lt;br /&gt;
*Migration depuis la version 3.0alpha vers la version 3&lt;br /&gt;
*Migration depuis la version 3.5 vers la version 4.0alpha&lt;br /&gt;
*Migration depuis la version 4.0alpha vers la version 4&lt;br /&gt;
&lt;br /&gt;
Enfin, dans le cas où la plateforme bénéficiait d'un ancien tarif, le fait de migrer implique le passage au tarif en vigueur au moment de la migration et à l'acquittement de la différence de tarif par rapport à l'ancien tarif.&lt;br /&gt;
&lt;br /&gt;
===Déroulement d'une migration===&lt;br /&gt;
#Il faut avoir pris connaissance des [[#Cons.C3.A9quences_d.27une_migration|conséquences d'une migration]] et accepter le fait qu'elle est irréversible&lt;br /&gt;
#Il faut éventuellement créer la ou les factures selon l'abonnement déjà souscrit et l'abonnement souhaité (cf. [[#Co.C3.BBt_d.27une_migration|Coût d'une migration]] en [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|se connectant sur l'espace client]].&lt;br /&gt;
#Il faut payer les factures correspondantes ainsi créées.&lt;br /&gt;
#Il faut en faire la demande par e-mail et précisant la date avant laquelle vous ne souhaitez pas qu'on effectue de migration. Il n'est pas possible de programmer une date pour une migration : cela se fait en fonction de la synchronisation des disponibilités des différents collaborateurs d'OpenFlyers qui doivent intervenir à tour de rôle.&lt;br /&gt;
#Nous créons alors les factures liées à la migration, à la différence de tarif et au forfait paramétrage selon votre abonnement et les options souscrites (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
#Vous payez.&lt;br /&gt;
#Nous procédons alors à cette migration et nous fournissons une URL de substitution pendant une semaine pour palier les problèmes de cache DNS. Lors de la migration l'interruption de service est seulement de quelques minutes. Elle est donc transparente pour la quasi totalité des utilisateurs.&lt;br /&gt;
#Selon ce qui a été convenu nous effectuons ou le client effectue [[Upgrade3|le nettoyage lié au passage à la version 3]].&lt;br /&gt;
#Si vous avez souscrit au forfait paramétrage ou qu'il est inclut dans votre abonnement, nous vous envoyons un questionnaire pour le paramétrage. Cf. [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|Forfait paramétrage]]&lt;br /&gt;
&lt;br /&gt;
===Conséquences d'une migration===&lt;br /&gt;
*Toute migration est irréversible : nous ne créons pas de script permettant de revenir vers une version antérieure. En effet, nous effectuons des migrations &amp;quot;cachées&amp;quot; plusieurs fois par semaine qui constituent des corrections de bugs ou l'ajout de nouvelles fonctionnalités. De ce fait, notre exploitation est organisée pour pouvoir palier à un défaut apparaissant à l'issue d'une migration tout comme elle est organisée pour faire face à l'apparition d'un nouveau bug lors d'une mise à jour transparente.&lt;br /&gt;
*Attention notamment à une migration vers une version &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; : en effet, une migration vers cette version implique que vous acceptiez de fonctionner sur une version qui évolue sans cesse. Outre les corrections de bugs, nous rajoutons sur la version beta régulièrement des fonctionnalités qui peuvent créer de nouvelles anomalies. Bien entendu, nous faisons le nécessaire dès que nous avons connaissance d'un problème (notamment par le [http://bts.openflyers.org BTS] pour résoudre les défauts. C'est d'ailleurs grâce aux clients volontaires pour fonctionner sur la version beta que nous pouvons faire évoluer le produit.&lt;br /&gt;
&lt;br /&gt;
==Ajouter une ressource à son abonnement OpenFlyers==&lt;br /&gt;
L'abonnement OpenFlyers est calculé en fonction du nombre de ressources. Le nombre est déterminé pour l'année civile complète.&lt;br /&gt;
&lt;br /&gt;
Si vous voulez rajouter une ressource en cours d'année, alors vous devez [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|vous connecter sur l'espace client OpenFlyers]] et créer une facture d'ajout de ressource en indiquant le nombre de ressources supplémentaires. Le tarif appliqué sera alors celui de l'année complète.&lt;br /&gt;
&lt;br /&gt;
Une fois le paiement de la facture correspondante acquitté, il sera possible d'intervenir sur la plateforme concernée pour rajouter la ressource. Il y alors 2 cas possible :&lt;br /&gt;
*C'est une ressource dont les tarifs correspondent à un type de ressource déjà présent sur la plateforme concernée. Dans ce cas, l'opération est relativement simple et nous conseillons de suivre soi-même la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]].&lt;br /&gt;
*C'est une ressource qui nécessite la création d'un nouveau type de ressource avec de nouveaux tarifs : dans ce cas, l'opération est plus complexe. Elle peut être effectuée de façon autonome en suivant la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]] et en procédant par comparaison avec les types de ressources existantes. Cependant, si vous souhaitez éviter tout risque d'erreur, nous recommandons de nous confier cette tâche en nous communiquant les éléments comme lors de la mise en place du paramétrage par nos soins à l'aide du questionnaire. Nous décomptons notre intervention des heures de bonus assistance/développement à hauteur d'une heure.&lt;br /&gt;
&lt;br /&gt;
===Créer une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#Ajouter_un_avion|Ajouter un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#Ajouter_un_a.C3.A9ronef|Ajouter un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#Ajouter_une_ressource|Ajouter une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#Ajouter_une_ressource|Ajouter une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Enlever une ressource à son abonnement OpenFlyers==&lt;br /&gt;
Si vous enlevez une ressource en cours d'année, il n'y a aucun changement d'abonnement puisque les ressources sont souscrites pour toute l'année.&lt;br /&gt;
&lt;br /&gt;
===Désactiver une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#D.C3.A9sactiver_un_avion|Désactiver un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#D.C3.A9sactiver_un_a.C3.A9ronef|Désactiver un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Remplacer une ressource par une autre dans son abonnement OpenFlyers==&lt;br /&gt;
S'il y a un remplacement de ressource, alors il n'y a pas besoin d'acquitter un nouvel abonnement pour la nouvelle ressource. Le remplacement doit se faire en 2 étapes :&lt;br /&gt;
#[[#Désactiver-une-ressource-sur-sa-plateforme-OpenFlyers|désactiver l'ancienne ressource]]&lt;br /&gt;
#[[#Créer-une-ressource-sur-sa-plateforme-OpenFlyers|activer la nouvelle ressource]]&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un remplacement temporaire, il peut être aussi simple de simplement renommer la ressource concernée (immatriculation par exemple). A noter que dans ce cas, les statistiques totaliseront l'activité des 2 ressources en 1 seule.&lt;br /&gt;
&lt;br /&gt;
Si vous ne souhaitez pas désactiver cette ressource, alors vous pouvez [[#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|créer une facture complémentaire d'abonnement pour une ressource supplémentaire]].&lt;br /&gt;
&lt;br /&gt;
==Renouveler son abonnement OpenFlyers==&lt;br /&gt;
Pour renouveler l'abonnement, il faut :&lt;br /&gt;
#[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter]] sur le compte client OpenFlyers&lt;br /&gt;
#Créer la facture en fonction du choix d'abonnement (vous trouverez plus d'informations dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire])&lt;br /&gt;
#Ensuite, payer soit :&lt;br /&gt;
#*par carte bancaire en cliquant sur le lien &amp;quot;paiement par carte bancaire&amp;quot; (le choix le plus pratique pour une prise en compte immédiate)&lt;br /&gt;
#*par transfert bancaire (dans ce cas, vous devez prendre en charge tous les frais liés à la transaction). Les coordonnées bancaires sont indiquées sur la facture.&lt;br /&gt;
#*par chèque (attention au délai d'acheminement du courrier)&lt;br /&gt;
&lt;br /&gt;
===Variation du nombre de ressources lors du renouvellement===&lt;br /&gt;
Lors du renouvellement, le nombre minimum de ressources proposées, dans l'interface de renouvellement de l'abonnement, correspond au nombre de ressources activées dans la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez augmenter le nombre de ressources pour l'année suivante, il suffit de modifier la valeur proposée par défaut.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez diminuer le nombre de ressources pour l'année suivante, il faut [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver des ressources dans la plateforme OpenFlyers]] afin que le nombre proposé par défaut diminue avant de créer la facture de renouvellement d'abonnement.&lt;br /&gt;
&lt;br /&gt;
==Plateforme supplémentaire de test==&lt;br /&gt;
Cette fonctionnalité, disponible pour les clients étant au moins sous la version 3.5 d'OpenFlyers, est utile dans le cas où vous souhaitez :&lt;br /&gt;
*effectuer des tests sur une recopie de la plateforme de démonstration.&lt;br /&gt;
*effectuer des tests sur une recopie de votre propre plateforme et ainsi modifier son paramétrage sur une version [[Wikipedia-fr:Sandbox_(sécurité_informatique)|sandbox]] sans impacter la version de production.&lt;br /&gt;
*essayer la version 4 d'OpenFlyers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Sandbox.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut :&lt;br /&gt;
*Se connecter sur son [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|compte client]]&lt;br /&gt;
*Aller dans le menu '''Plateforme'''&lt;br /&gt;
* Plusieurs choix sont proposés :&lt;br /&gt;
** Si vous êtes sous la version 3.5 :&lt;br /&gt;
*** '''De demo.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de la plateforme démo avec suppression du message d'accueil &amp;quot;La base de données cette plateforme de démonstration est réinitialisée toutes les heures, vers XX:45&amp;quot;.&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.of4.openflyers.fr''' : Permet de créer une plateforme d'essai sous la version 4 d'OpenFlyers en effectuant une recopie de votre plateforme existante puis en faisant une montée de version sur cette recopie&lt;br /&gt;
** Si vous êtes sous la version 3.5 ou supérieure :&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de votre plateforme existante&lt;br /&gt;
* Cliquer sur '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Si votre plateforme est référencée par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme de test se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.test.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme d'essai de la version 4 d'OpenFlyers se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.of4.openflyers.fr&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=FAQ-client&amp;diff=14064</id>
		<title>FAQ client</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=FAQ-client&amp;diff=14064"/>
				<updated>2016-02-29T10:05:09Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Comment remplacer une ressource par une autre ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Fonctionnement d'OpenFlyers=&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Fonctionnement_.C3.A9conomique|Fonctionnement économique]]==&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement applicatif==&lt;br /&gt;
Les composants logiciels utilisés pour développer notre applicatif sont tous open source (notamment PHP et MySQL).&lt;br /&gt;
&lt;br /&gt;
La version 2.0 du logiciel OpenFlyers, propriété de la S.A.R.L. OpenFlyers, est sous licence semi-libre : il peut être installé et utilisé pour les besoins propres d'une structure aéronautique mais il ne peut être commercialisé par une société tiers sans licence spécifique (même à la demande d'un seul client) ou déployé pour des filiales d'une structure commerciale ou non.&lt;br /&gt;
&lt;br /&gt;
Les versions ultérieures à la version 2.0 du logiciel OpenFlyers, sont commercialisées uniquement par le biais d'un abonnement auprès de la S.A.R.L. OpenFlyers qui en garde l'hébergement exclusif.&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Arbitrage_des_demandes_de_d.C3.A9veloppements#Financement_des_d.C3.A9veloppements|Nouveaux développements]]==&lt;br /&gt;
&lt;br /&gt;
==De quoi avons-nous besoin pour faire fonctionner OpenFlyers ?==&lt;br /&gt;
Il suffit de disposer d'un ordinateur avec un accès internet et d'un navigateur moderne tel que Google Chrome, Firefox, Internet Explorer, Opera ou Safari. Aucune installation particulière n'est nécessaire sur l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
=Les bases de données=&lt;br /&gt;
==Les données stockées sont-elles bien protégées ?==&lt;br /&gt;
Nous tâchons de mettre en œuvre les différentes recommandations concernant la gestion des serveurs afin d'empêcher toute intrusion.&lt;br /&gt;
&lt;br /&gt;
De plus, nous disposons de plusieurs serveurs répartis en plusieurs endroits de la planète.&lt;br /&gt;
&lt;br /&gt;
Chaque nuit, tous les serveurs sauvegardent leurs bases de données et les envoient à tous les autres serveurs.&lt;br /&gt;
&lt;br /&gt;
Ces sauvegardes sont stockées par roulement sur une quinzaine de jours.&lt;br /&gt;
==Comment récupérer notre base de données ?==&lt;br /&gt;
Vous pouvez à tout moment récupérer le contenu de votre base de données :&lt;br /&gt;
*[[AdminDoc3#Configuration_.3E_Export_SQL_.3E_Complet|Procédure version 3]]&lt;br /&gt;
&lt;br /&gt;
==Peut-on avoir un accès de type &amp;quot;phpMyAdmin&amp;quot; à notre base de données ?==&lt;br /&gt;
Vous avez un accès en lecture à la base de données via l'export mais également via la génération des rapports.&lt;br /&gt;
&lt;br /&gt;
La structure de la base de données est documentée ici : http://doc-en.openflyers.com/index.php?title=Database_specification&lt;br /&gt;
&lt;br /&gt;
Par contre, nous nous interdisons de vous fournir un accès en écriture à la base de données. Car nous devons pouvoir garantir l'intégrité de cette base de données vis-à-vis de vous-même, vis-à-vis de vos utilisateurs mais également vis-à-vis de tierces personnes ou encore vis-à-vis des autorités.&lt;br /&gt;
&lt;br /&gt;
Cependant, si vous avez besoin de modifier une saisie en base de données, nous pouvons intervenir sur votre demande par e-mail ou courrier. Cette opération est facturée en fonction de sa complexité (voir [http://www.openflyers.com/pricing/catalog-price le catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Peut-on importer notre ancienne base de données externe OF 1.3.x lors du passage en production sur la solution hébergée OpenFlyers ?==&lt;br /&gt;
Oui, il est tout a fait possible de reprendre votre ancienne base de données OF 1.3.x.&lt;br /&gt;
&lt;br /&gt;
Le coût est à partir de 50 € HT/heure, le temps effectif étant déterminé lors de l'import. Il faut nous faire parvenir un export complet de la base SQL de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Il faut au préalable que vous ayez créé une [https://client.openflyers.com/newSubscription.php?lang=francais plateforme client ], puis nous signaler l'identifiant de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite vous créer la ou les factures, selon l'abonnement choisi, à partir de votre [http://client.openflyers.com/ clientmanager]&lt;br /&gt;
&lt;br /&gt;
Vous acquittez les factures correspondant à la migration de votre base de données, de votre abonnement et éventuellement de la migration de votre plateforme de la version 2.1 en 3.0&lt;br /&gt;
&lt;br /&gt;
Puis, l'idéal est de fixer un rendez-vous, par exemple, le XX-XX-2012 à 9 h. Puis, à cette même date :&lt;br /&gt;
*vous bloquez votre accès sur votre plateforme OF le jour J à 9h00 ;&lt;br /&gt;
*vous nous envoyez la base de données en suivant ;&lt;br /&gt;
*nous migrons, dès réception, votre base de données vers la version 2.1 (ou la version 3.0) sur nos serveurs ;&lt;br /&gt;
*une fois cela fait, on vous envoie un e-mail ;&lt;br /&gt;
*vous mettez en place de votre côté une redirection vers la nouvelle URL OF.&lt;br /&gt;
&lt;br /&gt;
Il faut compter environ 2 heures maximum pour procéder à la migration (suivant les difficultés que nous rencontrerons avec votre base de données).&lt;br /&gt;
&lt;br /&gt;
Les opérations d'export/import sont ainsi synchronisées et l'interruption de service est la plus courte possible.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Comment accéder à mon compte client ?]]==&lt;br /&gt;
&lt;br /&gt;
==Comment modifier des éléments de la fiche client ?==&lt;br /&gt;
Il vous suffit de vous [[Modèle_commercial_et_compte_client_OpenFlyers#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|connecter à votre plateforme]] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Puis d'éditer la fiche en allant dans Données/Affichage et fiche personnelle.&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Changer_de_responsable_en_charge_d.27OpenFlyers|Comment changer de responsable OpenFlyers ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Renouveler_son_abonnement_OpenFlyers|Comment renouveler l'abonnement ?]]==&lt;br /&gt;
&lt;br /&gt;
==Nous avons renouvelé notre abonnement et nous avons quand même un message d'alerte concernant la cotisation==&lt;br /&gt;
Le message d'alerte '''votre cotisation n'est pas à jour''' correspond à un message lié à la configuration de la plateforme OpenFlyers et non pas à l'abonnement OpenFlyers de cette plateforme. Il signifie que l'utilisateur qui se connecte n'est pas à jour de sa qualification/validité cotisation au sein de la structure.&lt;br /&gt;
&lt;br /&gt;
Dans tous les cas, l'administrateur référent (celui dont l'adresse e-mail doit apparaitre sur la page d'accueil d'OpenFlyers) conserve néanmoins tous ses droits.&lt;br /&gt;
&lt;br /&gt;
Cf. Gestion des validités des utilisateurs dans OpenFlyers [[Validity-management3#Gestion_des_validit.C3.A9s_des_utilisateurs| la version 3]] et la [[Validity-management4#Gestion_des_validit.C3.A9s_des_utilisateurs| la version 4]].&lt;br /&gt;
&lt;br /&gt;
==Changement du nombre de ressources en cours d'année et mise à jour de l'abonnement==&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|Ajouter une ressource à son abonnement OpenFlyers]]&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Enlever_une_ressource_.C3.A0_son_abonnement_OpenFlyers|Enlever une ressource à son abonnement OpenFlyers]]&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Remplacer_une_ressource_par_une_autre_dans_son_abonnement_OpenFlyers|Remplacer une ressource dans son abonnement OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==[[Modèle-commercial-et-compte-client-OpenFlyers#Remplacer-une-ressource-par-une-autre-dans-son-abonnement-OpenFlyers|Comment remplacer une ressource par une autre ?]]==&lt;br /&gt;
&lt;br /&gt;
==Facturation des ressources réelles et virtuelles==&lt;br /&gt;
A partir de la version 2.1 d'OpenFlyers, seules les ressources qui génèrent du chiffre d'affaires pour la structure cliente sont intégrées dans l'abonnement. Ainsi, les salles de cours ne sont pas retenues dans le calcul de l'abonnement. Pour qu'OpenFlyers fasse la différence entre une ressource &amp;quot;réelle&amp;quot; et une ressource &amp;quot;virtuelle&amp;quot;, il suffit de décocher &amp;quot;Aéronef réel&amp;quot; au niveau de la ligne associée à l'aéronef ('''Admin &amp;gt; Flotte &amp;gt; Aéronefs''' colonne Aéronefs réels).&lt;br /&gt;
&lt;br /&gt;
==[[Créer_une_plateforme_OpenFlyers_pour_sa_structure#Prise_d.27abonnement|Nous avons créé une plateforme, comment passer en production ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Getting_started_with_OpenFlyers#Forfait_param.C3.A9trage|Comment fonctionne le forfait paramétrage ?]]==&lt;br /&gt;
===[[Getting_started_with_OpenFlyers#Chronologie_du_forfait_param.C3.A9trage|Quelle est la chronologie du paramétrage ?]]===&lt;br /&gt;
&lt;br /&gt;
==J'ai souscrit un abonnement First Price - Peut-on souscrire à tout moment un forfait paramétrage ?==&lt;br /&gt;
Oui, effectivement. Il se peut que le paramétrage de votre plateforme se révèle complexe, ou bien que vous manquiez de temps pour le configurer. Vous pouvez à tout moment opter pour notre forfait paramétrage, dont vous pouvez retrouver le tarif dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire].&lt;br /&gt;
&lt;br /&gt;
Cependant, dans le cas là, nous repartons d'une base de données vierge pour ne pas perdre de temps dans la correction (et la compréhension) du paramétrage initialement effectué.&lt;br /&gt;
&lt;br /&gt;
==J'ai souscrit un abonnement First Price - Peut-on basculer en cours d'année vers un abonnement Business ?==&lt;br /&gt;
Oui, vous pouvez à tout moment basculer vers un abonnement Business. Il faut pour cela nous en faire la demande. Nous vous créons alors la facture correspondant à la différence de tarif. Vous pouvez ensuite régler cette facture depuis votre Client Manager.&lt;br /&gt;
&lt;br /&gt;
==Je m'abonne en cours d'année - Combien vais-je devoir payer ?==&lt;br /&gt;
Pour la première année d'abonnement, le prix est calculé au prorata du nombre de jours civils entre la date de la commande et le trente-et-un (31) décembre de l’année civile en cours cf nos [http://www.openflyers.com/license/conditionsgenerales1_3.pdf conditions générales].&lt;br /&gt;
&lt;br /&gt;
==L'accès First Price dispose-t-il d'une connexion sécurisée ?==&lt;br /&gt;
Non, l'accès First Price ne dispose pas d'une connexion sécurisée. Il peut être pris en option (renouvelable chaque année) selon le tarif en vigueur dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]. L'accès First Price plus l'option HTTPS est de même niveau que le Business avec HTTPS inclus (256 bits).&lt;br /&gt;
&lt;br /&gt;
=Plateforme OpenFlyers=&lt;br /&gt;
==[[Créer_une_plateforme_OpenFlyers_pour_sa_structure|Comment créer une plateforme ?]]==&lt;br /&gt;
&lt;br /&gt;
==Impossible d'accéder à la plateforme de notre structure après création==&lt;br /&gt;
Attention ! Il ne faut pas confondre le couple identifiant/mot de passe qui permet d'accéder au compte client OpenFlyers de votre structure, depuis [https://client.openflyers.com Client Manager], avec le couple identifiant/mot de passe qui permet d'accéder à la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
*Le couple identifiant/mot de passe pour accéder au compte client OpenFlyers de votre structure vous a été communiqué par e-mail.&lt;br /&gt;
*Le couple identifiant/mot de passe pour accéder à votre plateforme OpenFlyers, immédiatement après création, est admin/admin. Vous êtes invité à le modifier des que possible&lt;br /&gt;
&lt;br /&gt;
==Nous avons déjà une plateforme OpenFlyers version X et nous voudrions tester la version Y==&lt;br /&gt;
===Quelles alternatives ?===&lt;br /&gt;
====soit vous migrez directement de la version X vers la version Y====&lt;br /&gt;
'''Nous recommandons cette solution (c'est même un prérequis dans le cadre du [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|forfait paramétrage]])'''&lt;br /&gt;
&lt;br /&gt;
*avantages :&lt;br /&gt;
:*Vous habituez vos utilisateurs à la nouvelle interface sans pour autant leur activer les nouvelles fonctionnalités&lt;br /&gt;
:*Vous paramétrez tranquillement depuis une base de données à jour les éléments&lt;br /&gt;
*inconvénients :&lt;br /&gt;
:*vous payez de suite la tarification de la version Y&lt;br /&gt;
:*vous êtes moins libre car vous travaillez sur une base de données en production (mais vous pouvez supprimer cet inconvénient en travaillant en parallèle sur une autre base de données en test)&lt;br /&gt;
Pour procéder à cette migration, il suffit d'envoyer un e-mail à l'équipe OpenFlyers. A noter, qu'il faudra acquitter une nouvelle facture d'hébergement correspondant à la différence de tarification entre la version X et la version Y.&lt;br /&gt;
&lt;br /&gt;
====soit vous créez une nouvelle plateforme qui vous servira de plateforme de test====&lt;br /&gt;
*avantages :&lt;br /&gt;
:*vous avez toute latitude pour paramétrer sans risque&lt;br /&gt;
:*vous ne payez pas la différence de coût entre la version X et la version Y pendant que vous testez&lt;br /&gt;
*inconvénients :&lt;br /&gt;
:*lors de votre migration de votre plateforme en production, vous devrez reprendre tout le paramétrage&lt;br /&gt;
&lt;br /&gt;
Pour cela, il vous suffit de suivre [[#Comment_cr.C3.A9er_une_plateforme_.3F|la procédure de création de plateforme]].&lt;br /&gt;
&lt;br /&gt;
Ensuite, lorsque vous souhaiterez migrer de la version X à la version Y (passage en production sur la version Y), voici ce qu'il faudra faire :&lt;br /&gt;
*nous envoyer un e-mail de demande de migration (ou passer par le forum)&lt;br /&gt;
Alors nous effectuerons les actions suivantes :&lt;br /&gt;
*migration de la base de données X vers la Y&lt;br /&gt;
*changement du pointage de votre adresse nom_de_la_plateforme.openflyers.fr par exemple de la X vers la version Y&lt;br /&gt;
Ensuite vous devrez modifier les paramétrages de la nouvelle Y (en reprenant par exemple ceux de votre version de test)&lt;br /&gt;
&lt;br /&gt;
Une fois que cela sera fait, vous nous le direz et nous supprimerons la base de données de la version Y&lt;br /&gt;
&lt;br /&gt;
Ensuite nous facturons chaque demande de migration de base de données (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
====Forfait paramétrage====&lt;br /&gt;
N'oubliez-pas que nous proposons [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|le forfait paramétrage]] pour la configuration d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
===Quel est le délai pour migrer une base de données ?===&lt;br /&gt;
Il faut compter 1 semaine&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#D.C3.A9roulement_d.27une_migration|Comment se fait la migration vers une version supérieure ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Cons.C3.A9quences_d.27une_migration|Quelles sont les conséquences d'une migration ?]]==&lt;br /&gt;
&lt;br /&gt;
==La configuration nous laisse perplexe (paramétrage de la facturation, de la comptabilité, du décompte des temps de vols), comment faire ?==&lt;br /&gt;
Si vous souhaitez utiliser en production rapidement votre plateforme OpenFlyers (par exemple idéalement à l'occasion d'un nouvel exercice comptable, c'est à dire au 1er janvier), et que vous souhaitez avoir un paramétrage fonctionnel rapidement sans avoir à y consacrer des heures pour comprendre, tester et sans doute passer à côté de certaines &amp;quot;subtilités&amp;quot;, alors sachez que nous avons mis en place un &amp;quot;[[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|forfait paramétrage]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ce forfait est également valable pour un client utilisateur de la version 1.3.x et qui souhaite migrer sans attendre à la version 3.0.3 en utilisant toutes ses fonctionnalités (comptes pilotes et heures de vols).&lt;br /&gt;
&lt;br /&gt;
==Nous avons une version 3 en test==&lt;br /&gt;
===mais nous souhaiterions reprendre tout à zéro, comment faire ?===&lt;br /&gt;
Vous vous inscrivez à nouveau avec un nouveau nom ici : http://client.openflyers.com&lt;br /&gt;
&lt;br /&gt;
===Peut-on garder la configuration de la version 3 et migrer uniquement les réservations de la 1.3.x ?===&lt;br /&gt;
Non, ce n'est pas possible car les contenus auront évolués différemment.&lt;br /&gt;
&lt;br /&gt;
Voila ce qu'il faut faire :&lt;br /&gt;
*demander la migration par e-mail de la 1.3.x vers la 3 avec passage en prod sur la 3 (c'est transparent pour les utilisateurs : seule l'interface changera pour eux tant que l'administrateur ne leur aura pas donné de droits supplémentaires)&lt;br /&gt;
*reprendre la configuration faite sur la 3 en test sur la nouvelle 3&lt;br /&gt;
*envoyer un nouveau e-mail pour dire que l'on peut supprimer l'ancienne 3 en test&lt;br /&gt;
&lt;br /&gt;
==[[Getting_started_with_OpenFlyers#Mettre_en_place_un_TPE_virtuel|Comment mettre en place une solution de paiement en ligne par carte bancaire pour les comptes clients ?]]==&lt;br /&gt;
&lt;br /&gt;
==Comment passer à la gestion des comptes et la comptabilité dans OpenFlyers ?==&lt;br /&gt;
Pour activer la gestion des comptes et de la comptabilité dans OpenFlyers, vous pouvez suivre les FAQ dédiées à la comptabilité ainsi que les documentations qui présentent les modules de comptabilité :&lt;br /&gt;
*[[FAQ_accounting2.1|FAQ comptabilité version 2.1]]&lt;br /&gt;
*[[FAQ_accounting3|FAQ comptabilité version 3.0]]&lt;br /&gt;
*[[FAQ_accounting4|FAQ comptabilité version 4]]&lt;br /&gt;
*[[Accueil#Comptabilit.C3.A9|Documentations sur la comptabilité]]&lt;br /&gt;
dont [[Comptabilité#Mise_en_place_de_la_comptabilit.C3.A9_dans_OpenFlyers|Quelques conseils sur la mise en place de la comptabilité dans OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
=Support=&lt;br /&gt;
==Quels sont les supports techniques ?==&lt;br /&gt;
Il existe à ce jour 3 types de support :&lt;br /&gt;
*le support-forum accessible depuis notre site internet http://www.openflyers.com à l'onglet &amp;quot;Support&amp;quot;&lt;br /&gt;
*le support par e-mail réservé aux abonnements &amp;quot;Business&amp;quot; et plus.&lt;br /&gt;
*le [http://www.openflyers.com/support support ponctuel par téléphone] qui peut vous permettre de vous dépanner si nous pouvons vous fournir la réponse en temps réel.&lt;br /&gt;
&lt;br /&gt;
==[[How_to_communicate_with_OpenFlyers#Cr.C3.A9er_un_compte_d.27acc.C3.A8s_au_support-forum|Comment créer son accès au support-forum ?]]==&lt;br /&gt;
&lt;br /&gt;
==Les e-mails envoyés à OpenFlyers sont retournés en erreur==&lt;br /&gt;
Lors de l'envoi de vos messages, vous avez avez eu un message d'erreur en retour.&lt;br /&gt;
&lt;br /&gt;
Le problème peut venir de l'[[Wikipedia-fr:Sender_Policy_Framework|authentification SPF]] que nous avons mis en place.&lt;br /&gt;
&lt;br /&gt;
Ainsi, si le serveur OpenFlyers refuse les e-mails non authentifiés qui parviennent depuis un nom de domaine comme smtp.nom-de-domaine.com pour défaut de SPF, il faut rajouter un enregistrmenet TXT dans le gestionnaire du serveur concerné avec la ligne de commande : v=spf1 include:_spf.nom-de-domaine.com ~all.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Biblioth%C3%A8que-des-rapports&amp;diff=13852</id>
		<title>Bibliothèque des rapports</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Biblioth%C3%A8que-des-rapports&amp;diff=13852"/>
				<updated>2016-02-14T22:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Users with validities viewer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Users=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT id, last_name, first_name&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users and &amp;lt;e-mail&amp;gt;=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(person.first_name, ' ', person.last_name, ' &amp;lt;', person.email, '&amp;gt;') AS emails&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users by profile=&lt;br /&gt;
Variable $profile should be defined first and should be of dbOject::Profile value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT&lt;br /&gt;
    last_name AS Lastname,&lt;br /&gt;
    first_name AS Firstname,&lt;br /&gt;
    profile.name AS Profile&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
WHERE person.activated = 1 AND profile.id = $profile&lt;br /&gt;
ORDER BY Profile, Lastname, Firstname&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users by validity=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT validity_type.name AS 'Validity',&lt;br /&gt;
    DATE_FORMAT(grant_date,'%d/%m/%Y') AS Date_d_obtention,&lt;br /&gt;
    last_name AS Name,&lt;br /&gt;
    first_name AS Firstname,&lt;br /&gt;
    ident_value AS Comment&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id =validity_type.id &lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE validity_type.id='$validityTypeId'&lt;br /&gt;
ORDER BY Name, Firstname&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users by validity obtained after the selected year=&lt;br /&gt;
&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT validity_type.name AS 'Validity',&lt;br /&gt;
    DATE_FORMAT(grant_date,'%d/%m/%Y') AS Date,&lt;br /&gt;
    last_name AS Name,&lt;br /&gt;
    first_name AS Firstname,&lt;br /&gt;
    ident_value AS Comment&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id=validity_type.id &lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE YEAR(grant_date)&amp;gt;$year&lt;br /&gt;
ORDER BY 'Validity', Name, Firstname&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with address=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT &lt;br /&gt;
	last_name, &lt;br /&gt;
	first_name, &lt;br /&gt;
	name AS login, &lt;br /&gt;
	email, &lt;br /&gt;
	address, &lt;br /&gt;
	zipcode, &lt;br /&gt;
	city AS Ville, &lt;br /&gt;
	state AS etat_region, &lt;br /&gt;
	country AS pays, &lt;br /&gt;
	home_phone AS tel_domicile, &lt;br /&gt;
	work_phone AS tel_travail, &lt;br /&gt;
	cell_phone AS tel_mobile&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
ORDER BY last_name,first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with address and registration date (using ExtraField)=&lt;br /&gt;
Extra field required :&lt;br /&gt;
#registrationDate&lt;br /&gt;
#*label : Registration date&lt;br /&gt;
#*category : User&lt;br /&gt;
#*value type : DateTime&lt;br /&gt;
&lt;br /&gt;
Validity type required :&lt;br /&gt;
#Cotisation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT &lt;br /&gt;
    last_name, &lt;br /&gt;
    first_name,&lt;br /&gt;
    email, &lt;br /&gt;
    address, &lt;br /&gt;
    zipcode, &lt;br /&gt;
    city, &lt;br /&gt;
    state, &lt;br /&gt;
    country, &lt;br /&gt;
    home_phone, &lt;br /&gt;
    work_phone,&lt;br /&gt;
    cell_phone, &lt;br /&gt;
    sex,&lt;br /&gt;
    DATE_FORMAT(birthdate, '%Y-%m-%d') AS birthdate,&lt;br /&gt;
    nationality,&lt;br /&gt;
    validity.grant_date AS subscription_date,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT DATE_FORMAT(extra_field_content.content, '%Y-%m-%d')&lt;br /&gt;
        FROM extra_field&lt;br /&gt;
        LEFT JOIN extra_field_content ON extra_field.id=extra_field_content.extra_field_id&lt;br /&gt;
        WHERE extra_field.variable=&amp;quot;registrationDate&amp;quot; and extra_field_content.category_id=person.id&lt;br /&gt;
    )AS registration_date&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE activated = 1 AND validity_type.name = 'Cotisation'&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with address and registration date (using Validity)=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT&lt;br /&gt;
person.last_name,&lt;br /&gt;
person.first_name,&lt;br /&gt;
validity.grant_date AS registration_date&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON validity.person_id=person.id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.name = &amp;quot;Date d'inscription&amp;quot; AND person.activated=1&lt;br /&gt;
GROUP BY last_name, first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with e-mails of selected validity type person equals given year=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
*year (Type: Year)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(person.first_name, ' ', person.last_name, ' &amp;lt;', person.email, '&amp;gt;') AS emails&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND YEAR(validity.expire_date) = $year AND validity_type.id = '$validityTypeId'&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with e-mails with up-to-date expire date of validity VVV=&lt;br /&gt;
Following symbols should be replace:&lt;br /&gt;
*VVV : validity type id&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(person.first_name, ' ', person.last_name, ' &amp;lt;', person.email, '&amp;gt;') AS emails&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND validity.expire_date &amp;gt; NOW() AND validity_type.id = VVV&lt;br /&gt;
ORDER BY last_name,first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with validity ending before a specific date=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*endDate (Type: Date)&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT person.id, person.first_name, person.last_name, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND validity.grant_date &amp;lt;= '$endDate'&lt;br /&gt;
  AND validity_type.id = '$validityTypeId'&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with up-to-date validity X and Y and user details=&lt;br /&gt;
Replace X and Y by the validity_type id (2 times).&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(last_name, ' ', first_name) AS 'User',&lt;br /&gt;
validity_type.name AS 'Validity name',&lt;br /&gt;
expire_date AS 'Expire date',&lt;br /&gt;
DATE_FORMAT(birthdate, '%Y/%m/%d') AS 'Birthdate',&lt;br /&gt;
email,&lt;br /&gt;
CONCAT (address, ' ', zipcode, ' ', city, ' ', state, ' ', country) AS 'Adress',&lt;br /&gt;
home_phone AS 'Home phone',&lt;br /&gt;
work_phone AS 'Work phone',&lt;br /&gt;
cell_phone AS 'Cell phone'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.time_limitation=1 AND (validity_type.id=X OR validity_type.id=Y)&lt;br /&gt;
AND person.id IN&lt;br /&gt;
    ( SELECT person.id FROM person&lt;br /&gt;
    LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
    LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
    WHERE person.activated=1 AND (validity_type.id=X OR validity_type.id=Y) AND validity.expire_date &amp;gt;= UTC_DATE() )&lt;br /&gt;
 ORDER BY last_name, first_name, validity_type.name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utilisateurs avec leurs validités=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT &lt;br /&gt;
      last_name AS &amp;quot;Nom&amp;quot;,&lt;br /&gt;
      first_name AS &amp;quot;Prenom&amp;quot;,&lt;br /&gt;
      validity_type.name AS &amp;quot;Validité&amp;quot;,&lt;br /&gt;
      DATE_FORMAT(expire_date,'%d/%m/%Y') AS &amp;quot;Date expiration&amp;quot;,&lt;br /&gt;
      IF((DATEDIFF(DATE(expire_date),DATE(Now())) &amp;lt; 0), &amp;quot;Expired&amp;quot;,&amp;quot;&amp;quot;) AS &amp;quot;Perimee&amp;quot;,&lt;br /&gt;
      DATE_FORMAT(grant_date,'%d/%m/%Y') AS &amp;quot;Date obtention&amp;quot;&lt;br /&gt;
   FROM validity_type&lt;br /&gt;
   LEFT JOIN validity ON validity.validity_type_id = validity_type.id &lt;br /&gt;
   LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE person.activated = 1&lt;br /&gt;
ORDER BY Last_name, First_name, validity_type.name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with age and birth date=&lt;br /&gt;
&amp;lt;sql&amp;gt;(SELECT last_name AS Last_name,&lt;br /&gt;
&lt;br /&gt;
first_name AS First_name, &lt;br /&gt;
&lt;br /&gt;
DATE_FORMAT(birthdate ,'%d-%m-%Y') AS Birth_date, &lt;br /&gt;
&lt;br /&gt;
IF ( (sex = 0), 'Man', 'Woman' ) AS sex,&lt;br /&gt;
&lt;br /&gt;
(DATE_FORMAT(DATE('$day'), '%Y') - &lt;br /&gt;
DATE_FORMAT(birthdate, '%Y') - &lt;br /&gt;
(SELECT DATE_FORMAT(DATE('$day'), '00-%m-%d') &amp;lt; DATE_FORMAT( birthdate, '00-%m-%d'))) AS 'age',&lt;br /&gt;
&lt;br /&gt;
DATE_FORMAT(DATE('$day'),'%d-%m-%Y') AS on_date,&lt;br /&gt;
&lt;br /&gt;
IF((DATE_FORMAT(DATE('$day'), '%Y') - &lt;br /&gt;
DATE_FORMAT(birthdate, '%Y') - &lt;br /&gt;
(SELECT DATE_FORMAT(DATE('$day'), '00-%m-%d') &amp;lt; DATE_FORMAT( birthdate, '00-%m-%d')))&amp;gt;=21, '&amp;gt;= 21', '&amp;lt; 21') AS Major,&lt;br /&gt;
&lt;br /&gt;
-- inscription_date,&lt;br /&gt;
&lt;br /&gt;
-- member.subscription,&lt;br /&gt;
&lt;br /&gt;
-- entry.account_date as Adhesion&lt;br /&gt;
DATE_FORMAT(entry.account_date,'%d-%m-%Y') as Grant_date&lt;br /&gt;
&lt;br /&gt;
-- ,MAX(entry.account_date)&lt;br /&gt;
&lt;br /&gt;
-- , $day&lt;br /&gt;
-- , entry.flow_id&lt;br /&gt;
-- , account.name&lt;br /&gt;
&lt;br /&gt;
FROM person&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN validity ON validity.person_id = person.id &lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account acc2 on acc2.owner_id = person.id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account_entry linked_entry on linked_entry.account_id = acc2.id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account_entry entry on linked_entry.flow_id = entry.flow_id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account on entry.account_id = account.id &lt;br /&gt;
&lt;br /&gt;
WHERE year(validity.grant_date) = $year&lt;br /&gt;
&lt;br /&gt;
AND account.name = 'Cotisations ACB'&lt;br /&gt;
&lt;br /&gt;
AND (year(entry.account_date)=$year OR (year(entry.account_date)=$year -1 AND month(entry.account_date)=12) )&lt;br /&gt;
&lt;br /&gt;
AND entry.account_date &amp;lt; DATE('$day')&lt;br /&gt;
&lt;br /&gt;
ORDER BY Last_name  LIMIT 999999&lt;br /&gt;
)&lt;br /&gt;
UNION&lt;br /&gt;
(&lt;br /&gt;
SELECT COUNT(*) AS Last_name,&lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS First_name, &lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS Birth_date, &lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS sex,&lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS 'age',&lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS on_date,&lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS Major,&lt;br /&gt;
&lt;br /&gt;
COUNT(*) as Grant_date&lt;br /&gt;
&lt;br /&gt;
FROM person&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN validity ON validity.person_id = person.id &lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account acc2 on acc2.owner_id = person.id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account_entry linked_entry on linked_entry.account_id = acc2.id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account_entry entry on linked_entry.flow_id = entry.flow_id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account on entry.account_id = account.id &lt;br /&gt;
&lt;br /&gt;
WHERE year(validity.grant_date) = $year&lt;br /&gt;
&lt;br /&gt;
AND account.name = 'Cotisations ACB'&lt;br /&gt;
&lt;br /&gt;
AND (year(entry.account_date)=$year OR (year(entry.account_date)=$year -1 AND month(entry.account_date)=12) )&lt;br /&gt;
&lt;br /&gt;
AND entry.account_date &amp;lt; DATE('$day')&lt;br /&gt;
)&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with validity grant date and profiles=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT validity_type.name AS 'Validity',&lt;br /&gt;
    DATE_FORMAT(grant_date, '%d/%m/%Y') AS grant_date,&lt;br /&gt;
    last_name AS Name,&lt;br /&gt;
    first_name AS Firstname,&lt;br /&gt;
    ident_value AS Comment,&lt;br /&gt;
    ( SELECT GROUP_CONCAT(profile.name SEPARATOR ', ') &lt;br /&gt;
      FROM profile WHERE (person.profile &amp;amp; profile.id)&lt;br /&gt;
    )AS Profile&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id=validity_type.id &lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE YEAR(grant_date)&amp;gt;=$year&lt;br /&gt;
AND validity_type.id='$validityTypeId' &lt;br /&gt;
ORDER BY Name, Firstname&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with registration date, profiles and total flight time=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT&lt;br /&gt;
person.last_name,&lt;br /&gt;
person.first_name,&lt;br /&gt;
validity.grant_date AS registration_date,&lt;br /&gt;
person.birthdate AS birthdate,&lt;br /&gt;
IF ( (person.sex = 0), 'M', 'F' ) AS Gender,&lt;br /&gt;
( &lt;br /&gt;
    SELECT GROUP_CONCAT(profile.name SEPARATOR ', ') &lt;br /&gt;
    FROM profile WHERE (person.profile &amp;amp; profile.id)&lt;br /&gt;
)AS Profile,&lt;br /&gt;
IFNULL(( &lt;br /&gt;
    SELECT&lt;br /&gt;
      CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
    WHERE fp.pilot_id=person.id AND fp.num=0&lt;br /&gt;
), 0) AS Total_flight_time&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON validity.person_id=person.id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.name = &amp;quot;Date d'inscription&amp;quot; AND person.activated=1&lt;br /&gt;
GROUP BY last_name, first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with email=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT last_name, first_name, email&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with expire date validity equals a given year=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
*year (Type: Year)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT person.id, person.first_name, person.last_name, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND YEAR(validity.expire_date) = $year AND validity_type.id = '$validityTypeId'&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with expire date validities inferior to the first day of the given month and year=&lt;br /&gt;
&lt;br /&gt;
Following extra field required:&lt;br /&gt;
* month (Type: integer)&lt;br /&gt;
* year (Type: year)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(last_name, ' ', first_name) AS 'User', validity_type.name AS 'Validity name', expire_date AS 'Expire date'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.time_limitation=1&lt;br /&gt;
  AND validity.expire_date &amp;lt; '$year-$month-01'&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name, validity_type.name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with expire date validities inferior to the first day of the given month and year, with up-to-date expire date of validity XX=&lt;br /&gt;
&lt;br /&gt;
Following extra field required:&lt;br /&gt;
* month (Type: integer)&lt;br /&gt;
* year (Type: year)&lt;br /&gt;
Following symbols should be replace:&lt;br /&gt;
* XX : validity type id&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(last_name, ' ', first_name) AS 'User', validity_type.name AS 'Validity name', expire_date AS 'Expire date'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.time_limitation=1&lt;br /&gt;
AND validity.expire_date &amp;lt; '$year-$month-01'&lt;br /&gt;
AND person.id IN (&lt;br /&gt;
    SELECT person.id&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
    LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
    WHERE person.activated=1&lt;br /&gt;
      AND validity_type.id=XX&lt;br /&gt;
      AND validity.expire_date &amp;gt;= UTC_DATE()&lt;br /&gt;
)&lt;br /&gt;
ORDER BY last_name, first_name, validity_type.name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users without required validities=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(person.last_name, ' ', person.first_name) AS pilot, validity_type.name AS validity_name&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN flight_type ON flight_type.id = flight_type_mandatory_validity_type.flight_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.flight_type_id &amp;amp; flight_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN aircraft_type ON resource.resource_type_id = aircraft_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON aircraft_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND ROW(person.id, validity_type.id) NOT IN (SELECT person_id, validity_type_id FROM validity)&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY pilot, validity_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users without up to date subscription=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
*year (Type: Year)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT &lt;br /&gt;
    last_name AS Nom, &lt;br /&gt;
    first_name AS prénom,&lt;br /&gt;
    email, &lt;br /&gt;
    home_phone AS tel_dommicile, &lt;br /&gt;
    work_phone AS tel_travail, &lt;br /&gt;
    cell_phone AS tel_mobile, &lt;br /&gt;
DATE_FORMAT(validity.expire_date,'%d/%m/%Y') AS date_cotisation&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND YEAR(validity.expire_date) &amp;lt; $year AND validity_type.id = '$validityTypeId'&lt;br /&gt;
ORDER BY last_name,first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users without an account=&lt;br /&gt;
&amp;lt;SQL&amp;gt;SELECT person.last_name, person.first_name FROM person&lt;br /&gt;
LEFT JOIN account ON account.owner_id=person.id&lt;br /&gt;
LEFT JOIN account_type ON account.account_type=account_type.id&lt;br /&gt;
WHERE person.activated=1 AND account.category=2 AND account_type.activated=1 AND account.activated=0&amp;lt;/SQL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Young users=&lt;br /&gt;
  &amp;lt;SQL&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name,&lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS Birthdate, &lt;br /&gt;
    IF ( (sex = 0), 'Male', 'Female' ) AS sex&lt;br /&gt;
  FROM person&lt;br /&gt;
  WHERE ($year-YEAR(birthdate))&amp;lt;=21&amp;lt;/SQL&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Biblioth%C3%A8que-des-rapports&amp;diff=13851</id>
		<title>Bibliothèque des rapports</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Biblioth%C3%A8que-des-rapports&amp;diff=13851"/>
				<updated>2016-02-14T22:02:05Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : Page créée avec « =Users= &amp;lt;sql&amp;gt;SELECT id, last_name, first_name FROM person WHERE activated=1&amp;lt;/sql&amp;gt;  =Users and &amp;lt;e-mail&amp;gt;= &amp;lt;sql&amp;gt;SELECT CONCAT(person.first_name, ' ', person.last_name, ' &amp;lt;',... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Users=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT id, last_name, first_name&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users and &amp;lt;e-mail&amp;gt;=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(person.first_name, ' ', person.last_name, ' &amp;lt;', person.email, '&amp;gt;') AS emails&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users by profile=&lt;br /&gt;
Variable $profile should be defined first and should be of dbOject::Profile value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT&lt;br /&gt;
    last_name AS Lastname,&lt;br /&gt;
    first_name AS Firstname,&lt;br /&gt;
    profile.name AS Profile&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
WHERE person.activated = 1 AND profile.id = $profile&lt;br /&gt;
ORDER BY Profile, Lastname, Firstname&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users by validity=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT validity_type.name AS 'Validity',&lt;br /&gt;
    DATE_FORMAT(grant_date,'%d/%m/%Y') AS Date_d_obtention,&lt;br /&gt;
    last_name AS Name,&lt;br /&gt;
    first_name AS Firstname,&lt;br /&gt;
    ident_value AS Comment&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id =validity_type.id &lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE validity_type.id='$validityTypeId'&lt;br /&gt;
ORDER BY Name, Firstname&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users by validity obtained after the selected year=&lt;br /&gt;
&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT validity_type.name AS 'Validity',&lt;br /&gt;
    DATE_FORMAT(grant_date,'%d/%m/%Y') AS Date,&lt;br /&gt;
    last_name AS Name,&lt;br /&gt;
    first_name AS Firstname,&lt;br /&gt;
    ident_value AS Comment&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id=validity_type.id &lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE YEAR(grant_date)&amp;gt;$year&lt;br /&gt;
ORDER BY 'Validity', Name, Firstname&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with address=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT &lt;br /&gt;
	last_name, &lt;br /&gt;
	first_name, &lt;br /&gt;
	name AS login, &lt;br /&gt;
	email, &lt;br /&gt;
	address, &lt;br /&gt;
	zipcode, &lt;br /&gt;
	city AS Ville, &lt;br /&gt;
	state AS etat_region, &lt;br /&gt;
	country AS pays, &lt;br /&gt;
	home_phone AS tel_domicile, &lt;br /&gt;
	work_phone AS tel_travail, &lt;br /&gt;
	cell_phone AS tel_mobile&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
ORDER BY last_name,first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with address and registration date (using ExtraField)=&lt;br /&gt;
Extra field required :&lt;br /&gt;
#registrationDate&lt;br /&gt;
#*label : Registration date&lt;br /&gt;
#*category : User&lt;br /&gt;
#*value type : DateTime&lt;br /&gt;
&lt;br /&gt;
Validity type required :&lt;br /&gt;
#Cotisation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT &lt;br /&gt;
    last_name, &lt;br /&gt;
    first_name,&lt;br /&gt;
    email, &lt;br /&gt;
    address, &lt;br /&gt;
    zipcode, &lt;br /&gt;
    city, &lt;br /&gt;
    state, &lt;br /&gt;
    country, &lt;br /&gt;
    home_phone, &lt;br /&gt;
    work_phone,&lt;br /&gt;
    cell_phone, &lt;br /&gt;
    sex,&lt;br /&gt;
    DATE_FORMAT(birthdate, '%Y-%m-%d') AS birthdate,&lt;br /&gt;
    nationality,&lt;br /&gt;
    validity.grant_date AS subscription_date,&lt;br /&gt;
    (&lt;br /&gt;
        SELECT DATE_FORMAT(extra_field_content.content, '%Y-%m-%d')&lt;br /&gt;
        FROM extra_field&lt;br /&gt;
        LEFT JOIN extra_field_content ON extra_field.id=extra_field_content.extra_field_id&lt;br /&gt;
        WHERE extra_field.variable=&amp;quot;registrationDate&amp;quot; and extra_field_content.category_id=person.id&lt;br /&gt;
    )AS registration_date&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE activated = 1 AND validity_type.name = 'Cotisation'&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with address and registration date (using Validity)=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT&lt;br /&gt;
person.last_name,&lt;br /&gt;
person.first_name,&lt;br /&gt;
validity.grant_date AS registration_date&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON validity.person_id=person.id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.name = &amp;quot;Date d'inscription&amp;quot; AND person.activated=1&lt;br /&gt;
GROUP BY last_name, first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with e-mails of selected validity type person equals given year=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
*year (Type: Year)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(person.first_name, ' ', person.last_name, ' &amp;lt;', person.email, '&amp;gt;') AS emails&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND YEAR(validity.expire_date) = $year AND validity_type.id = '$validityTypeId'&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with e-mails with up-to-date expire date of validity VVV=&lt;br /&gt;
Following symbols should be replace:&lt;br /&gt;
*VVV : validity type id&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(person.first_name, ' ', person.last_name, ' &amp;lt;', person.email, '&amp;gt;') AS emails&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND validity.expire_date &amp;gt; NOW() AND validity_type.id = VVV&lt;br /&gt;
ORDER BY last_name,first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with validity ending before a specific date=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*endDate (Type: Date)&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT person.id, person.first_name, person.last_name, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND validity.grant_date &amp;lt;= '$endDate'&lt;br /&gt;
  AND validity_type.id = '$validityTypeId'&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with up-to-date validity X and Y and user details=&lt;br /&gt;
Replace X and Y by the validity_type id (2 times).&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(last_name, ' ', first_name) AS 'User',&lt;br /&gt;
validity_type.name AS 'Validity name',&lt;br /&gt;
expire_date AS 'Expire date',&lt;br /&gt;
DATE_FORMAT(birthdate, '%Y/%m/%d') AS 'Birthdate',&lt;br /&gt;
email,&lt;br /&gt;
CONCAT (address, ' ', zipcode, ' ', city, ' ', state, ' ', country) AS 'Adress',&lt;br /&gt;
home_phone AS 'Home phone',&lt;br /&gt;
work_phone AS 'Work phone',&lt;br /&gt;
cell_phone AS 'Cell phone'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.time_limitation=1 AND (validity_type.id=X OR validity_type.id=Y)&lt;br /&gt;
AND person.id IN&lt;br /&gt;
    ( SELECT person.id FROM person&lt;br /&gt;
    LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
    LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
    WHERE person.activated=1 AND (validity_type.id=X OR validity_type.id=Y) AND validity.expire_date &amp;gt;= UTC_DATE() )&lt;br /&gt;
 ORDER BY last_name, first_name, validity_type.name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with validities viewer=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT &lt;br /&gt;
      last_name AS &amp;quot;Last name&amp;quot;,&lt;br /&gt;
      first_name AS &amp;quot;First name&amp;quot;,&lt;br /&gt;
      validity_type.name AS &amp;quot;Validity&amp;quot;,&lt;br /&gt;
      DATE_FORMAT(expire_date,'%d/%m/%Y') AS &amp;quot;Expiration date&amp;quot;,&lt;br /&gt;
      IF((DATEDIFF(DATE(expire_date),DATE(Now())) &amp;lt; 0), &amp;quot;Expired&amp;quot;,&amp;quot;&amp;quot;) AS &amp;quot;Expired&amp;quot;,&lt;br /&gt;
      DATE_FORMAT(grant_date,'%d/%m/%Y') AS &amp;quot;Obtention date&amp;quot;&lt;br /&gt;
   FROM validity_type&lt;br /&gt;
   LEFT JOIN validity ON validity.validity_type_id = validity_type.id &lt;br /&gt;
   LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE person.activated = 1&lt;br /&gt;
ORDER BY Last_name, First_name, validity_type.name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with age and birth date=&lt;br /&gt;
&amp;lt;sql&amp;gt;(SELECT last_name AS Last_name,&lt;br /&gt;
&lt;br /&gt;
first_name AS First_name, &lt;br /&gt;
&lt;br /&gt;
DATE_FORMAT(birthdate ,'%d-%m-%Y') AS Birth_date, &lt;br /&gt;
&lt;br /&gt;
IF ( (sex = 0), 'Man', 'Woman' ) AS sex,&lt;br /&gt;
&lt;br /&gt;
(DATE_FORMAT(DATE('$day'), '%Y') - &lt;br /&gt;
DATE_FORMAT(birthdate, '%Y') - &lt;br /&gt;
(SELECT DATE_FORMAT(DATE('$day'), '00-%m-%d') &amp;lt; DATE_FORMAT( birthdate, '00-%m-%d'))) AS 'age',&lt;br /&gt;
&lt;br /&gt;
DATE_FORMAT(DATE('$day'),'%d-%m-%Y') AS on_date,&lt;br /&gt;
&lt;br /&gt;
IF((DATE_FORMAT(DATE('$day'), '%Y') - &lt;br /&gt;
DATE_FORMAT(birthdate, '%Y') - &lt;br /&gt;
(SELECT DATE_FORMAT(DATE('$day'), '00-%m-%d') &amp;lt; DATE_FORMAT( birthdate, '00-%m-%d')))&amp;gt;=21, '&amp;gt;= 21', '&amp;lt; 21') AS Major,&lt;br /&gt;
&lt;br /&gt;
-- inscription_date,&lt;br /&gt;
&lt;br /&gt;
-- member.subscription,&lt;br /&gt;
&lt;br /&gt;
-- entry.account_date as Adhesion&lt;br /&gt;
DATE_FORMAT(entry.account_date,'%d-%m-%Y') as Grant_date&lt;br /&gt;
&lt;br /&gt;
-- ,MAX(entry.account_date)&lt;br /&gt;
&lt;br /&gt;
-- , $day&lt;br /&gt;
-- , entry.flow_id&lt;br /&gt;
-- , account.name&lt;br /&gt;
&lt;br /&gt;
FROM person&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN validity ON validity.person_id = person.id &lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account acc2 on acc2.owner_id = person.id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account_entry linked_entry on linked_entry.account_id = acc2.id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account_entry entry on linked_entry.flow_id = entry.flow_id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account on entry.account_id = account.id &lt;br /&gt;
&lt;br /&gt;
WHERE year(validity.grant_date) = $year&lt;br /&gt;
&lt;br /&gt;
AND account.name = 'Cotisations ACB'&lt;br /&gt;
&lt;br /&gt;
AND (year(entry.account_date)=$year OR (year(entry.account_date)=$year -1 AND month(entry.account_date)=12) )&lt;br /&gt;
&lt;br /&gt;
AND entry.account_date &amp;lt; DATE('$day')&lt;br /&gt;
&lt;br /&gt;
ORDER BY Last_name  LIMIT 999999&lt;br /&gt;
)&lt;br /&gt;
UNION&lt;br /&gt;
(&lt;br /&gt;
SELECT COUNT(*) AS Last_name,&lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS First_name, &lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS Birth_date, &lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS sex,&lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS 'age',&lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS on_date,&lt;br /&gt;
&lt;br /&gt;
COUNT(*) AS Major,&lt;br /&gt;
&lt;br /&gt;
COUNT(*) as Grant_date&lt;br /&gt;
&lt;br /&gt;
FROM person&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN validity ON validity.person_id = person.id &lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account acc2 on acc2.owner_id = person.id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account_entry linked_entry on linked_entry.account_id = acc2.id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account_entry entry on linked_entry.flow_id = entry.flow_id&lt;br /&gt;
&lt;br /&gt;
RIGHT JOIN account on entry.account_id = account.id &lt;br /&gt;
&lt;br /&gt;
WHERE year(validity.grant_date) = $year&lt;br /&gt;
&lt;br /&gt;
AND account.name = 'Cotisations ACB'&lt;br /&gt;
&lt;br /&gt;
AND (year(entry.account_date)=$year OR (year(entry.account_date)=$year -1 AND month(entry.account_date)=12) )&lt;br /&gt;
&lt;br /&gt;
AND entry.account_date &amp;lt; DATE('$day')&lt;br /&gt;
)&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with validity grant date and profiles=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT validity_type.name AS 'Validity',&lt;br /&gt;
    DATE_FORMAT(grant_date, '%d/%m/%Y') AS grant_date,&lt;br /&gt;
    last_name AS Name,&lt;br /&gt;
    first_name AS Firstname,&lt;br /&gt;
    ident_value AS Comment,&lt;br /&gt;
    ( SELECT GROUP_CONCAT(profile.name SEPARATOR ', ') &lt;br /&gt;
      FROM profile WHERE (person.profile &amp;amp; profile.id)&lt;br /&gt;
    )AS Profile&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id=validity_type.id &lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE YEAR(grant_date)&amp;gt;=$year&lt;br /&gt;
AND validity_type.id='$validityTypeId' &lt;br /&gt;
ORDER BY Name, Firstname&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with registration date, profiles and total flight time=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT&lt;br /&gt;
person.last_name,&lt;br /&gt;
person.first_name,&lt;br /&gt;
validity.grant_date AS registration_date,&lt;br /&gt;
person.birthdate AS birthdate,&lt;br /&gt;
IF ( (person.sex = 0), 'M', 'F' ) AS Gender,&lt;br /&gt;
( &lt;br /&gt;
    SELECT GROUP_CONCAT(profile.name SEPARATOR ', ') &lt;br /&gt;
    FROM profile WHERE (person.profile &amp;amp; profile.id)&lt;br /&gt;
)AS Profile,&lt;br /&gt;
IFNULL(( &lt;br /&gt;
    SELECT&lt;br /&gt;
      CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
    WHERE fp.pilot_id=person.id AND fp.num=0&lt;br /&gt;
), 0) AS Total_flight_time&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON validity.person_id=person.id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.name = &amp;quot;Date d'inscription&amp;quot; AND person.activated=1&lt;br /&gt;
GROUP BY last_name, first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with email=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT last_name, first_name, email&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with expire date validity equals a given year=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
*year (Type: Year)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT person.id, person.first_name, person.last_name, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND YEAR(validity.expire_date) = $year AND validity_type.id = '$validityTypeId'&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with expire date validities inferior to the first day of the given month and year=&lt;br /&gt;
&lt;br /&gt;
Following extra field required:&lt;br /&gt;
* month (Type: integer)&lt;br /&gt;
* year (Type: year)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(last_name, ' ', first_name) AS 'User', validity_type.name AS 'Validity name', expire_date AS 'Expire date'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.time_limitation=1&lt;br /&gt;
  AND validity.expire_date &amp;lt; '$year-$month-01'&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name, validity_type.name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users with expire date validities inferior to the first day of the given month and year, with up-to-date expire date of validity XX=&lt;br /&gt;
&lt;br /&gt;
Following extra field required:&lt;br /&gt;
* month (Type: integer)&lt;br /&gt;
* year (Type: year)&lt;br /&gt;
Following symbols should be replace:&lt;br /&gt;
* XX : validity type id&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(last_name, ' ', first_name) AS 'User', validity_type.name AS 'Validity name', expire_date AS 'Expire date'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE validity_type.time_limitation=1&lt;br /&gt;
AND validity.expire_date &amp;lt; '$year-$month-01'&lt;br /&gt;
AND person.id IN (&lt;br /&gt;
    SELECT person.id&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN validity ON person.id=validity.person_id&lt;br /&gt;
    LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
    WHERE person.activated=1&lt;br /&gt;
      AND validity_type.id=XX&lt;br /&gt;
      AND validity.expire_date &amp;gt;= UTC_DATE()&lt;br /&gt;
)&lt;br /&gt;
ORDER BY last_name, first_name, validity_type.name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users without required validities=&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT CONCAT(person.last_name, ' ', person.first_name) AS pilot, validity_type.name AS validity_name&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN flight_type ON flight_type.id = flight_type_mandatory_validity_type.flight_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.flight_type_id &amp;amp; flight_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN aircraft_type ON resource.resource_type_id = aircraft_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON aircraft_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND ROW(person.id, validity_type.id) NOT IN (SELECT person_id, validity_type_id FROM validity)&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY pilot, validity_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users without up to date subscription=&lt;br /&gt;
Following extra field required:&lt;br /&gt;
*validityTypeId (Type: dbObject:ValidityType)&lt;br /&gt;
*year (Type: Year)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sql&amp;gt;SELECT &lt;br /&gt;
    last_name AS Nom, &lt;br /&gt;
    first_name AS prénom,&lt;br /&gt;
    email, &lt;br /&gt;
    home_phone AS tel_dommicile, &lt;br /&gt;
    work_phone AS tel_travail, &lt;br /&gt;
    cell_phone AS tel_mobile, &lt;br /&gt;
DATE_FORMAT(validity.expire_date,'%d/%m/%Y') AS date_cotisation&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (validity.person_id = person.id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = validity.validity_type_id)&lt;br /&gt;
WHERE person.activated=1 AND YEAR(validity.expire_date) &amp;lt; $year AND validity_type.id = '$validityTypeId'&lt;br /&gt;
ORDER BY last_name,first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Users without an account=&lt;br /&gt;
&amp;lt;SQL&amp;gt;SELECT person.last_name, person.first_name FROM person&lt;br /&gt;
LEFT JOIN account ON account.owner_id=person.id&lt;br /&gt;
LEFT JOIN account_type ON account.account_type=account_type.id&lt;br /&gt;
WHERE person.activated=1 AND account.category=2 AND account_type.activated=1 AND account.activated=0&amp;lt;/SQL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Young users=&lt;br /&gt;
  &amp;lt;SQL&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name,&lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS Birthdate, &lt;br /&gt;
    IF ( (sex = 0), 'Male', 'Female' ) AS sex&lt;br /&gt;
  FROM person&lt;br /&gt;
  WHERE ($year-YEAR(birthdate))&amp;lt;=21&amp;lt;/SQL&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=FAQ-client&amp;diff=13820</id>
		<title>FAQ client</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=FAQ-client&amp;diff=13820"/>
				<updated>2016-01-23T18:33:38Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Fonctionnement applicatif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Fonctionnement d'OpenFlyers=&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Fonctionnement_.C3.A9conomique|Fonctionnement économique]]==&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement applicatif==&lt;br /&gt;
Les composants logiciels utilisés pour développer notre applicatif sont tous open source (notamment PHP et MySQL).&lt;br /&gt;
&lt;br /&gt;
La version 2.0 du logiciel OpenFlyers, propriété de la S.A.R.L. OpenFlyers, est sous licence semi-libre : il peut être installé et utilisé pour les besoins propres d'une structure aéronautique mais il ne peut être commercialisé par une société tiers sans licence spécifique (même à la demande d'un seul client) ou déployé pour des filiales d'une structure commerciale ou non.&lt;br /&gt;
&lt;br /&gt;
Les versions ultérieures à la version 2.0 du logiciel OpenFlyers, sont commercialisées uniquement par le biais d'un abonnement auprès de la S.A.R.L. OpenFlyers qui en garde l'hébergement exclusif.&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Arbitrage_des_demandes_de_d.C3.A9veloppements#Financement_des_d.C3.A9veloppements|Nouveaux développements]]==&lt;br /&gt;
&lt;br /&gt;
==De quoi avons-nous besoin pour faire fonctionner OpenFlyers ?==&lt;br /&gt;
Il suffit de disposer d'un ordinateur avec un accès internet et d'un navigateur moderne tel que Google Chrome, Firefox, Internet Explorer, Opera ou Safari. Aucune installation particulière n'est nécessaire sur l'ordinateur.&lt;br /&gt;
&lt;br /&gt;
=Les bases de données=&lt;br /&gt;
==Les données stockées sont-elles bien protégées ?==&lt;br /&gt;
Nous tâchons de mettre en œuvre les différentes recommandations concernant la gestion des serveurs afin d'empêcher toute intrusion.&lt;br /&gt;
&lt;br /&gt;
De plus, nous disposons de plusieurs serveurs répartis en plusieurs endroits de la planète.&lt;br /&gt;
&lt;br /&gt;
Chaque nuit, tous les serveurs sauvegardent leurs bases de données et les envoient à tous les autres serveurs.&lt;br /&gt;
&lt;br /&gt;
Ces sauvegardes sont stockées par roulement sur une quinzaine de jours.&lt;br /&gt;
==Comment récupérer notre base de données ?==&lt;br /&gt;
Vous pouvez à tout moment récupérer le contenu de votre base de données :&lt;br /&gt;
*[[AdminDoc3#Configuration_.3E_Export_SQL_.3E_Complet|Procédure version 3]]&lt;br /&gt;
&lt;br /&gt;
==Peut-on avoir un accès de type &amp;quot;phpMyAdmin&amp;quot; à notre base de données ?==&lt;br /&gt;
Vous avez un accès en lecture à la base de données via l'export mais également via la génération des rapports.&lt;br /&gt;
&lt;br /&gt;
La structure de la base de données est documentée ici : http://doc-en.openflyers.com/index.php?title=Database_specification&lt;br /&gt;
&lt;br /&gt;
Par contre, nous nous interdisons de vous fournir un accès en écriture à la base de données. Car nous devons pouvoir garantir l'intégrité de cette base de données vis-à-vis de vous-même, vis-à-vis de vos utilisateurs mais également vis-à-vis de tierces personnes ou encore vis-à-vis des autorités.&lt;br /&gt;
&lt;br /&gt;
Cependant, si vous avez besoin de modifier une saisie en base de données, nous pouvons intervenir sur votre demande par e-mail ou courrier. Cette opération est facturée en fonction de sa complexité (voir [http://www.openflyers.com/pricing/catalog-price le catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Peut-on importer notre ancienne base de données externe OF 1.3.x lors du passage en production sur la solution hébergée OpenFlyers ?==&lt;br /&gt;
Oui, il est tout a fait possible de reprendre votre ancienne base de données OF 1.3.x.&lt;br /&gt;
&lt;br /&gt;
Le coût est à partir de 50 € HT/heure, le temps effectif étant déterminé lors de l'import. Il faut nous faire parvenir un export complet de la base SQL de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Il faut au préalable que vous ayez créé une [https://client.openflyers.com/newSubscription.php?lang=francais plateforme client ], puis nous signaler l'identifiant de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite vous créer la ou les factures, selon l'abonnement choisi, à partir de votre [http://client.openflyers.com/ clientmanager]&lt;br /&gt;
&lt;br /&gt;
Vous acquittez les factures correspondant à la migration de votre base de données, de votre abonnement et éventuellement de la migration de votre plateforme de la version 2.1 en 3.0&lt;br /&gt;
&lt;br /&gt;
Puis, l'idéal est de fixer un rendez-vous, par exemple, le XX-XX-2012 à 9 h. Puis, à cette même date :&lt;br /&gt;
*vous bloquez votre accès sur votre plateforme OF le jour J à 9h00 ;&lt;br /&gt;
*vous nous envoyez la base de données en suivant ;&lt;br /&gt;
*nous migrons, dès réception, votre base de données vers la version 2.1 (ou la version 3.0) sur nos serveurs ;&lt;br /&gt;
*une fois cela fait, on vous envoie un e-mail ;&lt;br /&gt;
*vous mettez en place de votre côté une redirection vers la nouvelle URL OF.&lt;br /&gt;
&lt;br /&gt;
Il faut compter environ 2 heures maximum pour procéder à la migration (suivant les difficultés que nous rencontrerons avec votre base de données).&lt;br /&gt;
&lt;br /&gt;
Les opérations d'export/import sont ainsi synchronisées et l'interruption de service est la plus courte possible.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Comment accéder à mon compte client ?]]==&lt;br /&gt;
&lt;br /&gt;
==Comment modifier des éléments de la fiche client ?==&lt;br /&gt;
Il vous suffit de vous [[Modèle_commercial_et_compte_client_OpenFlyers#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|connecter à votre plateforme]] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Puis d'éditer la fiche en allant dans Données/Affichage et fiche personnelle.&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Changer_de_responsable_en_charge_d.27OpenFlyers|Comment changer de responsable OpenFlyers ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Renouveler_son_abonnement_OpenFlyers|Comment renouveler l'abonnement ?]]==&lt;br /&gt;
&lt;br /&gt;
==Nous avons renouvelé notre abonnement et nous avons quand même un message d'alerte concernant la cotisation==&lt;br /&gt;
Le message d'alerte '''votre cotisation n'est pas à jour''' correspond à un message lié à la configuration de la plateforme OpenFlyers et non pas à l'abonnement OpenFlyers de cette plateforme. Il signifie que l'utilisateur qui se connecte n'est pas à jour de sa qualification/validité cotisation au sein de la structure.&lt;br /&gt;
&lt;br /&gt;
Dans tous les cas, l'administrateur référent (celui dont l'adresse e-mail doit apparaitre sur la page d'accueil d'OpenFlyers) conserve néanmoins tous ses droits.&lt;br /&gt;
&lt;br /&gt;
Cf. Gestion des validités des utilisateurs dans OpenFlyers [[Validity-management3#Gestion_des_validit.C3.A9s_des_utilisateurs| la version 3]] et la [[Validity-management4#Gestion_des_validit.C3.A9s_des_utilisateurs| la version 4]].&lt;br /&gt;
&lt;br /&gt;
==Changement du nombre de ressources en cours d'année et mise à jour de l'abonnement==&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|Ajouter une ressource à son abonnement OpenFlyers]]&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Enlever_une_ressource_.C3.A0_son_abonnement_OpenFlyers|Enlever une ressource à son abonnement OpenFlyers]]&lt;br /&gt;
*[[Modèle_commercial_et_compte_client_OpenFlyers#Remplacer_une_ressource_par_une_autre_dans_son_abonnement_OpenFlyers|Remplacer une ressource dans son abonnement OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Remplacer_une_ressource_par_une_autre_dans_son_abonnement_OpenFlyers|Comment remplacer une ressource par une autre ?]]==&lt;br /&gt;
&lt;br /&gt;
==Facturation des ressources réelles et virtuelles==&lt;br /&gt;
A partir de la version 2.1 d'OpenFlyers, seules les ressources qui génèrent du chiffre d'affaires pour la structure cliente sont intégrées dans l'abonnement. Ainsi, les salles de cours ne sont pas retenues dans le calcul de l'abonnement. Pour qu'OpenFlyers fasse la différence entre une ressource &amp;quot;réelle&amp;quot; et une ressource &amp;quot;virtuelle&amp;quot;, il suffit de décocher &amp;quot;Aéronef réel&amp;quot; au niveau de la ligne associée à l'aéronef ('''Admin &amp;gt; Flotte &amp;gt; Aéronefs''' colonne Aéronefs réels).&lt;br /&gt;
&lt;br /&gt;
==[[Créer_une_plateforme_OpenFlyers_pour_sa_structure#Prise_d.27abonnement|Nous avons créé une plateforme, comment passer en production ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Getting_started_with_OpenFlyers#Forfait_param.C3.A9trage|Comment fonctionne le forfait paramétrage ?]]==&lt;br /&gt;
===[[Getting_started_with_OpenFlyers#Chronologie_du_forfait_param.C3.A9trage|Quelle est la chronologie du paramétrage ?]]===&lt;br /&gt;
&lt;br /&gt;
==J'ai souscrit un abonnement First Price - Peut-on souscrire à tout moment un forfait paramétrage ?==&lt;br /&gt;
Oui, effectivement. Il se peut que le paramétrage de votre plateforme se révèle complexe, ou bien que vous manquiez de temps pour le configurer. Vous pouvez à tout moment opter pour notre forfait paramétrage, dont vous pouvez retrouver le tarif dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire].&lt;br /&gt;
&lt;br /&gt;
Cependant, dans le cas là, nous repartons d'une base de données vierge pour ne pas perdre de temps dans la correction (et la compréhension) du paramétrage initialement effectué.&lt;br /&gt;
&lt;br /&gt;
==J'ai souscrit un abonnement First Price - Peut-on basculer en cours d'année vers un abonnement Business ?==&lt;br /&gt;
Oui, vous pouvez à tout moment basculer vers un abonnement Business. Il faut pour cela nous en faire la demande. Nous vous créons alors la facture correspondant à la différence de tarif. Vous pouvez ensuite régler cette facture depuis votre Client Manager.&lt;br /&gt;
&lt;br /&gt;
==Je m'abonne en cours d'année - Combien vais-je devoir payer ?==&lt;br /&gt;
Pour la première année d'abonnement, le prix est calculé au prorata du nombre de jours civils entre la date de la commande et le trente-et-un (31) décembre de l’année civile en cours cf nos [http://www.openflyers.com/license/conditionsgenerales1_3.pdf conditions générales].&lt;br /&gt;
&lt;br /&gt;
==L'accès First Price dispose-t-il d'une connexion sécurisée ?==&lt;br /&gt;
Non, l'accès First Price ne dispose pas d'une connexion sécurisée. Il peut être pris en option (renouvelable chaque année) selon le tarif en vigueur dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]. L'accès First Price plus l'option HTTPS est de même niveau que le Business avec HTTPS inclus (256 bits).&lt;br /&gt;
&lt;br /&gt;
=Plateforme OpenFlyers=&lt;br /&gt;
==[[Créer_une_plateforme_OpenFlyers_pour_sa_structure|Comment créer une plateforme ?]]==&lt;br /&gt;
&lt;br /&gt;
==Impossible d'accéder à la plateforme de notre structure après création==&lt;br /&gt;
Attention ! Il ne faut pas confondre le couple identifiant/mot de passe qui permet d'accéder au compte client OpenFlyers de votre structure, depuis [https://client.openflyers.com Client Manager], avec le couple identifiant/mot de passe qui permet d'accéder à la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
*Le couple identifiant/mot de passe pour accéder au compte client OpenFlyers de votre structure vous a été communiqué par e-mail.&lt;br /&gt;
*Le couple identifiant/mot de passe pour accéder à votre plateforme OpenFlyers, immédiatement après création, est admin/admin. Vous êtes invité à le modifier des que possible&lt;br /&gt;
&lt;br /&gt;
==Nous avons déjà une plateforme OpenFlyers version X et nous voudrions tester la version Y==&lt;br /&gt;
===Quelles alternatives ?===&lt;br /&gt;
====soit vous migrez directement de la version X vers la version Y====&lt;br /&gt;
'''Nous recommandons cette solution (c'est même un prérequis dans le cadre du [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|forfait paramétrage]])'''&lt;br /&gt;
&lt;br /&gt;
*avantages :&lt;br /&gt;
:*Vous habituez vos utilisateurs à la nouvelle interface sans pour autant leur activer les nouvelles fonctionnalités&lt;br /&gt;
:*Vous paramétrez tranquillement depuis une base de données à jour les éléments&lt;br /&gt;
*inconvénients :&lt;br /&gt;
:*vous payez de suite la tarification de la version Y&lt;br /&gt;
:*vous êtes moins libre car vous travaillez sur une base de données en production (mais vous pouvez supprimer cet inconvénient en travaillant en parallèle sur une autre base de données en test)&lt;br /&gt;
Pour procéder à cette migration, il suffit d'envoyer un e-mail à l'équipe OpenFlyers. A noter, qu'il faudra acquitter une nouvelle facture d'hébergement correspondant à la différence de tarification entre la version X et la version Y.&lt;br /&gt;
&lt;br /&gt;
====soit vous créez une nouvelle plateforme qui vous servira de plateforme de test====&lt;br /&gt;
*avantages :&lt;br /&gt;
:*vous avez toute latitude pour paramétrer sans risque&lt;br /&gt;
:*vous ne payez pas la différence de coût entre la version X et la version Y pendant que vous testez&lt;br /&gt;
*inconvénients :&lt;br /&gt;
:*lors de votre migration de votre plateforme en production, vous devrez reprendre tout le paramétrage&lt;br /&gt;
&lt;br /&gt;
Pour cela, il vous suffit de suivre [[#Comment_cr.C3.A9er_une_plateforme_.3F|la procédure de création de plateforme]].&lt;br /&gt;
&lt;br /&gt;
Ensuite, lorsque vous souhaiterez migrer de la version X à la version Y (passage en production sur la version Y), voici ce qu'il faudra faire :&lt;br /&gt;
*nous envoyer un e-mail de demande de migration (ou passer par le forum)&lt;br /&gt;
Alors nous effectuerons les actions suivantes :&lt;br /&gt;
*migration de la base de données X vers la Y&lt;br /&gt;
*changement du pointage de votre adresse nom_de_la_plateforme.openflyers.fr par exemple de la X vers la version Y&lt;br /&gt;
Ensuite vous devrez modifier les paramétrages de la nouvelle Y (en reprenant par exemple ceux de votre version de test)&lt;br /&gt;
&lt;br /&gt;
Une fois que cela sera fait, vous nous le direz et nous supprimerons la base de données de la version Y&lt;br /&gt;
&lt;br /&gt;
Ensuite nous facturons chaque demande de migration de base de données (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
====Forfait paramétrage====&lt;br /&gt;
N'oubliez-pas que nous proposons [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|le forfait paramétrage]] pour la configuration d'OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
===Quel est le délai pour migrer une base de données ?===&lt;br /&gt;
Il faut compter 1 semaine&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#D.C3.A9roulement_d.27une_migration|Comment se fait la migration vers une version supérieure ?]]==&lt;br /&gt;
&lt;br /&gt;
==[[Modèle_commercial_et_compte_client_OpenFlyers#Cons.C3.A9quences_d.27une_migration|Quelles sont les conséquences d'une migration ?]]==&lt;br /&gt;
&lt;br /&gt;
==La configuration nous laisse perplexe (paramétrage de la facturation, de la comptabilité, du décompte des temps de vols), comment faire ?==&lt;br /&gt;
Si vous souhaitez utiliser en production rapidement votre plateforme OpenFlyers (par exemple idéalement à l'occasion d'un nouvel exercice comptable, c'est à dire au 1er janvier), et que vous souhaitez avoir un paramétrage fonctionnel rapidement sans avoir à y consacrer des heures pour comprendre, tester et sans doute passer à côté de certaines &amp;quot;subtilités&amp;quot;, alors sachez que nous avons mis en place un &amp;quot;[[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|forfait paramétrage]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ce forfait est également valable pour un client utilisateur de la version 1.3.x et qui souhaite migrer sans attendre à la version 3.0.3 en utilisant toutes ses fonctionnalités (comptes pilotes et heures de vols).&lt;br /&gt;
&lt;br /&gt;
==Nous avons une version 3 en test==&lt;br /&gt;
===mais nous souhaiterions reprendre tout à zéro, comment faire ?===&lt;br /&gt;
Vous vous inscrivez à nouveau avec un nouveau nom ici : http://client.openflyers.com&lt;br /&gt;
&lt;br /&gt;
===Peut-on garder la configuration de la version 3 et migrer uniquement les réservations de la 1.3.x ?===&lt;br /&gt;
Non, ce n'est pas possible car les contenus auront évolués différemment.&lt;br /&gt;
&lt;br /&gt;
Voila ce qu'il faut faire :&lt;br /&gt;
*demander la migration par e-mail de la 1.3.x vers la 3 avec passage en prod sur la 3 (c'est transparent pour les utilisateurs : seule l'interface changera pour eux tant que l'administrateur ne leur aura pas donné de droits supplémentaires)&lt;br /&gt;
*reprendre la configuration faite sur la 3 en test sur la nouvelle 3&lt;br /&gt;
*envoyer un nouveau e-mail pour dire que l'on peut supprimer l'ancienne 3 en test&lt;br /&gt;
&lt;br /&gt;
==[[Getting_started_with_OpenFlyers#Mettre_en_place_un_TPE_virtuel|Comment mettre en place une solution de paiement en ligne par carte bancaire pour les comptes clients ?]]==&lt;br /&gt;
&lt;br /&gt;
==Comment passer à la gestion des comptes et la comptabilité dans OpenFlyers ?==&lt;br /&gt;
Pour activer la gestion des comptes et de la comptabilité dans OpenFlyers, vous pouvez suivre les FAQ dédiées à la comptabilité ainsi que les documentations qui présentent les modules de comptabilité :&lt;br /&gt;
*[[FAQ_accounting2.1|FAQ comptabilité version 2.1]]&lt;br /&gt;
*[[FAQ_accounting3|FAQ comptabilité version 3.0]]&lt;br /&gt;
*[[FAQ_accounting4|FAQ comptabilité version 4]]&lt;br /&gt;
*[[Accueil#Comptabilit.C3.A9|Documentations sur la comptabilité]]&lt;br /&gt;
dont [[Account#Mise_en_place_de_la_comptabilit.C3.A9_dans_OpenFlyers|Quelques conseils sur la mise en place de la comptabilité dans OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
=Support=&lt;br /&gt;
==Quels sont les supports techniques ?==&lt;br /&gt;
Il existe à ce jour 3 types de support :&lt;br /&gt;
*le support-forum accessible depuis notre site internet http://www.openflyers.com à l'onglet &amp;quot;Support&amp;quot;&lt;br /&gt;
*le support par e-mail réservé aux abonnements &amp;quot;Business&amp;quot; et plus.&lt;br /&gt;
*le [http://www.openflyers.com/support support ponctuel par téléphone] qui peut vous permettre de vous dépanner si nous pouvons vous fournir la réponse en temps réel.&lt;br /&gt;
&lt;br /&gt;
==[[How_to_communicate_with_OpenFlyers#Cr.C3.A9er_un_compte_d.27acc.C3.A8s_au_support-forum|Comment créer son accès au support-forum ?]]==&lt;br /&gt;
&lt;br /&gt;
==Les e-mails envoyés à OpenFlyers sont retournés en erreur==&lt;br /&gt;
Lors de l'envoi de vos messages, vous avez avez eu un message d'erreur en retour.&lt;br /&gt;
&lt;br /&gt;
Le problème peut venir de l'[[Wikipedia-fr:Sender_Policy_Framework|authentification SPF]] que nous avons mis en place.&lt;br /&gt;
&lt;br /&gt;
Ainsi, si le serveur OpenFlyers refuse les e-mails non authentifiés qui parviennent depuis un nom de domaine comme smtp.nom-de-domaine.com pour défaut de SPF, il faut rajouter un enregistrmenet TXT dans le gestionnaire du serveur concerné avec la ligne de commande : v=spf1 include:_spf.nom-de-domaine.com ~all.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13819</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13819"/>
				<updated>2016-01-13T17:14:03Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Dons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Dons=&lt;br /&gt;
*Enregistrement du don à effectuer :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Tiers percevant le don (401...)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Divers (pourboires, dons courants...) (6238)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Le compte de charge ''Divers (pourboires, dons courants...) (6238)'' peut être remplacé par le compte de charge exceptionnelle ''Dons, libéralités (6713)''.&lt;br /&gt;
&lt;br /&gt;
*Lorsque le don est décaissé par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Tiers percevant le don (401...)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*[[#Enregistrement_des_subventions_destin.C3.A9es_.C3.A0_la_structure|Des subventions destinées directement à la structure]]&lt;br /&gt;
*[[#Ventilation_des_subventions_destin.C3.A9es_aux_utilisateurs|Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées]]&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Divers (pourboires, dons courants...) (6238)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A la place du compte ''Divers (pourboires, dons courants...) (6238)'' cela peut être également le compte de charge exceptionnelle ''Dons, libéralités (6713)''.&lt;br /&gt;
&lt;br /&gt;
*Lorsque le don est décaissé par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et uniquement l'encaissement de la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions destinées aux utilisateurs==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13818</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13818"/>
				<updated>2016-01-13T17:11:27Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Cotisations/abonnements année N+1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Dons=&lt;br /&gt;
*Enregistrement du don à effectuer :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Lorsque la subvention est encaissée par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*[[#Enregistrement_des_subventions_destin.C3.A9es_.C3.A0_la_structure|Des subventions destinées directement à la structure]]&lt;br /&gt;
*[[#Ventilation_des_subventions_destin.C3.A9es_aux_utilisateurs|Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées]]&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Divers (pourboires, dons courants...) (6238)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A la place du compte ''Divers (pourboires, dons courants...) (6238)'' cela peut être également le compte de charge exceptionnelle ''Dons, libéralités (6713)''.&lt;br /&gt;
&lt;br /&gt;
*Lorsque le don est décaissé par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et uniquement l'encaissement de la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions destinées aux utilisateurs==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13817</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13817"/>
				<updated>2016-01-13T17:08:45Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Enregistrement des subventions destinées à la structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*[[#Enregistrement_des_subventions_destin.C3.A9es_.C3.A0_la_structure|Des subventions destinées directement à la structure]]&lt;br /&gt;
*[[#Ventilation_des_subventions_destin.C3.A9es_aux_utilisateurs|Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées]]&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Divers (pourboires, dons courants...) (6238)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A la place du compte ''Divers (pourboires, dons courants...) (6238)'' cela peut être également le compte de charge exceptionnelle ''Dons, libéralités (6713)''.&lt;br /&gt;
&lt;br /&gt;
*Lorsque le don est décaissé par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et uniquement l'encaissement de la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions destinées aux utilisateurs==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13816</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13816"/>
				<updated>2016-01-13T17:04:06Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Enregistrement des subventions destinées à la structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*[[#Enregistrement_des_subventions_destin.C3.A9es_.C3.A0_la_structure|Des subventions destinées directement à la structure]]&lt;br /&gt;
*[[#Ventilation_des_subventions_destin.C3.A9es_aux_utilisateurs|Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées]]&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Pourboires et dons (6238)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Lorsque le don est décaissé par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et uniquement l'encaissement de la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions destinées aux utilisateurs==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13815</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13815"/>
				<updated>2016-01-13T17:03:04Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Enregistrement des subventions destinées à la structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*[[#Enregistrement_des_subventions_destin.C3.A9es_.C3.A0_la_structure|Des subventions destinées directement à la structure]]&lt;br /&gt;
*[[#Ventilation_des_subventions_destin.C3.A9es_aux_utilisateurs|Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées]]&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Divers (pourboires, dons courants...) (6238)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Lorsque le don est décaissé par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||||1000 €&lt;br /&gt;
|-&lt;br /&gt;
|Tiers qui perçoit le don (401...)||1000 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et uniquement l'encaissement de la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions destinées aux utilisateurs==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Interfa%C3%A7age-OpenFlyers-et-armoire-%C3%A0-cl%C3%A9&amp;diff=13809</id>
		<title>Interfaçage OpenFlyers et armoire à clé</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Interfa%C3%A7age-OpenFlyers-et-armoire-%C3%A0-cl%C3%A9&amp;diff=13809"/>
				<updated>2016-01-11T17:22:13Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Présentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
L'objet de cette page est de décrire le protocole d'interfaçage avec toute solution d'armoire à clés tiers. Pour les armoires à clés commercialisées par OpenFlyers, il faut se référer à la [[Access-Control|documentation sur le contrôle d'accès]].&lt;br /&gt;
&lt;br /&gt;
Le protocole repose sur le principe que l'interfaçage est réalisé par un logiciel de contrôle de l'armoire à clé sur un PC ou une solution embarquée et qui dispose d'un accès à internet lui permettant de communiquer avec OpenFlyers. La communication est synchrone.&lt;br /&gt;
&lt;br /&gt;
=Interface utilisateur OpenFlyers=&lt;br /&gt;
L'utilisateur ouvre un vol dans OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Menu-contextuel-ouverture-de-vol.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il se retrouve sur le formulaire de saisie du vol en mode Départ en vol:&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Formulaire-ouverture-de-vol.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsqu'il clique sur le bouton de validation, 3 cas peuvent se présenter :&lt;br /&gt;
*Une alerte ou plusieurs alertes rouges (bloquantes), s'affichent : l'utilisateur n'a pas la possibilité de surpasser ses alertes, il ne peut alors récupérer la clé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Alertes-bloquantes-en-ouverture-vol.png]]&lt;br /&gt;
&lt;br /&gt;
*Une alerte ou plusieurs alertes oranges (non-bloquantes), s'affichent : l'utilisateur a la possibilité de surpasser ses alertes, et ainsi de récupérer la clé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Alertes-non-bloquantes-en-ouverture-vol.png]]&lt;br /&gt;
&lt;br /&gt;
*Aucune alerte ne s'affiche, l'utilisateur se retrouve alors directement sur la page lui indiquant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Message autorisation libération clé.png]]&lt;br /&gt;
&lt;br /&gt;
Une fois qu'il a cliqué sur '''LIBÉRER LA CLÉ''', il dispose de X secondes. Cette durée est paramétrable par OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
*Lorsqu'il rentre de vol, l'utilisateur n'a plus qu'a retourner sur le formulaire de saisie de vol et à fermer son vol. La clé doit etre remise en place sur l'armoire pour fermer le vol.&lt;br /&gt;
&lt;br /&gt;
=Interface administrateur OpenFlyers=&lt;br /&gt;
==Activation et configuration de la gestion des armoires à clé==&lt;br /&gt;
*'''Admin'''&lt;br /&gt;
*'''Configuration &amp;gt; Paramétrage'''&lt;br /&gt;
*Dans le formulaire '''Gestion des vols''', sélectionner '''Activé(e)''' pour le champ '''Gestion armoire à clé'''&lt;br /&gt;
*Cliquer sur le bouton '''Valider''' lié au formulaire&lt;br /&gt;
*Dans le formulaire '''Gestion des vols''', sélectionner '''Activé(e)''' pour le champ '''Gestion des clés'''&lt;br /&gt;
*Cliquer à nouveau sur le bouton '''Valider''' lié au formulaire&lt;br /&gt;
*Le formulaire apparait alors comme suit :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Paramétrage armoire à clé.png]]&lt;br /&gt;
&lt;br /&gt;
*Signification des paramètres :&lt;br /&gt;
**'''Gestion des clés''' : Gestion par OpenFlyers des clés de l'armoire ('''Désactivé(e)''' ou '''Activé(e)''')&lt;br /&gt;
**'''Nombre de clés''' : nombre de clés possibles dans l'armoire&lt;br /&gt;
**'''Temporisation''' : temps en secondes pendant lequel la clé peut être retirée après autorisation.&lt;br /&gt;
**'''Logiciel de contrôle de l'armoire à clé''' : Il s'agit du nom du logiciel de contrôle de l'armoire à clé. PyOpenKey (protocole open), OpenKey (protocole Openflyers, version 1), pyOpenkey2 (protocole Openflyers version 2) . &lt;br /&gt;
**'''IP du PC contenant le logiciel de contrôle''' : adresse IP du PC sur lequel se trouve le logiciel de contrôle de l'armoire à clé.&lt;br /&gt;
**'''Port du PC contenant le logiciel de contrôle''' : port sur lequel écoute le logiciel de contrôle de l'armoire à clé.&lt;br /&gt;
**'''Fermeture automatique des vols au retour de la clé''' : permet de programmer la fermeture automatique des vols au retour de la clé.&lt;br /&gt;
**'''Phrase mot de passe''' : phrase permettant d'authentifier la source de la transmission dans le cas d'une requête XML-RPC.&lt;br /&gt;
'''Attention :''' dans le cas où le logiciel de contrôle de l'armoire à clé se trouve sur le même PC que pour la saisie des vols dans OpenFlyers, il peut y avoir des problèmes de loopback au niveau du routeur.&lt;br /&gt;
&lt;br /&gt;
==Attribution des clés aux ressources/aéronefs==&lt;br /&gt;
''Dans le cas où c'est le logiciel OpenFlyers qui gère les clés.''&lt;br /&gt;
*'''Admin'''&lt;br /&gt;
*'''Ressources &amp;gt; Ressources &amp;gt; Actives''' ou '''Flotte &amp;gt; Aéronefs &amp;gt; Aéronefs actifs''' sous version OF 2.1&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Liste des aéronefs.png]]&lt;br /&gt;
&lt;br /&gt;
Pour chaque aéronef concerné, il suffit d'attribuer un numéro et un nom de clé dans les champs correspondants. La validation de la saisie se fait automatiquement en cliquant hors du champ de saisie.&lt;br /&gt;
&lt;br /&gt;
=Protocole de dialogue XML-RPC entre OpenFlyers et le logiciel de gestion de l'armoire à clé=&lt;br /&gt;
Le dialogue avec le serveur XML-RPC d'OpenFlyers doit s'effectuer en '''HTTPS'''.&lt;br /&gt;
&lt;br /&gt;
==Demande de libération d'une clé==&lt;br /&gt;
&lt;br /&gt;
===Cas avec gestion des clés par OpenFlyers===&lt;br /&gt;
&lt;br /&gt;
*Lorsque qu'une clé doit être libérée, le navigateur envoie un message au logiciel de contrôle de l'armoire à clé par le protocole HTTP sous la forme suivante :&lt;br /&gt;
http://127.0.0.1:4080/?sessid=e5f01p2oqh2vb36arisr8k5j87&amp;amp;amp;timeOut=10000&amp;amp;amp;key=1&amp;amp;amp;resource=2&amp;amp;amp;person=12;action='releaseKey'&lt;br /&gt;
&lt;br /&gt;
:*L'adresse IP (ici 127.0.0.1) et le port (ici 4080) sont fonction de la [[#Activation_et_configuration_de_la_gestion_des_armoires_.C3.A0_cl.C3.A9|configuration de l'armoire à clé dans OpenFlyers]].&lt;br /&gt;
:*sessid contient le numéro de session en cours&lt;br /&gt;
:*timeout correspond au temps d'attente pour la prise d'une clé en millisecondes&lt;br /&gt;
:*key contient le numéro de la clé concernée&lt;br /&gt;
:*resource contient le numéro de la ressource concernée&lt;br /&gt;
:*person contient le numéro de l'utilisateur qui fait la demande&lt;br /&gt;
:*action est un mot clé désignant l'objet de la commande&lt;br /&gt;
:**release_key: ordre de libérer la clé&lt;br /&gt;
:**open_door: ordre d'ouvrir la porte&lt;br /&gt;
:**init_tags: ordre de lire les tags des clés&lt;br /&gt;
*Le logiciel de contrôle de l'armoire à clé doit alors envoyer une demande d'ordre au serveur OpenFlyers à l'adresse suivante https://structure.openflyers.tld/actionOnDemand.php où il faut remplacer structure.openflyers.tld par l'adresse de la plateforme OpenFlyers concernée, avec comme commande XML_RPC '''checkCommand (&amp;quot;e5f01p2oqh2vb36arisr8k5j87&amp;quot;,int(key))'''.&lt;br /&gt;
&lt;br /&gt;
*Le serveur OpenFlyers vérifie alors l'action demandée :&lt;br /&gt;
Pour release_key, il est vérifié :&lt;br /&gt;
#Que la clé est au bon format et existe. Lorsque la clé est validée, on passe à l'étape suivante sinon on retourne 0&lt;br /&gt;
#Que l'utilisateur faisant la demande est bien celui qui est connecté. Lorsque c'est le cas, on passe à l'étape suivante sinon on retourne 0&lt;br /&gt;
#Ensuite si l'utilisateur qui a passé la demande :&lt;br /&gt;
#*A le droit '''Gestion des clés''' (administrateur) alors on libère la clé sans condition (cela permet de libérer la clé sans contrôle) et on retourne 1&lt;br /&gt;
#*N'a pas le droit '''Gestion des clés''' (pilote) alors on vérifie s'il existe un vol ouvert qui remplit la double condition :&lt;br /&gt;
#**Vol attribué à l'utilisateur&lt;br /&gt;
#**Aéronef du vol associé à la demande de libération de la clé&lt;br /&gt;
#**Lorsque la double condition est remplie, on retourne 1 sinon 0&lt;br /&gt;
&lt;br /&gt;
*Le serveur retourne ensuite la réponse :&lt;br /&gt;
**1 dans le cas d'autorisation de libération de clé &lt;br /&gt;
**0 dans le cas contraire&lt;br /&gt;
&lt;br /&gt;
====Exemple de script en Python d'utilisation de la commande checkCommand avec gestion des clés====&lt;br /&gt;
&amp;lt;python&amp;gt;# load library&lt;br /&gt;
from twisted.web.xmlrpc import Proxy&lt;br /&gt;
from twisted.internet import reactor, ssl&lt;br /&gt;
 &lt;br /&gt;
def printValue(value):&lt;br /&gt;
    print repr(value)&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
 &lt;br /&gt;
def printError(error):&lt;br /&gt;
    print 'error', error&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
 &lt;br /&gt;
# URL of the XML-RPC server&lt;br /&gt;
proxy = Proxy('https://yourURL.xx/actionOnDemand.php')&lt;br /&gt;
 &lt;br /&gt;
# init array to send&lt;br /&gt;
sessid = &amp;quot;&amp;quot;&lt;br /&gt;
key_num = 1&lt;br /&gt;
 &lt;br /&gt;
# send to the XML-RPC server&lt;br /&gt;
proxy.callRemote('checkCommand', sessid, key_num).addCallbacks(printValue, printError)&lt;br /&gt;
reactor.run()&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce test peut être complété (pour obtenir une réponse &amp;quot;1&amp;quot;) en simulant une armoire à clé à l'aide d'un script PHP de la façon suivante :&lt;br /&gt;
*Installer un serveur local (par exemple [http://www.wampserver.com/ wampserver] sous Windows) de façon à avoir le port 127.0.0.1 qui lui est attribué&lt;br /&gt;
*Configurer la plateforme OpenFlyers de manière à gérer l'armoire à clé avec les éléments suivants :&lt;br /&gt;
**'''IP du PC contenant le logiciel de contrôle''' : 127.0.0.1&lt;br /&gt;
**'''Port du PC contenant le logiciel de contrôle''' : 80&lt;br /&gt;
*Configurer la plateforme OpenFlyers de manière à gérer les clés&lt;br /&gt;
*A la racine du répertoire www, mettre le script index.php suivant (on suppose que ce script est appelé par défaut lorsqu'on utilise l'URL http://127.0.0.1 ) :&lt;br /&gt;
&amp;lt;php&amp;gt;&amp;lt;?php &lt;br /&gt;
file_put_contents('test.txt', 'TEST', FILE_APPEND );&lt;br /&gt;
file_put_contents('test.txt', print_r($_REQUEST, true), FILE_APPEND );&lt;br /&gt;
?&amp;gt;&amp;lt;/php&amp;gt;&lt;br /&gt;
*Toujours à la racine du répertoire www, créer un fichier test.txt&lt;br /&gt;
Le script PHP écrira dans le fichier test.txt les variables transmises lors de la demande d'ouverture de l'armoire à clé :&lt;br /&gt;
&amp;lt;pre&amp;gt;TESTArray&lt;br /&gt;
(&lt;br /&gt;
    [sessid] =&amp;gt; j2eo92215nbef09borb74jftm1&lt;br /&gt;
    [key] =&amp;gt; 1&lt;br /&gt;
    [resource] =&amp;gt; 1&lt;br /&gt;
    [person] =&amp;gt; 1&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Il suffit alors de recopier la valeur de '''sessid''' et de '''key''' dans le script python de ce début de paragraphe et de le tester : il devrait renvoyer 1.&lt;br /&gt;
&lt;br /&gt;
===Cas sans gestion des clés par OpenFlyers===&lt;br /&gt;
&lt;br /&gt;
*Lorsque qu'une demande de vérification doit être réalisée, le navigateur envoie un message au logiciel de contrôle de l'armoire à clé par le protocole HTTP sous la forme suivante :&lt;br /&gt;
http://127.0.0.1:4080/?sessid=e5f01p2oqh2vb36arisr8k5j87&amp;amp;amp;resource=2&amp;amp;amp;person=12&lt;br /&gt;
&lt;br /&gt;
:*L'adresse IP (ici 127.0.0.1) et le port (ici 4080) sont fonction de la [[#Activation_et_configuration_de_la_gestion_des_armoires_.C3.A0_cl.C3.A9|configuration de l'armoire à clé dans OpenFlyers]].&lt;br /&gt;
:*sessid contient le numéro de session en cours&lt;br /&gt;
:*resource contient le numéro de la ressource concernée&lt;br /&gt;
:*person contient le numéro de l'utilisateur qui fait la demande&lt;br /&gt;
*Le logiciel de contrôle de l'armoire à clé doit alors envoyer une demande d'ordre au serveur OpenFlyers à l'adresse suivante https://structure.openflyers.tld/actionOnDemand.php où il faut remplacer structure.openflyers.tld par l'adresse de la plateforme OpenFlyers concernée, avec comme commande XML_RPC '''checkCommand (&amp;quot;e5f01p2oqh2vb36arisr8k5j87&amp;quot;)'''.&lt;br /&gt;
&lt;br /&gt;
*Le serveur OpenFlyers vérifie alors :&lt;br /&gt;
#Que l'utilisateur faisant la demande est bien celui qui est connecté. Lorsque c'est le cas, on passe à l'étape suivante sinon on retourne 0&lt;br /&gt;
#On vérifie s'il existe un vol ouvert qui remplit la double condition :&lt;br /&gt;
#*Vol attribué à l'utilisateur&lt;br /&gt;
#*Aéronef du vol associé à la demande de libération de la clé&lt;br /&gt;
#*Lorsque la double condition est remplie, on retourne 1 sinon 0&lt;br /&gt;
&lt;br /&gt;
*Le serveur retourne ensuite la réponse :&lt;br /&gt;
**1 dans le cas d'autorisation&lt;br /&gt;
**0 dans le cas contraire&lt;br /&gt;
&lt;br /&gt;
====Exemple de script en Python d'utilisation de la commande checkCommand sans gestion des clés====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;python&amp;gt;# load library&lt;br /&gt;
from twisted.web.xmlrpc import Proxy&lt;br /&gt;
from twisted.internet import reactor, ssl&lt;br /&gt;
 &lt;br /&gt;
def printValue(value):&lt;br /&gt;
    print repr(value)&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
 &lt;br /&gt;
def printError(error):&lt;br /&gt;
    print 'error', error&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
 &lt;br /&gt;
# URL of the XML-RPC server&lt;br /&gt;
proxy = Proxy('https://yourURL.xx/actionOnDemand.php')&lt;br /&gt;
 &lt;br /&gt;
# init array to send&lt;br /&gt;
sessid = &amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# send to the XML-RPC server&lt;br /&gt;
proxy.callRemote('checkCommand', sessid).addCallbacks(printValue, printError)&lt;br /&gt;
reactor.run()&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce test peut être complété (pour obtenir une réponse &amp;quot;1&amp;quot;) en simulant une armoire à clé à l'aide d'un script PHP de la façon suivante :&lt;br /&gt;
*Installer un serveur local (par exemple [http://www.wampserver.com/ wampserver] sous Windows) de façon à avoir le port 127.0.0.1 qui lui est attribué&lt;br /&gt;
*Configurer la plateforme OpenFlyers de manière à gérer l'armoire à clé avec les éléments suivants :&lt;br /&gt;
**'''IP du PC contenant le logiciel de contrôle''' : 127.0.0.1&lt;br /&gt;
**'''Port du PC contenant le logiciel de contrôle''' : 80&lt;br /&gt;
*Configurer la plateforme OpenFlyers de manière à ne pas gérer les clés&lt;br /&gt;
*A la racine du répertoire www, mettre le script index.php suivant (on suppose que ce script est appelé par défaut lorsqu'on utilise l'URL http://127.0.0.1 ) :&lt;br /&gt;
&amp;lt;php&amp;gt;&amp;lt;?php &lt;br /&gt;
file_put_contents('test.txt', 'TEST', FILE_APPEND );&lt;br /&gt;
file_put_contents('test.txt', print_r($_REQUEST, true), FILE_APPEND );&lt;br /&gt;
?&amp;gt;&amp;lt;/php&amp;gt;&lt;br /&gt;
*Toujours à la racine du répertoire www, créer un fichier test.txt&lt;br /&gt;
Le script PHP écrira dans le fichier test.txt les variables transmises lors de la demande d'ouverture de l'armoire à clé :&lt;br /&gt;
&amp;lt;pre&amp;gt;TESTArray&lt;br /&gt;
(&lt;br /&gt;
    [sessid] =&amp;gt; j2eo92215nbef09borb74jftm1&lt;br /&gt;
    [resource] =&amp;gt; 1&lt;br /&gt;
    [person] =&amp;gt; 1&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Il suffit alors de recopier la valeur de '''sessid''' dans le script python de ce début de paragraphe et de le tester : il devrait renvoyer 1.&lt;br /&gt;
&lt;br /&gt;
==Modification de l'état d'une clé==&lt;br /&gt;
''Applicable uniquement dans le cas où le logiciel OpenFlyers gère les clés.''&lt;br /&gt;
*Le logiciel de contrôle de l'armoire à clé doit envoyer un ordre '''notify([1,0,1,1,1,1,0,0], &amp;quot;passphrase&amp;quot;)''' avec comme paramètre un tableau chronologique des clés ayant pour valeur leur état (1 = interrupteur de présence de clé fermé = clé absente de l'armoire, 0 = interrupteur de présence de clé ouvert = clé présente dans l'armoire)&lt;br /&gt;
&lt;br /&gt;
===Exemple de script en Python pour la commande notify===&lt;br /&gt;
Nécessite les librairies Twisted et pyOpenSSL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;python&amp;gt;# load library&lt;br /&gt;
from twisted.web.xmlrpc import Proxy&lt;br /&gt;
from twisted.internet import reactor, ssl&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def printValue(value):&lt;br /&gt;
    print repr(value)&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
&lt;br /&gt;
def printError(error):&lt;br /&gt;
    print 'error', error&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
&lt;br /&gt;
# URL of the XML-RPC server&lt;br /&gt;
proxy = Proxy('https://yourURL.xx/actionOnDemand.php')&lt;br /&gt;
&lt;br /&gt;
# init passphrase&lt;br /&gt;
passphrase = 'SDjklsdiuQSIPO23879ZERK2098ZL2908DFZLK'&lt;br /&gt;
&lt;br /&gt;
# init array to send&lt;br /&gt;
status = []&lt;br /&gt;
state = random.randint(0,1)&lt;br /&gt;
# Alternate 0 and 1 for test&lt;br /&gt;
for i in range(0,10):&lt;br /&gt;
        status.append(state)&lt;br /&gt;
        state = 0 if state == 1 else 1&lt;br /&gt;
#print status&lt;br /&gt;
&lt;br /&gt;
# send to the XML-RPC server&lt;br /&gt;
proxy.callRemote('notify', status, passphrase).addCallbacks(printValue, printError)&lt;br /&gt;
reactor.run()&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces scripts nécessitent les librairies Twisted et pyOpenSSL.&lt;br /&gt;
&lt;br /&gt;
Ils recevront (et afficheront) comme réponse 0 du fait que le numéro de session transmis n'est pas correct (et laissé à une chaine vide).&lt;br /&gt;
&lt;br /&gt;
==Fermeture automatique d'un vol==&lt;br /&gt;
&lt;br /&gt;
Le logiciel de contrôle de l'armoire à clé doit envoyer un ordre '''closeFlight(&amp;quot;passphrase&amp;quot;, &amp;quot;id de ressource&amp;quot;)''' avec comme paramètre un passphrase et l'id qui va entraîner la fermeture du vol effectué sur cette ressource si un vol avait été ouvert et que la &amp;quot;Fermeture automatique des&lt;br /&gt;
vols au retour de la clé&amp;quot; soit activée. La commande retournera comme réponse une structure JSON pour déterminer si la fermeture du vol s'est bien réalisée ou non et qu'il n'y a pas eu d'erreur.&lt;br /&gt;
&lt;br /&gt;
Réponse quand la vérification du passphrase est incorrecte, ce qui a entraîné la non-fermeture du vol :&lt;br /&gt;
&amp;lt;javascript&amp;gt;{[&lt;br /&gt;
    ack : 0&lt;br /&gt;
]}&amp;lt;/javascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Réponse quand la vérification du passphrase est correcte et que la demande de fermeture du vol s'est bien réalisée :&lt;br /&gt;
&amp;lt;javascript&amp;gt;{[&lt;br /&gt;
    ack : 1&lt;br /&gt;
]}&amp;lt;/javascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Réponse quand la vérification du passphrase est correcte et que la demande de fermeture du vol ne s'est pas bien réalisée suite à une erreur :&lt;br /&gt;
&amp;lt;javascript&amp;gt;{[&lt;br /&gt;
    ack : 1,&lt;br /&gt;
    error : 'Message d\'erreur ...'&lt;br /&gt;
]}&amp;lt;/javascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Script d'exemple pour closeFlight===&lt;br /&gt;
&amp;lt;python&amp;gt;# load library&lt;br /&gt;
from twisted.web.xmlrpc import Proxy&lt;br /&gt;
from twisted.internet import reactor, ssl&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def printValue(value):&lt;br /&gt;
    print repr(value)&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
&lt;br /&gt;
def printError(error):&lt;br /&gt;
    print 'error', error&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
&lt;br /&gt;
# URL of the XML-RPC server&lt;br /&gt;
proxy = Proxy('https://yourURL.xx/actionOnDemand.php')&lt;br /&gt;
&lt;br /&gt;
# Id of resource which needs a flight closing&lt;br /&gt;
resource_id = 1&lt;br /&gt;
&lt;br /&gt;
# init passphrase&lt;br /&gt;
passphrase = 'SDjklsdiuQSIPO23879ZERK2098ZL2908DFZLK'&lt;br /&gt;
&lt;br /&gt;
# send to the XML-RPC server&lt;br /&gt;
proxy.callRemote('closeFlight', resource_id, passphrase).addCallbacks(printValue, printError)&lt;br /&gt;
reactor.run()&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemple de script en Python de logiciel de contrôle d'une armoire==&lt;br /&gt;
&amp;lt;python&amp;gt;#!/usr/bin/python&lt;br /&gt;
import xmlrpclib, time, dummy_proto, hashlib&lt;br /&gt;
from twisted.internet import reactor, task, threads, ssl&lt;br /&gt;
from twisted.application import internet, service&lt;br /&gt;
from twisted.internet.protocol import Protocol, ClientCreator, ReconnectingClientFactory&lt;br /&gt;
from twisted.web import resource, server&lt;br /&gt;
&lt;br /&gt;
# Port from which the OF client contact OpenKeys service&lt;br /&gt;
SERVICE_PORT=4080 &lt;br /&gt;
# IP address of the OpenKeys service&lt;br /&gt;
SERVICE_HOST=&amp;quot;192.168.0.200&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# IP address of the key cabinet&lt;br /&gt;
KEYS_ADDR='192.168.0.201'&lt;br /&gt;
# Port from which OpenKeys service contacts the key cabinet&lt;br /&gt;
KEYS_PORT=6002&lt;br /&gt;
#Time to release the key&lt;br /&gt;
KEY_RELEASE_DURATION=15&lt;br /&gt;
&lt;br /&gt;
# sha224 passwords&lt;br /&gt;
PASSWORDS=('847bed9bc354e7e47bc5350a3b3aaf6124f5748224a3c7ad79586c3c')&lt;br /&gt;
&lt;br /&gt;
# init passphrase&lt;br /&gt;
passphrase = 'SDjklsdiuQSIPO23879ZERK2098ZL2908DFZLK'&lt;br /&gt;
&lt;br /&gt;
OF_XMLRPC_URL=&amp;quot;https://structure.openflyers.tld/actionOnDemand.php&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DEBUG=False&lt;br /&gt;
&lt;br /&gt;
class dummyProtocol(Protocol):&lt;br /&gt;
	def __init__(self, rpc_server):&lt;br /&gt;
		self.rpc_server=rpc_server&lt;br /&gt;
		self.lc = None&lt;br /&gt;
&lt;br /&gt;
	def connectionMade(self):&lt;br /&gt;
		if not self.lc:&lt;br /&gt;
			# update status every 10 minutes&lt;br /&gt;
			self.lc = task.LoopingCall(self.updateStatus)&lt;br /&gt;
			self.lc.start(600)&lt;br /&gt;
&lt;br /&gt;
	def dataReceived(self, data):&lt;br /&gt;
		msg=dummy_proto.dummy_message.newFromData(data)&lt;br /&gt;
		if DEBUG: msg.display()&lt;br /&gt;
		try:&lt;br /&gt;
			if type(msg)==dummyproto.dummy_ONOFF_Control_Response:&lt;br /&gt;
				response = self.rpc_server.notify(msg.getKeysStatus(),passphrase)&lt;br /&gt;
		except Exception, err:&lt;br /&gt;
			if DEBUG: print &amp;quot;error: &amp;quot;, err&lt;br /&gt;
			pass # ignore&lt;br /&gt;
&lt;br /&gt;
	def updateStatus(self):&lt;br /&gt;
		msg = dummy_proto.dummy_State_Request()&lt;br /&gt;
		self.transport.write(msg.build_message())&lt;br /&gt;
	&lt;br /&gt;
	def send(self, dummy_data):&lt;br /&gt;
		self.transport.write(dummy_data.build_message())&lt;br /&gt;
&lt;br /&gt;
class dummyClientFactory(ReconnectingClientFactory):&lt;br /&gt;
	def __init__(self, rpc_server):&lt;br /&gt;
		self.rpc_server = rpc_server&lt;br /&gt;
&lt;br /&gt;
	def buildProtocol(self, addr):&lt;br /&gt;
		self.resetDelay()&lt;br /&gt;
		self.protocol = dummyProtocol(self.rpc_server)&lt;br /&gt;
		return self.protocol&lt;br /&gt;
&lt;br /&gt;
	def clientConnectionLost(self, connector, reason):&lt;br /&gt;
		ReconnectingClientFactory.clientConnectionLost(self, connector, reason)&lt;br /&gt;
		connector.connect()&lt;br /&gt;
&lt;br /&gt;
	def clientConnectionFailed(self, connector, reason):&lt;br /&gt;
		if DEBUG: print 'Connection failed. Reason:', reason&lt;br /&gt;
		ReconnectingClientFactory.clientConnectionFailed(self, connector, reason)&lt;br /&gt;
&lt;br /&gt;
	# blocking method ! must be run in a new thread&lt;br /&gt;
	def release_key(self, key_num, timeOur):&lt;br /&gt;
		m = dummy_proto.dummy_ONOFF_Control()&lt;br /&gt;
		m.setON(key_num)&lt;br /&gt;
		self.protocol.send(m)&lt;br /&gt;
		time.sleep(timeOut)&lt;br /&gt;
		m.setOFF(key_num)&lt;br /&gt;
		self.protocol.send(m)&lt;br /&gt;
		return key_num&lt;br /&gt;
&lt;br /&gt;
class WebResource(resource.Resource):&lt;br /&gt;
	def __init__(self, rpc_server, dummy_client_factory):&lt;br /&gt;
		self.rpc_server = rpc_server&lt;br /&gt;
		self.dummy_client_factory = dummy_client_factory&lt;br /&gt;
		resource.Resource.__init__(self)&lt;br /&gt;
		self.keys_webcontrol_state = [0,0,0,0,0,0,0,0,0,0]&lt;br /&gt;
		&lt;br /&gt;
	def getChild(self, name, request):&lt;br /&gt;
		return self&lt;br /&gt;
&lt;br /&gt;
	def render(self, request):&lt;br /&gt;
		reponse = 0 # NOK par defaut&lt;br /&gt;
		key_num = 0&lt;br /&gt;
		try:&lt;br /&gt;
			sessid = request.args.get('sessid', [&amp;quot;&amp;quot;])[0]&lt;br /&gt;
			password = request.args.get('password', [&amp;quot;&amp;quot;])[0]&lt;br /&gt;
			key_num = int(request.args.get('key', [&amp;quot;0&amp;quot;])[0])&lt;br /&gt;
			response = 0&lt;br /&gt;
			if password:&lt;br /&gt;
                                if hashlib.sha224(password).hexdigest() in PASSWORDS:&lt;br /&gt;
                                        timeOut   = KEY_RELEASE_DURATION&lt;br /&gt;
                                        response_XMLRPC = 1&lt;br /&gt;
                        else:&lt;br /&gt;
                                timeOut   = int(request.args.get('timeout', [&amp;quot;0&amp;quot;])[0])&lt;br /&gt;
                                response = self.rpc_server.checkCommand(sessid, key_num)&lt;br /&gt;
		except Exception, err:&lt;br /&gt;
			if DEBUG: print &amp;quot;error: &amp;quot;, err&lt;br /&gt;
			return &amp;quot;NOK:bad request&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		if response == 1:&lt;br /&gt;
			# Don't try to release a key that is being released&lt;br /&gt;
			if self.keys_webcontrol_state[key_num-1]: return &amp;quot;OK:already released&amp;quot;&lt;br /&gt;
			self.keys_webcontrol_state[key_num-1] = 1&lt;br /&gt;
			d = threads.deferToThread(self.dummy_client_factory.release_key, key_num, timeOut)&lt;br /&gt;
			d.addCallback(self.unset_webcontrol_state)&lt;br /&gt;
			return &amp;quot;OK:releasing key...&amp;quot;&lt;br /&gt;
		else:&lt;br /&gt;
			return &amp;quot;NOK:permission refused&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	def unset_webcontrol_state(self, key_num):&lt;br /&gt;
		self.keys_webcontrol_state[key_num-1] = 0&lt;br /&gt;
&lt;br /&gt;
class OpenKeysService(service.Service):&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		rpc_server=xmlrpclib.Server(OF_XMLRPC_URL);&lt;br /&gt;
		self.dummy_client_factory = dummyClientFactory(rpc_server)&lt;br /&gt;
		self.web_resource = WebResource(rpc_server, self.dummy_client_factory)&lt;br /&gt;
		&lt;br /&gt;
	def getdummyClientFactory(self):&lt;br /&gt;
		return self.dummy_client_factory&lt;br /&gt;
&lt;br /&gt;
	def getWebResource(self):&lt;br /&gt;
		return self.web_resource&lt;br /&gt;
&lt;br /&gt;
application = service.Application('openkeys')&lt;br /&gt;
f = OpenKeysService()&lt;br /&gt;
serviceCollection = service.IServiceCollection(application)&lt;br /&gt;
internet.TCPClient(KEYS_ADDR, KEYS_PORT, f.getdummyClientFactory()&lt;br /&gt;
				   ).setServiceParent(serviceCollection)&lt;br /&gt;
internet.TCPServer(SERVICE_PORT, server.Site(f.getWebResource())&lt;br /&gt;
				   ).setServiceParent(serviceCollection)&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maquette de script actionOnDemand.php côté serveur recevant les appels du logiciel de contrôle de l'armoire==&lt;br /&gt;
Ce script nécessite la bibliothèque PEAR [http://pear.php.net/package/XML_RPC2 XML_RPC2].&lt;br /&gt;
&lt;br /&gt;
Pour les tests, il suffit de modifier la valeur de la variable $weDontWant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;&amp;lt;?php&lt;br /&gt;
include 'XML/RPC2/Server.php';&lt;br /&gt;
&lt;br /&gt;
class OpenKeysGateway {&lt;br /&gt;
    /**&lt;br /&gt;
     * Update the status of the keys&lt;br /&gt;
     *&lt;br /&gt;
     * @param array $status Status of keys&lt;br /&gt;
     * @return integer 1 if ok, 0 else&lt;br /&gt;
     */&lt;br /&gt;
    public static function notify($status) {&lt;br /&gt;
        $logmsg = &amp;quot;&amp;quot;;&lt;br /&gt;
        foreach ($status as $key_num_from_zero =&amp;gt; $key_pres) {&lt;br /&gt;
            if (!is_numeric($key_pres) || intval($key_pres)!=$key_pres || $key_pres &amp;lt; 0 || $key_pres &amp;gt; 1) continue;&lt;br /&gt;
            if (!is_numeric($key_num_from_zero) || intval($key_num_from_zero)!=$key_num_from_zero &lt;br /&gt;
                || $key_num_from_zero &amp;lt; 0 || $key_num_from_zero &amp;gt; 9) continue;&lt;br /&gt;
            $logmsg .= &amp;quot;&amp;quot;.($key_num_from_zero+1).&amp;quot;:&amp;quot;.$key_pres.&amp;quot;,&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        file_put_contents('test.txt', &amp;quot;key notify :&amp;quot;.$logmsg, FILE_APPEND );&lt;br /&gt;
        return 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Check if user is able to release the key 'key_num'&lt;br /&gt;
     *&lt;br /&gt;
     * @param string $sessid PHPSESSID of a connected user&lt;br /&gt;
     * @param integer $key_num number of the key to release&lt;br /&gt;
     * @return integer 0:NOK, 1:OK&lt;br /&gt;
     */&lt;br /&gt;
    public static function checkCommand($sessid, $key_num) {&lt;br /&gt;
        /* sanitize input */&lt;br /&gt;
        if (!is_numeric($key_num) || intval($key_num)!=$key_num || $key_num &amp;lt; 1 || $key_num &amp;gt; 10) {&lt;br /&gt;
            return 0;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $weDontWant = 1;&lt;br /&gt;
&lt;br /&gt;
        if ($weDontWant) {&lt;br /&gt;
            file_put_contents('test.txt', &amp;quot;$key_num has no associated airborne aircraft&amp;quot;, FILE_APPEND );&lt;br /&gt;
            return 0;&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            file_put_contents('test.txt', &amp;quot;granted key: &amp;quot;.$key_num.&amp;quot;:permission granted&amp;quot;, FILE_APPEND );&lt;br /&gt;
            return 1;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$options = array(&lt;br /&gt;
    'autoDocument' =&amp;gt; true,&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
// dirty hack to get things work !&lt;br /&gt;
$GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents('php://input');&lt;br /&gt;
&lt;br /&gt;
$server = XML_RPC2_Server::create('OpenKeysGateway', $options);&lt;br /&gt;
$server-&amp;gt;handleCall();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&amp;lt;/php&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Interfa%C3%A7age-OpenFlyers-et-armoire-%C3%A0-cl%C3%A9&amp;diff=13808</id>
		<title>Interfaçage OpenFlyers et armoire à clé</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Interfa%C3%A7age-OpenFlyers-et-armoire-%C3%A0-cl%C3%A9&amp;diff=13808"/>
				<updated>2016-01-11T17:21:35Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Présentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
L'objet de cette page est de décrire le protocole d'interfaçage avec toute solution d'armoire à clés tiers. Pour les armoires à clés commercialisées par OpenFlyers, il faut se référer à la [[Access-Control|documentation sur le contrôle d'accès]].&lt;br /&gt;
&lt;br /&gt;
Le protocole repose sur le principe que l'interfaçage est réalisé par un logiciel de contrôle de l'armoire à clé sur un PC ou une solution embarquée et qui dispose d'un accès à internet lui permettant de communiquer avec OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
=Interface utilisateur OpenFlyers=&lt;br /&gt;
L'utilisateur ouvre un vol dans OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Menu-contextuel-ouverture-de-vol.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il se retrouve sur le formulaire de saisie du vol en mode Départ en vol:&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Formulaire-ouverture-de-vol.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsqu'il clique sur le bouton de validation, 3 cas peuvent se présenter :&lt;br /&gt;
*Une alerte ou plusieurs alertes rouges (bloquantes), s'affichent : l'utilisateur n'a pas la possibilité de surpasser ses alertes, il ne peut alors récupérer la clé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Alertes-bloquantes-en-ouverture-vol.png]]&lt;br /&gt;
&lt;br /&gt;
*Une alerte ou plusieurs alertes oranges (non-bloquantes), s'affichent : l'utilisateur a la possibilité de surpasser ses alertes, et ainsi de récupérer la clé :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Alertes-non-bloquantes-en-ouverture-vol.png]]&lt;br /&gt;
&lt;br /&gt;
*Aucune alerte ne s'affiche, l'utilisateur se retrouve alors directement sur la page lui indiquant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Message autorisation libération clé.png]]&lt;br /&gt;
&lt;br /&gt;
Une fois qu'il a cliqué sur '''LIBÉRER LA CLÉ''', il dispose de X secondes. Cette durée est paramétrable par OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
*Lorsqu'il rentre de vol, l'utilisateur n'a plus qu'a retourner sur le formulaire de saisie de vol et à fermer son vol. La clé doit etre remise en place sur l'armoire pour fermer le vol.&lt;br /&gt;
&lt;br /&gt;
=Interface administrateur OpenFlyers=&lt;br /&gt;
==Activation et configuration de la gestion des armoires à clé==&lt;br /&gt;
*'''Admin'''&lt;br /&gt;
*'''Configuration &amp;gt; Paramétrage'''&lt;br /&gt;
*Dans le formulaire '''Gestion des vols''', sélectionner '''Activé(e)''' pour le champ '''Gestion armoire à clé'''&lt;br /&gt;
*Cliquer sur le bouton '''Valider''' lié au formulaire&lt;br /&gt;
*Dans le formulaire '''Gestion des vols''', sélectionner '''Activé(e)''' pour le champ '''Gestion des clés'''&lt;br /&gt;
*Cliquer à nouveau sur le bouton '''Valider''' lié au formulaire&lt;br /&gt;
*Le formulaire apparait alors comme suit :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Paramétrage armoire à clé.png]]&lt;br /&gt;
&lt;br /&gt;
*Signification des paramètres :&lt;br /&gt;
**'''Gestion des clés''' : Gestion par OpenFlyers des clés de l'armoire ('''Désactivé(e)''' ou '''Activé(e)''')&lt;br /&gt;
**'''Nombre de clés''' : nombre de clés possibles dans l'armoire&lt;br /&gt;
**'''Temporisation''' : temps en secondes pendant lequel la clé peut être retirée après autorisation.&lt;br /&gt;
**'''Logiciel de contrôle de l'armoire à clé''' : Il s'agit du nom du logiciel de contrôle de l'armoire à clé. PyOpenKey (protocole open), OpenKey (protocole Openflyers, version 1), pyOpenkey2 (protocole Openflyers version 2) . &lt;br /&gt;
**'''IP du PC contenant le logiciel de contrôle''' : adresse IP du PC sur lequel se trouve le logiciel de contrôle de l'armoire à clé.&lt;br /&gt;
**'''Port du PC contenant le logiciel de contrôle''' : port sur lequel écoute le logiciel de contrôle de l'armoire à clé.&lt;br /&gt;
**'''Fermeture automatique des vols au retour de la clé''' : permet de programmer la fermeture automatique des vols au retour de la clé.&lt;br /&gt;
**'''Phrase mot de passe''' : phrase permettant d'authentifier la source de la transmission dans le cas d'une requête XML-RPC.&lt;br /&gt;
'''Attention :''' dans le cas où le logiciel de contrôle de l'armoire à clé se trouve sur le même PC que pour la saisie des vols dans OpenFlyers, il peut y avoir des problèmes de loopback au niveau du routeur.&lt;br /&gt;
&lt;br /&gt;
==Attribution des clés aux ressources/aéronefs==&lt;br /&gt;
''Dans le cas où c'est le logiciel OpenFlyers qui gère les clés.''&lt;br /&gt;
*'''Admin'''&lt;br /&gt;
*'''Ressources &amp;gt; Ressources &amp;gt; Actives''' ou '''Flotte &amp;gt; Aéronefs &amp;gt; Aéronefs actifs''' sous version OF 2.1&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Liste des aéronefs.png]]&lt;br /&gt;
&lt;br /&gt;
Pour chaque aéronef concerné, il suffit d'attribuer un numéro et un nom de clé dans les champs correspondants. La validation de la saisie se fait automatiquement en cliquant hors du champ de saisie.&lt;br /&gt;
&lt;br /&gt;
=Protocole de dialogue XML-RPC entre OpenFlyers et le logiciel de gestion de l'armoire à clé=&lt;br /&gt;
Le dialogue avec le serveur XML-RPC d'OpenFlyers doit s'effectuer en '''HTTPS'''.&lt;br /&gt;
&lt;br /&gt;
==Demande de libération d'une clé==&lt;br /&gt;
&lt;br /&gt;
===Cas avec gestion des clés par OpenFlyers===&lt;br /&gt;
&lt;br /&gt;
*Lorsque qu'une clé doit être libérée, le navigateur envoie un message au logiciel de contrôle de l'armoire à clé par le protocole HTTP sous la forme suivante :&lt;br /&gt;
http://127.0.0.1:4080/?sessid=e5f01p2oqh2vb36arisr8k5j87&amp;amp;amp;timeOut=10000&amp;amp;amp;key=1&amp;amp;amp;resource=2&amp;amp;amp;person=12;action='releaseKey'&lt;br /&gt;
&lt;br /&gt;
:*L'adresse IP (ici 127.0.0.1) et le port (ici 4080) sont fonction de la [[#Activation_et_configuration_de_la_gestion_des_armoires_.C3.A0_cl.C3.A9|configuration de l'armoire à clé dans OpenFlyers]].&lt;br /&gt;
:*sessid contient le numéro de session en cours&lt;br /&gt;
:*timeout correspond au temps d'attente pour la prise d'une clé en millisecondes&lt;br /&gt;
:*key contient le numéro de la clé concernée&lt;br /&gt;
:*resource contient le numéro de la ressource concernée&lt;br /&gt;
:*person contient le numéro de l'utilisateur qui fait la demande&lt;br /&gt;
:*action est un mot clé désignant l'objet de la commande&lt;br /&gt;
:**release_key: ordre de libérer la clé&lt;br /&gt;
:**open_door: ordre d'ouvrir la porte&lt;br /&gt;
:**init_tags: ordre de lire les tags des clés&lt;br /&gt;
*Le logiciel de contrôle de l'armoire à clé doit alors envoyer une demande d'ordre au serveur OpenFlyers à l'adresse suivante https://structure.openflyers.tld/actionOnDemand.php où il faut remplacer structure.openflyers.tld par l'adresse de la plateforme OpenFlyers concernée, avec comme commande XML_RPC '''checkCommand (&amp;quot;e5f01p2oqh2vb36arisr8k5j87&amp;quot;,int(key))'''.&lt;br /&gt;
&lt;br /&gt;
*Le serveur OpenFlyers vérifie alors l'action demandée :&lt;br /&gt;
Pour release_key, il est vérifié :&lt;br /&gt;
#Que la clé est au bon format et existe. Lorsque la clé est validée, on passe à l'étape suivante sinon on retourne 0&lt;br /&gt;
#Que l'utilisateur faisant la demande est bien celui qui est connecté. Lorsque c'est le cas, on passe à l'étape suivante sinon on retourne 0&lt;br /&gt;
#Ensuite si l'utilisateur qui a passé la demande :&lt;br /&gt;
#*A le droit '''Gestion des clés''' (administrateur) alors on libère la clé sans condition (cela permet de libérer la clé sans contrôle) et on retourne 1&lt;br /&gt;
#*N'a pas le droit '''Gestion des clés''' (pilote) alors on vérifie s'il existe un vol ouvert qui remplit la double condition :&lt;br /&gt;
#**Vol attribué à l'utilisateur&lt;br /&gt;
#**Aéronef du vol associé à la demande de libération de la clé&lt;br /&gt;
#**Lorsque la double condition est remplie, on retourne 1 sinon 0&lt;br /&gt;
&lt;br /&gt;
*Le serveur retourne ensuite la réponse :&lt;br /&gt;
**1 dans le cas d'autorisation de libération de clé &lt;br /&gt;
**0 dans le cas contraire&lt;br /&gt;
&lt;br /&gt;
====Exemple de script en Python d'utilisation de la commande checkCommand avec gestion des clés====&lt;br /&gt;
&amp;lt;python&amp;gt;# load library&lt;br /&gt;
from twisted.web.xmlrpc import Proxy&lt;br /&gt;
from twisted.internet import reactor, ssl&lt;br /&gt;
 &lt;br /&gt;
def printValue(value):&lt;br /&gt;
    print repr(value)&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
 &lt;br /&gt;
def printError(error):&lt;br /&gt;
    print 'error', error&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
 &lt;br /&gt;
# URL of the XML-RPC server&lt;br /&gt;
proxy = Proxy('https://yourURL.xx/actionOnDemand.php')&lt;br /&gt;
 &lt;br /&gt;
# init array to send&lt;br /&gt;
sessid = &amp;quot;&amp;quot;&lt;br /&gt;
key_num = 1&lt;br /&gt;
 &lt;br /&gt;
# send to the XML-RPC server&lt;br /&gt;
proxy.callRemote('checkCommand', sessid, key_num).addCallbacks(printValue, printError)&lt;br /&gt;
reactor.run()&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce test peut être complété (pour obtenir une réponse &amp;quot;1&amp;quot;) en simulant une armoire à clé à l'aide d'un script PHP de la façon suivante :&lt;br /&gt;
*Installer un serveur local (par exemple [http://www.wampserver.com/ wampserver] sous Windows) de façon à avoir le port 127.0.0.1 qui lui est attribué&lt;br /&gt;
*Configurer la plateforme OpenFlyers de manière à gérer l'armoire à clé avec les éléments suivants :&lt;br /&gt;
**'''IP du PC contenant le logiciel de contrôle''' : 127.0.0.1&lt;br /&gt;
**'''Port du PC contenant le logiciel de contrôle''' : 80&lt;br /&gt;
*Configurer la plateforme OpenFlyers de manière à gérer les clés&lt;br /&gt;
*A la racine du répertoire www, mettre le script index.php suivant (on suppose que ce script est appelé par défaut lorsqu'on utilise l'URL http://127.0.0.1 ) :&lt;br /&gt;
&amp;lt;php&amp;gt;&amp;lt;?php &lt;br /&gt;
file_put_contents('test.txt', 'TEST', FILE_APPEND );&lt;br /&gt;
file_put_contents('test.txt', print_r($_REQUEST, true), FILE_APPEND );&lt;br /&gt;
?&amp;gt;&amp;lt;/php&amp;gt;&lt;br /&gt;
*Toujours à la racine du répertoire www, créer un fichier test.txt&lt;br /&gt;
Le script PHP écrira dans le fichier test.txt les variables transmises lors de la demande d'ouverture de l'armoire à clé :&lt;br /&gt;
&amp;lt;pre&amp;gt;TESTArray&lt;br /&gt;
(&lt;br /&gt;
    [sessid] =&amp;gt; j2eo92215nbef09borb74jftm1&lt;br /&gt;
    [key] =&amp;gt; 1&lt;br /&gt;
    [resource] =&amp;gt; 1&lt;br /&gt;
    [person] =&amp;gt; 1&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Il suffit alors de recopier la valeur de '''sessid''' et de '''key''' dans le script python de ce début de paragraphe et de le tester : il devrait renvoyer 1.&lt;br /&gt;
&lt;br /&gt;
===Cas sans gestion des clés par OpenFlyers===&lt;br /&gt;
&lt;br /&gt;
*Lorsque qu'une demande de vérification doit être réalisée, le navigateur envoie un message au logiciel de contrôle de l'armoire à clé par le protocole HTTP sous la forme suivante :&lt;br /&gt;
http://127.0.0.1:4080/?sessid=e5f01p2oqh2vb36arisr8k5j87&amp;amp;amp;resource=2&amp;amp;amp;person=12&lt;br /&gt;
&lt;br /&gt;
:*L'adresse IP (ici 127.0.0.1) et le port (ici 4080) sont fonction de la [[#Activation_et_configuration_de_la_gestion_des_armoires_.C3.A0_cl.C3.A9|configuration de l'armoire à clé dans OpenFlyers]].&lt;br /&gt;
:*sessid contient le numéro de session en cours&lt;br /&gt;
:*resource contient le numéro de la ressource concernée&lt;br /&gt;
:*person contient le numéro de l'utilisateur qui fait la demande&lt;br /&gt;
*Le logiciel de contrôle de l'armoire à clé doit alors envoyer une demande d'ordre au serveur OpenFlyers à l'adresse suivante https://structure.openflyers.tld/actionOnDemand.php où il faut remplacer structure.openflyers.tld par l'adresse de la plateforme OpenFlyers concernée, avec comme commande XML_RPC '''checkCommand (&amp;quot;e5f01p2oqh2vb36arisr8k5j87&amp;quot;)'''.&lt;br /&gt;
&lt;br /&gt;
*Le serveur OpenFlyers vérifie alors :&lt;br /&gt;
#Que l'utilisateur faisant la demande est bien celui qui est connecté. Lorsque c'est le cas, on passe à l'étape suivante sinon on retourne 0&lt;br /&gt;
#On vérifie s'il existe un vol ouvert qui remplit la double condition :&lt;br /&gt;
#*Vol attribué à l'utilisateur&lt;br /&gt;
#*Aéronef du vol associé à la demande de libération de la clé&lt;br /&gt;
#*Lorsque la double condition est remplie, on retourne 1 sinon 0&lt;br /&gt;
&lt;br /&gt;
*Le serveur retourne ensuite la réponse :&lt;br /&gt;
**1 dans le cas d'autorisation&lt;br /&gt;
**0 dans le cas contraire&lt;br /&gt;
&lt;br /&gt;
====Exemple de script en Python d'utilisation de la commande checkCommand sans gestion des clés====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;python&amp;gt;# load library&lt;br /&gt;
from twisted.web.xmlrpc import Proxy&lt;br /&gt;
from twisted.internet import reactor, ssl&lt;br /&gt;
 &lt;br /&gt;
def printValue(value):&lt;br /&gt;
    print repr(value)&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
 &lt;br /&gt;
def printError(error):&lt;br /&gt;
    print 'error', error&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
 &lt;br /&gt;
# URL of the XML-RPC server&lt;br /&gt;
proxy = Proxy('https://yourURL.xx/actionOnDemand.php')&lt;br /&gt;
 &lt;br /&gt;
# init array to send&lt;br /&gt;
sessid = &amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# send to the XML-RPC server&lt;br /&gt;
proxy.callRemote('checkCommand', sessid).addCallbacks(printValue, printError)&lt;br /&gt;
reactor.run()&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce test peut être complété (pour obtenir une réponse &amp;quot;1&amp;quot;) en simulant une armoire à clé à l'aide d'un script PHP de la façon suivante :&lt;br /&gt;
*Installer un serveur local (par exemple [http://www.wampserver.com/ wampserver] sous Windows) de façon à avoir le port 127.0.0.1 qui lui est attribué&lt;br /&gt;
*Configurer la plateforme OpenFlyers de manière à gérer l'armoire à clé avec les éléments suivants :&lt;br /&gt;
**'''IP du PC contenant le logiciel de contrôle''' : 127.0.0.1&lt;br /&gt;
**'''Port du PC contenant le logiciel de contrôle''' : 80&lt;br /&gt;
*Configurer la plateforme OpenFlyers de manière à ne pas gérer les clés&lt;br /&gt;
*A la racine du répertoire www, mettre le script index.php suivant (on suppose que ce script est appelé par défaut lorsqu'on utilise l'URL http://127.0.0.1 ) :&lt;br /&gt;
&amp;lt;php&amp;gt;&amp;lt;?php &lt;br /&gt;
file_put_contents('test.txt', 'TEST', FILE_APPEND );&lt;br /&gt;
file_put_contents('test.txt', print_r($_REQUEST, true), FILE_APPEND );&lt;br /&gt;
?&amp;gt;&amp;lt;/php&amp;gt;&lt;br /&gt;
*Toujours à la racine du répertoire www, créer un fichier test.txt&lt;br /&gt;
Le script PHP écrira dans le fichier test.txt les variables transmises lors de la demande d'ouverture de l'armoire à clé :&lt;br /&gt;
&amp;lt;pre&amp;gt;TESTArray&lt;br /&gt;
(&lt;br /&gt;
    [sessid] =&amp;gt; j2eo92215nbef09borb74jftm1&lt;br /&gt;
    [resource] =&amp;gt; 1&lt;br /&gt;
    [person] =&amp;gt; 1&lt;br /&gt;
)&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Il suffit alors de recopier la valeur de '''sessid''' dans le script python de ce début de paragraphe et de le tester : il devrait renvoyer 1.&lt;br /&gt;
&lt;br /&gt;
==Modification de l'état d'une clé==&lt;br /&gt;
''Applicable uniquement dans le cas où le logiciel OpenFlyers gère les clés.''&lt;br /&gt;
*Le logiciel de contrôle de l'armoire à clé doit envoyer un ordre '''notify([1,0,1,1,1,1,0,0], &amp;quot;passphrase&amp;quot;)''' avec comme paramètre un tableau chronologique des clés ayant pour valeur leur état (1 = interrupteur de présence de clé fermé = clé absente de l'armoire, 0 = interrupteur de présence de clé ouvert = clé présente dans l'armoire)&lt;br /&gt;
&lt;br /&gt;
===Exemple de script en Python pour la commande notify===&lt;br /&gt;
Nécessite les librairies Twisted et pyOpenSSL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;python&amp;gt;# load library&lt;br /&gt;
from twisted.web.xmlrpc import Proxy&lt;br /&gt;
from twisted.internet import reactor, ssl&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def printValue(value):&lt;br /&gt;
    print repr(value)&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
&lt;br /&gt;
def printError(error):&lt;br /&gt;
    print 'error', error&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
&lt;br /&gt;
# URL of the XML-RPC server&lt;br /&gt;
proxy = Proxy('https://yourURL.xx/actionOnDemand.php')&lt;br /&gt;
&lt;br /&gt;
# init passphrase&lt;br /&gt;
passphrase = 'SDjklsdiuQSIPO23879ZERK2098ZL2908DFZLK'&lt;br /&gt;
&lt;br /&gt;
# init array to send&lt;br /&gt;
status = []&lt;br /&gt;
state = random.randint(0,1)&lt;br /&gt;
# Alternate 0 and 1 for test&lt;br /&gt;
for i in range(0,10):&lt;br /&gt;
        status.append(state)&lt;br /&gt;
        state = 0 if state == 1 else 1&lt;br /&gt;
#print status&lt;br /&gt;
&lt;br /&gt;
# send to the XML-RPC server&lt;br /&gt;
proxy.callRemote('notify', status, passphrase).addCallbacks(printValue, printError)&lt;br /&gt;
reactor.run()&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces scripts nécessitent les librairies Twisted et pyOpenSSL.&lt;br /&gt;
&lt;br /&gt;
Ils recevront (et afficheront) comme réponse 0 du fait que le numéro de session transmis n'est pas correct (et laissé à une chaine vide).&lt;br /&gt;
&lt;br /&gt;
==Fermeture automatique d'un vol==&lt;br /&gt;
&lt;br /&gt;
Le logiciel de contrôle de l'armoire à clé doit envoyer un ordre '''closeFlight(&amp;quot;passphrase&amp;quot;, &amp;quot;id de ressource&amp;quot;)''' avec comme paramètre un passphrase et l'id qui va entraîner la fermeture du vol effectué sur cette ressource si un vol avait été ouvert et que la &amp;quot;Fermeture automatique des&lt;br /&gt;
vols au retour de la clé&amp;quot; soit activée. La commande retournera comme réponse une structure JSON pour déterminer si la fermeture du vol s'est bien réalisée ou non et qu'il n'y a pas eu d'erreur.&lt;br /&gt;
&lt;br /&gt;
Réponse quand la vérification du passphrase est incorrecte, ce qui a entraîné la non-fermeture du vol :&lt;br /&gt;
&amp;lt;javascript&amp;gt;{[&lt;br /&gt;
    ack : 0&lt;br /&gt;
]}&amp;lt;/javascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Réponse quand la vérification du passphrase est correcte et que la demande de fermeture du vol s'est bien réalisée :&lt;br /&gt;
&amp;lt;javascript&amp;gt;{[&lt;br /&gt;
    ack : 1&lt;br /&gt;
]}&amp;lt;/javascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Réponse quand la vérification du passphrase est correcte et que la demande de fermeture du vol ne s'est pas bien réalisée suite à une erreur :&lt;br /&gt;
&amp;lt;javascript&amp;gt;{[&lt;br /&gt;
    ack : 1,&lt;br /&gt;
    error : 'Message d\'erreur ...'&lt;br /&gt;
]}&amp;lt;/javascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Script d'exemple pour closeFlight===&lt;br /&gt;
&amp;lt;python&amp;gt;# load library&lt;br /&gt;
from twisted.web.xmlrpc import Proxy&lt;br /&gt;
from twisted.internet import reactor, ssl&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
def printValue(value):&lt;br /&gt;
    print repr(value)&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
&lt;br /&gt;
def printError(error):&lt;br /&gt;
    print 'error', error&lt;br /&gt;
    reactor.stop()&lt;br /&gt;
&lt;br /&gt;
# URL of the XML-RPC server&lt;br /&gt;
proxy = Proxy('https://yourURL.xx/actionOnDemand.php')&lt;br /&gt;
&lt;br /&gt;
# Id of resource which needs a flight closing&lt;br /&gt;
resource_id = 1&lt;br /&gt;
&lt;br /&gt;
# init passphrase&lt;br /&gt;
passphrase = 'SDjklsdiuQSIPO23879ZERK2098ZL2908DFZLK'&lt;br /&gt;
&lt;br /&gt;
# send to the XML-RPC server&lt;br /&gt;
proxy.callRemote('closeFlight', resource_id, passphrase).addCallbacks(printValue, printError)&lt;br /&gt;
reactor.run()&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exemple de script en Python de logiciel de contrôle d'une armoire==&lt;br /&gt;
&amp;lt;python&amp;gt;#!/usr/bin/python&lt;br /&gt;
import xmlrpclib, time, dummy_proto, hashlib&lt;br /&gt;
from twisted.internet import reactor, task, threads, ssl&lt;br /&gt;
from twisted.application import internet, service&lt;br /&gt;
from twisted.internet.protocol import Protocol, ClientCreator, ReconnectingClientFactory&lt;br /&gt;
from twisted.web import resource, server&lt;br /&gt;
&lt;br /&gt;
# Port from which the OF client contact OpenKeys service&lt;br /&gt;
SERVICE_PORT=4080 &lt;br /&gt;
# IP address of the OpenKeys service&lt;br /&gt;
SERVICE_HOST=&amp;quot;192.168.0.200&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# IP address of the key cabinet&lt;br /&gt;
KEYS_ADDR='192.168.0.201'&lt;br /&gt;
# Port from which OpenKeys service contacts the key cabinet&lt;br /&gt;
KEYS_PORT=6002&lt;br /&gt;
#Time to release the key&lt;br /&gt;
KEY_RELEASE_DURATION=15&lt;br /&gt;
&lt;br /&gt;
# sha224 passwords&lt;br /&gt;
PASSWORDS=('847bed9bc354e7e47bc5350a3b3aaf6124f5748224a3c7ad79586c3c')&lt;br /&gt;
&lt;br /&gt;
# init passphrase&lt;br /&gt;
passphrase = 'SDjklsdiuQSIPO23879ZERK2098ZL2908DFZLK'&lt;br /&gt;
&lt;br /&gt;
OF_XMLRPC_URL=&amp;quot;https://structure.openflyers.tld/actionOnDemand.php&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DEBUG=False&lt;br /&gt;
&lt;br /&gt;
class dummyProtocol(Protocol):&lt;br /&gt;
	def __init__(self, rpc_server):&lt;br /&gt;
		self.rpc_server=rpc_server&lt;br /&gt;
		self.lc = None&lt;br /&gt;
&lt;br /&gt;
	def connectionMade(self):&lt;br /&gt;
		if not self.lc:&lt;br /&gt;
			# update status every 10 minutes&lt;br /&gt;
			self.lc = task.LoopingCall(self.updateStatus)&lt;br /&gt;
			self.lc.start(600)&lt;br /&gt;
&lt;br /&gt;
	def dataReceived(self, data):&lt;br /&gt;
		msg=dummy_proto.dummy_message.newFromData(data)&lt;br /&gt;
		if DEBUG: msg.display()&lt;br /&gt;
		try:&lt;br /&gt;
			if type(msg)==dummyproto.dummy_ONOFF_Control_Response:&lt;br /&gt;
				response = self.rpc_server.notify(msg.getKeysStatus(),passphrase)&lt;br /&gt;
		except Exception, err:&lt;br /&gt;
			if DEBUG: print &amp;quot;error: &amp;quot;, err&lt;br /&gt;
			pass # ignore&lt;br /&gt;
&lt;br /&gt;
	def updateStatus(self):&lt;br /&gt;
		msg = dummy_proto.dummy_State_Request()&lt;br /&gt;
		self.transport.write(msg.build_message())&lt;br /&gt;
	&lt;br /&gt;
	def send(self, dummy_data):&lt;br /&gt;
		self.transport.write(dummy_data.build_message())&lt;br /&gt;
&lt;br /&gt;
class dummyClientFactory(ReconnectingClientFactory):&lt;br /&gt;
	def __init__(self, rpc_server):&lt;br /&gt;
		self.rpc_server = rpc_server&lt;br /&gt;
&lt;br /&gt;
	def buildProtocol(self, addr):&lt;br /&gt;
		self.resetDelay()&lt;br /&gt;
		self.protocol = dummyProtocol(self.rpc_server)&lt;br /&gt;
		return self.protocol&lt;br /&gt;
&lt;br /&gt;
	def clientConnectionLost(self, connector, reason):&lt;br /&gt;
		ReconnectingClientFactory.clientConnectionLost(self, connector, reason)&lt;br /&gt;
		connector.connect()&lt;br /&gt;
&lt;br /&gt;
	def clientConnectionFailed(self, connector, reason):&lt;br /&gt;
		if DEBUG: print 'Connection failed. Reason:', reason&lt;br /&gt;
		ReconnectingClientFactory.clientConnectionFailed(self, connector, reason)&lt;br /&gt;
&lt;br /&gt;
	# blocking method ! must be run in a new thread&lt;br /&gt;
	def release_key(self, key_num, timeOur):&lt;br /&gt;
		m = dummy_proto.dummy_ONOFF_Control()&lt;br /&gt;
		m.setON(key_num)&lt;br /&gt;
		self.protocol.send(m)&lt;br /&gt;
		time.sleep(timeOut)&lt;br /&gt;
		m.setOFF(key_num)&lt;br /&gt;
		self.protocol.send(m)&lt;br /&gt;
		return key_num&lt;br /&gt;
&lt;br /&gt;
class WebResource(resource.Resource):&lt;br /&gt;
	def __init__(self, rpc_server, dummy_client_factory):&lt;br /&gt;
		self.rpc_server = rpc_server&lt;br /&gt;
		self.dummy_client_factory = dummy_client_factory&lt;br /&gt;
		resource.Resource.__init__(self)&lt;br /&gt;
		self.keys_webcontrol_state = [0,0,0,0,0,0,0,0,0,0]&lt;br /&gt;
		&lt;br /&gt;
	def getChild(self, name, request):&lt;br /&gt;
		return self&lt;br /&gt;
&lt;br /&gt;
	def render(self, request):&lt;br /&gt;
		reponse = 0 # NOK par defaut&lt;br /&gt;
		key_num = 0&lt;br /&gt;
		try:&lt;br /&gt;
			sessid = request.args.get('sessid', [&amp;quot;&amp;quot;])[0]&lt;br /&gt;
			password = request.args.get('password', [&amp;quot;&amp;quot;])[0]&lt;br /&gt;
			key_num = int(request.args.get('key', [&amp;quot;0&amp;quot;])[0])&lt;br /&gt;
			response = 0&lt;br /&gt;
			if password:&lt;br /&gt;
                                if hashlib.sha224(password).hexdigest() in PASSWORDS:&lt;br /&gt;
                                        timeOut   = KEY_RELEASE_DURATION&lt;br /&gt;
                                        response_XMLRPC = 1&lt;br /&gt;
                        else:&lt;br /&gt;
                                timeOut   = int(request.args.get('timeout', [&amp;quot;0&amp;quot;])[0])&lt;br /&gt;
                                response = self.rpc_server.checkCommand(sessid, key_num)&lt;br /&gt;
		except Exception, err:&lt;br /&gt;
			if DEBUG: print &amp;quot;error: &amp;quot;, err&lt;br /&gt;
			return &amp;quot;NOK:bad request&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		if response == 1:&lt;br /&gt;
			# Don't try to release a key that is being released&lt;br /&gt;
			if self.keys_webcontrol_state[key_num-1]: return &amp;quot;OK:already released&amp;quot;&lt;br /&gt;
			self.keys_webcontrol_state[key_num-1] = 1&lt;br /&gt;
			d = threads.deferToThread(self.dummy_client_factory.release_key, key_num, timeOut)&lt;br /&gt;
			d.addCallback(self.unset_webcontrol_state)&lt;br /&gt;
			return &amp;quot;OK:releasing key...&amp;quot;&lt;br /&gt;
		else:&lt;br /&gt;
			return &amp;quot;NOK:permission refused&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	def unset_webcontrol_state(self, key_num):&lt;br /&gt;
		self.keys_webcontrol_state[key_num-1] = 0&lt;br /&gt;
&lt;br /&gt;
class OpenKeysService(service.Service):&lt;br /&gt;
	def __init__(self):&lt;br /&gt;
		rpc_server=xmlrpclib.Server(OF_XMLRPC_URL);&lt;br /&gt;
		self.dummy_client_factory = dummyClientFactory(rpc_server)&lt;br /&gt;
		self.web_resource = WebResource(rpc_server, self.dummy_client_factory)&lt;br /&gt;
		&lt;br /&gt;
	def getdummyClientFactory(self):&lt;br /&gt;
		return self.dummy_client_factory&lt;br /&gt;
&lt;br /&gt;
	def getWebResource(self):&lt;br /&gt;
		return self.web_resource&lt;br /&gt;
&lt;br /&gt;
application = service.Application('openkeys')&lt;br /&gt;
f = OpenKeysService()&lt;br /&gt;
serviceCollection = service.IServiceCollection(application)&lt;br /&gt;
internet.TCPClient(KEYS_ADDR, KEYS_PORT, f.getdummyClientFactory()&lt;br /&gt;
				   ).setServiceParent(serviceCollection)&lt;br /&gt;
internet.TCPServer(SERVICE_PORT, server.Site(f.getWebResource())&lt;br /&gt;
				   ).setServiceParent(serviceCollection)&amp;lt;/python&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maquette de script actionOnDemand.php côté serveur recevant les appels du logiciel de contrôle de l'armoire==&lt;br /&gt;
Ce script nécessite la bibliothèque PEAR [http://pear.php.net/package/XML_RPC2 XML_RPC2].&lt;br /&gt;
&lt;br /&gt;
Pour les tests, il suffit de modifier la valeur de la variable $weDontWant.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;&amp;lt;?php&lt;br /&gt;
include 'XML/RPC2/Server.php';&lt;br /&gt;
&lt;br /&gt;
class OpenKeysGateway {&lt;br /&gt;
    /**&lt;br /&gt;
     * Update the status of the keys&lt;br /&gt;
     *&lt;br /&gt;
     * @param array $status Status of keys&lt;br /&gt;
     * @return integer 1 if ok, 0 else&lt;br /&gt;
     */&lt;br /&gt;
    public static function notify($status) {&lt;br /&gt;
        $logmsg = &amp;quot;&amp;quot;;&lt;br /&gt;
        foreach ($status as $key_num_from_zero =&amp;gt; $key_pres) {&lt;br /&gt;
            if (!is_numeric($key_pres) || intval($key_pres)!=$key_pres || $key_pres &amp;lt; 0 || $key_pres &amp;gt; 1) continue;&lt;br /&gt;
            if (!is_numeric($key_num_from_zero) || intval($key_num_from_zero)!=$key_num_from_zero &lt;br /&gt;
                || $key_num_from_zero &amp;lt; 0 || $key_num_from_zero &amp;gt; 9) continue;&lt;br /&gt;
            $logmsg .= &amp;quot;&amp;quot;.($key_num_from_zero+1).&amp;quot;:&amp;quot;.$key_pres.&amp;quot;,&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        file_put_contents('test.txt', &amp;quot;key notify :&amp;quot;.$logmsg, FILE_APPEND );&lt;br /&gt;
        return 1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Check if user is able to release the key 'key_num'&lt;br /&gt;
     *&lt;br /&gt;
     * @param string $sessid PHPSESSID of a connected user&lt;br /&gt;
     * @param integer $key_num number of the key to release&lt;br /&gt;
     * @return integer 0:NOK, 1:OK&lt;br /&gt;
     */&lt;br /&gt;
    public static function checkCommand($sessid, $key_num) {&lt;br /&gt;
        /* sanitize input */&lt;br /&gt;
        if (!is_numeric($key_num) || intval($key_num)!=$key_num || $key_num &amp;lt; 1 || $key_num &amp;gt; 10) {&lt;br /&gt;
            return 0;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $weDontWant = 1;&lt;br /&gt;
&lt;br /&gt;
        if ($weDontWant) {&lt;br /&gt;
            file_put_contents('test.txt', &amp;quot;$key_num has no associated airborne aircraft&amp;quot;, FILE_APPEND );&lt;br /&gt;
            return 0;&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            file_put_contents('test.txt', &amp;quot;granted key: &amp;quot;.$key_num.&amp;quot;:permission granted&amp;quot;, FILE_APPEND );&lt;br /&gt;
            return 1;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$options = array(&lt;br /&gt;
    'autoDocument' =&amp;gt; true,&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
// dirty hack to get things work !&lt;br /&gt;
$GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents('php://input');&lt;br /&gt;
&lt;br /&gt;
$server = XML_RPC2_Server::create('OpenKeysGateway', $options);&lt;br /&gt;
$server-&amp;gt;handleCall();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&amp;lt;/php&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13796</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13796"/>
				<updated>2016-01-11T09:16:54Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* getSex('person id') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getSex('person id')===&lt;br /&gt;
&lt;br /&gt;
Retourne un nombre correspondant au sexe de la personne :&lt;br /&gt;
* 0 pour un homme&lt;br /&gt;
* 1 pour une femme&lt;br /&gt;
* 2 lorsque ce n'est pas défini&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getSex(1)&lt;br /&gt;
getSex(%USER_ID)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour savoir si un utilisateur est une femme dans une règle de tarification des produits :&lt;br /&gt;
&amp;lt;pre&amp;gt;(getSex(%USER_ID) == 1) ? $reductionFemme : 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id', 'check only holding')===&lt;br /&gt;
'check only holding' est un paramètre optionnel. On ne prend en compte sa valeur que si elle est à 1. Dans les autres cas, on l'ignore.&lt;br /&gt;
&lt;br /&gt;
*Si 'check only holding' n'est pas à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si c'est une validité à formule d'expérience récente :&lt;br /&gt;
**** l'utilisateur a l'expérience requise&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** Si la validité n'est pas soumise à échéance alors l'utilisateur possède la validité&lt;br /&gt;
**** Si La validité est soumise à échéance alors l'utilisateur possède la validité et elle n'est pas encore expirée&lt;br /&gt;
** Retourne '''0''' dans les autres cas&lt;br /&gt;
*Si 'check only holding' est à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** L'utilisateur possède la validité&lt;br /&gt;
** Retourne '''0''' dans les autres cas (y compris dans le cas d'une validité à formule d'expérience récente et que l'utilisateur possède l'expérience récente)&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
*[[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul du compte d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+sprintf('%03s', %USER_ID)||Comptes utilisateurs||411001, 411002, etc.&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13795</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13795"/>
				<updated>2016-01-11T09:13:30Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* getSex('person id') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getSex('person id')===&lt;br /&gt;
&lt;br /&gt;
Retourne un nombre correspondant au sexe de la personne :&lt;br /&gt;
* 0 pour un homme&lt;br /&gt;
* 1 pour une femme&lt;br /&gt;
* 2 lorsque ce n'est pas défini&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getSex(1)&lt;br /&gt;
getSex(%USER_ID)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour savoir si un utilisateur est une femme dans une règle de tarification des validités :&lt;br /&gt;
&amp;lt;pre&amp;gt;(getSex(%USER_ID) == 1) ? $reductionFemme : 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id', 'check only holding')===&lt;br /&gt;
'check only holding' est un paramètre optionnel. On ne prend en compte sa valeur que si elle est à 1. Dans les autres cas, on l'ignore.&lt;br /&gt;
&lt;br /&gt;
*Si 'check only holding' n'est pas à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si c'est une validité à formule d'expérience récente :&lt;br /&gt;
**** l'utilisateur a l'expérience requise&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** Si la validité n'est pas soumise à échéance alors l'utilisateur possède la validité&lt;br /&gt;
**** Si La validité est soumise à échéance alors l'utilisateur possède la validité et elle n'est pas encore expirée&lt;br /&gt;
** Retourne '''0''' dans les autres cas&lt;br /&gt;
*Si 'check only holding' est à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** L'utilisateur possède la validité&lt;br /&gt;
** Retourne '''0''' dans les autres cas (y compris dans le cas d'une validité à formule d'expérience récente et que l'utilisateur possède l'expérience récente)&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
*[[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul du compte d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+sprintf('%03s', %USER_ID)||Comptes utilisateurs||411001, 411002, etc.&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=%C3%89critures-comptables&amp;diff=13792</id>
		<title>Écritures comptables</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=%C3%89critures-comptables&amp;diff=13792"/>
				<updated>2016-01-07T12:08:12Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Initialiser le solde d'un compte de trésorerie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Règles sur les écritures=&lt;br /&gt;
&lt;br /&gt;
En comptabilité, il ne peut y avoir d'écriture de débit négatif ou de crédit négatif.&lt;br /&gt;
&lt;br /&gt;
=Les 4 grands types d'écritures=&lt;br /&gt;
 Note : quelque soit l'écriture (=ensemble de mouvements)&lt;br /&gt;
 elle doit toujours être équilibrée (=la somme des débits doit être égale à la somme des crédits)&lt;br /&gt;
&lt;br /&gt;
==Facture fournisseur==&lt;br /&gt;
'''Attention :''' nous présentons ici uniquement la saisie d'une facture fournisseur d'un produit non immobilisé. Cf. le cas d'une [[#Facture_fournisseur_d.27immobilisation|facture fournisseur d'un produit immobilisé]].&lt;br /&gt;
&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 17.94 € sur son compte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||17.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Facture fournisseur intra-communautaire===&lt;br /&gt;
*http://www.eguens.com/v2/comptabilite/cours/tva-intracommunautaire.php&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie allemande :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660)||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie (401)||||15 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA due intracommunautaire (445200)||||2.94 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 15.00 € sur son compte&lt;br /&gt;
&lt;br /&gt;
====Passage de la TVA fournisseur en intra-communautaire====&lt;br /&gt;
Si cette facture a déjà été [[#Saisie_d.27une_facture_fournisseur|saisie comme une facture fournisseur normale]], alors il faut rajouter les écritures :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible intracommunautaire(445661)||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA due intracommunautaire (445200)||||2.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Facture client==&lt;br /&gt;
Je vend un stylo à 20 € HT + 3.92 € de TVA à un client :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||23.92 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA collectée (445710) ||||3.92 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le client à un solde débiteur 23.92 € sur son compte&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne facture pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||20 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Paiement (à un fournisseur)==&lt;br /&gt;
Je fais un chèque de 17.94 € à mon papetier :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Encaissement (d'un client)==&lt;br /&gt;
Je reçois un chèque de 23.92 € de mon client :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||||23.92 €&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||23.92 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Avoirs=&lt;br /&gt;
==Avoir clients==&lt;br /&gt;
Si vous souhaitez faire bénéficier un client d'un avoir sur ses futures factures (par exemple dans le cas où il paie une facture d'essence qui est normalement supportée par la structure), il vous faut saisir une écriture qui va créditer son compte client et débiter un compte produit. Cependant, normalement, on ne débite pas les comptes produits. Il faut donc enregistrer le mouvement sur un compte produit particulier en 709x. Voici un exemple avec un avoir sur des prestations de service à venir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client (411)||||119.60 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA collectée (445710) ||19.60 €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte remise (709600 dans le cas d'une remise des services en 706)||100.00 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client (411)||||119.60 €&lt;br /&gt;
|-&lt;br /&gt;
|Compte remise (709600 dans le cas d'une remise des services en 706)||119.60 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Remises sur facture clients===&lt;br /&gt;
Si vous souhaitez effectuer une remise sur une facture client, il faut passer une écriture de ce sens opposé à l'écriture correspondant à la facture en tenant compte de la TVA, si applicable.&lt;br /&gt;
&lt;br /&gt;
==Avoir fournisseurs==&lt;br /&gt;
Un avoir fournisseur peut correspondre à une remise ou à un retour sur achat.&lt;br /&gt;
===Remise sur facture fournisseur===&lt;br /&gt;
''A documenter''&lt;br /&gt;
&lt;br /&gt;
===Retour sur achat fournisseur===&lt;br /&gt;
Il s'agit d'annuler partiellement ou totalement une facture du fait du retour du produit ou d'une partie des produits. Dans ce cas, les écritures à passer corresponde exactement à l'opposé des écritures de d'une [[#Saisie_d.27une_facture_fournisseur|facture fournisseur]] :&lt;br /&gt;
&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie puis finalement, le stylo ne met plait pas, je le ramène et le fournisseur me rembourse. Je dois donc saisir une écriture qui annulera la 1ère facture :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||||15 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||||2.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||||17.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si le fournisseur m'a fait un avoir, alors le montant de cet avoir doit correspondre au solde du compte du fournisseur (sous réserve que l'ensemble de ses factures soient payées).&lt;br /&gt;
&lt;br /&gt;
Si le fournisseur m'a remboursé le trop perçu, alors il faut également [[#Remboursement_fournisseur|saisir un remboursement fournisseur]].&lt;br /&gt;
&lt;br /&gt;
=Factures clients spécifiques=&lt;br /&gt;
==Saisie d'une facture client Google AdSense==&lt;br /&gt;
Je vend à Google AdSense de l'espace publicitaire. Sur leur attestation de revenus, il n'y a pas mention de TVA. Sur leur FAQ, il est noté : &amp;quot;Dans ce cas [je suis hors d'Irlande], les paiements dus sont effectués par Google Ireland, entreprise régie par les lois irlandaises. Conformément aux termes de votre contrat avec Google, les services fournis sont soumis au mécanisme d'autoliquidation : la TVA est due par le bénéficiaire du service, à savoir Google Ireland, conformément à l'article 196 de la directive 2006/112/CE du Conseil.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
C'est donc Google (le bénéficiaire du service) qui se charge d'acquitter la TVA.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client AdSense||20 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Factures fournisseurs spécifiques=&lt;br /&gt;
==Achat direct==&lt;br /&gt;
On appelle &amp;quot;achat direct&amp;quot; un achat pour lequel on a effectué le paiement directement et dont on ne souhaite pas gérer le compte fournisseur. Cela permet d'avoir 1 seule saisie au lieu de 2 normalement à savoir :&lt;br /&gt;
*[[#Facture_fournisseur|Facture fournisseur]]&lt;br /&gt;
*[[#Paiement_.28.C3.A0_un_fournisseur.29|Paiement au fournisseur]]&lt;br /&gt;
Ainsi, comptablement, on a les écritures suivantes :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Saisie d'une facture fournisseur Google AdWords==&lt;br /&gt;
J'achète à Google AdWords de l'espace publicitaire. Sur leur facture, il n'y a pas mention de TVA. Par contre, il est mentionné : &amp;quot;conformément à l'article 196 de la directive du Conseil 2006/112/EC, la TVA sur ce service est due par le bénéficiaire du service.&amp;quot; (à savoir nous).&lt;br /&gt;
&lt;br /&gt;
Dans ce cas, on saisit la facture sans la TVA et [[#Passage_de_la_TVA_fournisseur_en_intra-communautaire|on saisit ensuite 2 lignes fictives qui s'équilibrent]]. Cette opération est possible car Google est en Irlande (il s'agit donc d'une TVA intra-communautaire).&lt;br /&gt;
&lt;br /&gt;
==Facture fournisseur d'immobilisation==&lt;br /&gt;
Référence : [http://www.eguens.com/v2/comptabilite/cours/enregistrer-achat-immobilisation.php enregistrer achat immobilisation].&lt;br /&gt;
&lt;br /&gt;
J'achète un avion à 150 000 € HT + 29 400 € de TVA chez un constructeur :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Immobilisation corporelle (21xxxx)||150 000 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible sur immobilisations (445620) ||29 400 €||&lt;br /&gt;
|-&lt;br /&gt;
|Constructeur (401xxx)||||179 400 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 179 400 € sur son compte&lt;br /&gt;
&lt;br /&gt;
=Remboursement fournisseur=&lt;br /&gt;
Si j'ai payé trop à un fournisseur ou que j'ai retourné un achat, ce dernier va me rembourser le trop perçu. Un remboursement fournisseur correspond à l'opposé d'un paiement fournisseur :&lt;br /&gt;
&lt;br /&gt;
Mon papetier me fait un chèque de 17.94 € :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Revenus mobiliers=&lt;br /&gt;
Dans ce type de revenu, il n'y a pas de facture et il n'y a pas de client. Il suffit donc de saisir un mouvement entre le compte de trésorerie (au débit dans le cas d'un revenu positif) et le compte de produit correspondant à l'enregistrement des revenus mobiliers (compte 764 par exemple).&lt;br /&gt;
&lt;br /&gt;
=Paiement de la TVA=&lt;br /&gt;
==TVA annuelle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|TVA à décaisser (445510)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte courant (512xxx)||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Acomptes de TVA==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Taxes sur le chiffre d'affaires à régulariser ou en attente - Acomptes - Régime simplifié d'imposition (445810)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte courant (512xxx)||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Solde de compte de bilan=&lt;br /&gt;
Normalement, il n'y a pas lieu de modifier le solde d'un compte de bilan autrement que lors de la mise en place de la comptabilité. Cette initialisation s'effectue lors du [[Getting_started_with_OpenFlyers#Rapatrier_les_.C3.A0_nouveaux_des_comptes_de_bilan|rapatriement des à nouveaux]]. Dans OpenFlyers, elle est [[Getting_started_with_OpenFlyers#Rapatrier_les_.C3.A0_nouveaux_des_comptes_clients|automatisable pour les comptes clients]]. Elle peut être décalée dans le temps et doit être faite manuellement pour les autres comptes de bilan sur le modèle ci-dessous qui correspond au type d'écriture généré automatiquement pour l'import des comptes clients :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|[[Account#Comptes_de_bilan|Compte de bilan concerné]]||10.000 €||&lt;br /&gt;
|-&lt;br /&gt;
|[[Account#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]||||10.000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Initialiser le solde d'un compte de trésorerie==&lt;br /&gt;
'''Attention''' : dans le cas d'un compte de trésorerie il faut penser que le signe du solde doit être inversé par rapport au relevé de banque. Ainsi, si le compte de trésorerie est positif de +1234 €, alors il faut saisir un flux qui va le débiter de +1234 €. L'écriture comptable sera donc la suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte de trésorerie||1.234 €||&lt;br /&gt;
|-&lt;br /&gt;
|[[Account#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]||||1.234 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dans la version 3 d'OpenFlyers cette opération se fait au travers de la [[Use_Accounting3#Saisie_d.27un_flux|saisie d'un flux]].&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
==Subventions d'exploitation==&lt;br /&gt;
*[http://www.compta-facile.com/la-comptabilisation-des-subventions-dexploitation/ La comptabilisation des subventions d'exploitation]&lt;br /&gt;
===Subventions d’exploitation accordées sans conditions===&lt;br /&gt;
Enregistrement de la &amp;quot;promesse&amp;quot; de subvention (par exemple lors de l'obtention d'un document officiel indiquant l'obtention de la subvention)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir ([[Account#Comptes_de_tiers|4417]] - compte de tiers)||10.000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation ([[Wikipedia-fr:Plan_comptable_général_(France)#74._Subventions_d.27exploitation|74]] - compte produit)||||10.000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lorsque la subvention est réellement encaissée, il faut [[#Saisie_d.27un_encaissement_.28d.27un_client.29|saisir cet encaissement]] sur le compte 4417.&lt;br /&gt;
&lt;br /&gt;
==Subventions d'investissement==&lt;br /&gt;
*[http://www.compta-facile.com/subventions-dinvestissement-comptabilite/ La comptabilisation des subventions d'investissement]&lt;br /&gt;
&lt;br /&gt;
=Transfert de charge=&lt;br /&gt;
Dans certains cas, de l'argent peut &amp;quot;arriver&amp;quot; sur le compte de trésorerie sans que cela soit pour autant une recette issue d'une facturation client. C'est le cas par exemple :&lt;br /&gt;
*Lorsqu'une assurance rembourse un sinistre,&lt;br /&gt;
*Lorsque des utilisateurs bénéficient d'une subvention attribuée par leur fédération et qui est versée sur le compte de leur de leur structure&lt;br /&gt;
&lt;br /&gt;
L'écriture de transfert de charge correspond alors à enregistrer :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie (512)||100.00 €||&lt;br /&gt;
|-&lt;br /&gt;
|Transfert de charge (791) ||||100.00 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'opération de TVA à associer.&lt;br /&gt;
&lt;br /&gt;
=Écritures de fin d'exercice avant la clôture de la comptabilité=&lt;br /&gt;
OpenFlyers n'implémente pas de fonctionnalité permettant de générer automatiquement les écritures de fin d'année à passer en comptabilité hormis l'[[#.C3.89criture_d.27apurement_des_comptes_de_r.C3.A9sultat|écriture d'apurement du compte de résultat]]. Il peut être nécessaire de faire appel à un expert-comptable.&lt;br /&gt;
&lt;br /&gt;
Entre autre, il faut penser à :&lt;br /&gt;
*Calculer le solde de TVA lorsque la structure est soumise à la TVA&lt;br /&gt;
*Corriger éventuellement les ventilations des salaires et charges sociales&lt;br /&gt;
*[[#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|Transférer les produits et charges constatées d'avance]]&lt;br /&gt;
*Passer les amortissements et provisions pour charge&lt;br /&gt;
*Passer l'[[#.C3.89criture_d.27apurement_des_comptes_de_r.C3.A9sultat|écriture d'apurement des comptes de résultat]]&lt;br /&gt;
&lt;br /&gt;
==Écriture d'apurement des comptes de résultat==&lt;br /&gt;
L'écriture d’apurement des comptes de charges (6x) et de produits (7x) se fait après édition du compte de résultat au 31 décembre de l'année considérée.&lt;br /&gt;
&lt;br /&gt;
Le but est de solder (=mettre à 0) tous les comptes de résultat et d'injecter le résultat de l'exercice dans le compte 129000 (perte) ou 120000 (bénéfice).&lt;br /&gt;
&lt;br /&gt;
[[Use_Accounting3#Solder_les_comptes|La version 3 d'OpenFlyers intègre un module]] permettant d'effectuer cette opération semi-automatiquement.&lt;br /&gt;
&lt;br /&gt;
==Écriture de report à nouveau==&lt;br /&gt;
Cette écriture n'a pas besoin d'être passée dans OpenFlyers lorsqu'on ouvre un nouvel exercice Comptable. En effet, les à nouveaux sont repris automatiquement du solde de l'exercice précédent.&lt;br /&gt;
&lt;br /&gt;
Cependant, lorsqu'on crée de nouveaux comptes, lorsqu'on met en place la comptabilité dans OpenFlyers, il peut être nécessaire de passer une ou plusieurs écritures de report d'à nouveau. Il s'agit de saisir un flux au sens OpenFlyers en effectuant un mouvement entre un compte bilan 110000 &amp;quot;Report à nouveau&amp;quot; et le ou les comptes concernés. Voir saisie d'un flux sur la [[Use_Accounting3#Saisie_d.27un_flux| version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux| version 4]].&lt;br /&gt;
&lt;br /&gt;
==Écritures de transfert des produits et charges constatées d'avance==&lt;br /&gt;
L'idéal est d'avoir des comptes produits dédiés pour recevoir les ventes correspondant à des produits constatés d'avance. Il en est de même pour les comptes de charges.&lt;br /&gt;
&lt;br /&gt;
Ainsi, supposons que nous ayons un compte produit ''Cotisation N+1'' recevant [[Accounting_Specic_Advise#Cotisations.2Fabonnements_ann.C3.A9e_N.2B1|les produits des cotisations valables pour l'année suivante]]. En fin d'année, ce compte produit à un solde X. Il faut transférer le montant de ce solde sur un compte de produits constatés d'avance :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Cotisations N+1 (compte de produit)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Produits constatés d'avances ([[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|compte de tiers 487]])||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Après l'ouverture du nouvel exercice, il faudra [[#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|réaffecter les produits/charges constatées d'avances]].&lt;br /&gt;
&lt;br /&gt;
=Écritures de début d'exercice après l'ouverture de la comptabilité=&lt;br /&gt;
==Écritures de réaffectation des produits/charges constatées d'avances==&lt;br /&gt;
Avant la clôture de la comptabilité, s'il a été nécessaire de [[#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|transférer des produits ou charges constatées d'avances]], alors après l'ouverture de la comptabilité, il faut réaffecter ces montants sur les comptes produits &amp;quot;normaux&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ainsi, supposons que nous ayons passé un mouvement de X € entre le compte produit ''Cotisations N+1'' et le compte de produits constatés d'avance. Alors il faudra réaffecter ce même montant sur le compte produit ''Cotisations N'' :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Produits constatés d'avances ([[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|compte de tiers 487]])||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Cotisations (compte de produit)||||X €&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=%C3%89critures-comptables&amp;diff=13791</id>
		<title>Écritures comptables</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=%C3%89critures-comptables&amp;diff=13791"/>
				<updated>2016-01-07T12:07:38Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Solde de compte de bilan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Règles sur les écritures=&lt;br /&gt;
&lt;br /&gt;
En comptabilité, il ne peut y avoir d'écriture de débit négatif ou de crédit négatif.&lt;br /&gt;
&lt;br /&gt;
=Les 4 grands types d'écritures=&lt;br /&gt;
 Note : quelque soit l'écriture (=ensemble de mouvements)&lt;br /&gt;
 elle doit toujours être équilibrée (=la somme des débits doit être égale à la somme des crédits)&lt;br /&gt;
&lt;br /&gt;
==Facture fournisseur==&lt;br /&gt;
'''Attention :''' nous présentons ici uniquement la saisie d'une facture fournisseur d'un produit non immobilisé. Cf. le cas d'une [[#Facture_fournisseur_d.27immobilisation|facture fournisseur d'un produit immobilisé]].&lt;br /&gt;
&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 17.94 € sur son compte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||17.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Facture fournisseur intra-communautaire===&lt;br /&gt;
*http://www.eguens.com/v2/comptabilite/cours/tva-intracommunautaire.php&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie allemande :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660)||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie (401)||||15 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA due intracommunautaire (445200)||||2.94 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 15.00 € sur son compte&lt;br /&gt;
&lt;br /&gt;
====Passage de la TVA fournisseur en intra-communautaire====&lt;br /&gt;
Si cette facture a déjà été [[#Saisie_d.27une_facture_fournisseur|saisie comme une facture fournisseur normale]], alors il faut rajouter les écritures :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible intracommunautaire(445661)||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA due intracommunautaire (445200)||||2.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Facture client==&lt;br /&gt;
Je vend un stylo à 20 € HT + 3.92 € de TVA à un client :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||23.92 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA collectée (445710) ||||3.92 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le client à un solde débiteur 23.92 € sur son compte&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne facture pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||20 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Paiement (à un fournisseur)==&lt;br /&gt;
Je fais un chèque de 17.94 € à mon papetier :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Encaissement (d'un client)==&lt;br /&gt;
Je reçois un chèque de 23.92 € de mon client :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client||||23.92 €&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||23.92 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Avoirs=&lt;br /&gt;
==Avoir clients==&lt;br /&gt;
Si vous souhaitez faire bénéficier un client d'un avoir sur ses futures factures (par exemple dans le cas où il paie une facture d'essence qui est normalement supportée par la structure), il vous faut saisir une écriture qui va créditer son compte client et débiter un compte produit. Cependant, normalement, on ne débite pas les comptes produits. Il faut donc enregistrer le mouvement sur un compte produit particulier en 709x. Voici un exemple avec un avoir sur des prestations de service à venir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client (411)||||119.60 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA collectée (445710) ||19.60 €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte remise (709600 dans le cas d'une remise des services en 706)||100.00 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client (411)||||119.60 €&lt;br /&gt;
|-&lt;br /&gt;
|Compte remise (709600 dans le cas d'une remise des services en 706)||119.60 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Remises sur facture clients===&lt;br /&gt;
Si vous souhaitez effectuer une remise sur une facture client, il faut passer une écriture de ce sens opposé à l'écriture correspondant à la facture en tenant compte de la TVA, si applicable.&lt;br /&gt;
&lt;br /&gt;
==Avoir fournisseurs==&lt;br /&gt;
Un avoir fournisseur peut correspondre à une remise ou à un retour sur achat.&lt;br /&gt;
===Remise sur facture fournisseur===&lt;br /&gt;
''A documenter''&lt;br /&gt;
&lt;br /&gt;
===Retour sur achat fournisseur===&lt;br /&gt;
Il s'agit d'annuler partiellement ou totalement une facture du fait du retour du produit ou d'une partie des produits. Dans ce cas, les écritures à passer corresponde exactement à l'opposé des écritures de d'une [[#Saisie_d.27une_facture_fournisseur|facture fournisseur]] :&lt;br /&gt;
&lt;br /&gt;
J'achète un stylo à 15 € HT + 2.94 € de TVA dans une papeterie puis finalement, le stylo ne met plait pas, je le ramène et le fournisseur me rembourse. Je dois donc saisir une écriture qui annulera la 1ère facture :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||||15 €&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||||2.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cas où l'on ne gère pas la TVA, l'écriture devient :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||||17.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si le fournisseur m'a fait un avoir, alors le montant de cet avoir doit correspondre au solde du compte du fournisseur (sous réserve que l'ensemble de ses factures soient payées).&lt;br /&gt;
&lt;br /&gt;
Si le fournisseur m'a remboursé le trop perçu, alors il faut également [[#Remboursement_fournisseur|saisir un remboursement fournisseur]].&lt;br /&gt;
&lt;br /&gt;
=Factures clients spécifiques=&lt;br /&gt;
==Saisie d'une facture client Google AdSense==&lt;br /&gt;
Je vend à Google AdSense de l'espace publicitaire. Sur leur attestation de revenus, il n'y a pas mention de TVA. Sur leur FAQ, il est noté : &amp;quot;Dans ce cas [je suis hors d'Irlande], les paiements dus sont effectués par Google Ireland, entreprise régie par les lois irlandaises. Conformément aux termes de votre contrat avec Google, les services fournis sont soumis au mécanisme d'autoliquidation : la TVA est due par le bénéficiaire du service, à savoir Google Ireland, conformément à l'article 196 de la directive 2006/112/CE du Conseil.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
C'est donc Google (le bénéficiaire du service) qui se charge d'acquitter la TVA.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Client AdSense||20 €||&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de produit)||||20 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Factures fournisseurs spécifiques=&lt;br /&gt;
==Achat direct==&lt;br /&gt;
On appelle &amp;quot;achat direct&amp;quot; un achat pour lequel on a effectué le paiement directement et dont on ne souhaite pas gérer le compte fournisseur. Cela permet d'avoir 1 seule saisie au lieu de 2 normalement à savoir :&lt;br /&gt;
*[[#Facture_fournisseur|Facture fournisseur]]&lt;br /&gt;
*[[#Paiement_.28.C3.A0_un_fournisseur.29|Paiement au fournisseur]]&lt;br /&gt;
Ainsi, comptablement, on a les écritures suivantes :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Stylo (compte de charge)||15 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible (445660) ||2.94 €||&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||||17.94 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Saisie d'une facture fournisseur Google AdWords==&lt;br /&gt;
J'achète à Google AdWords de l'espace publicitaire. Sur leur facture, il n'y a pas mention de TVA. Par contre, il est mentionné : &amp;quot;conformément à l'article 196 de la directive du Conseil 2006/112/EC, la TVA sur ce service est due par le bénéficiaire du service.&amp;quot; (à savoir nous).&lt;br /&gt;
&lt;br /&gt;
Dans ce cas, on saisit la facture sans la TVA et [[#Passage_de_la_TVA_fournisseur_en_intra-communautaire|on saisit ensuite 2 lignes fictives qui s'équilibrent]]. Cette opération est possible car Google est en Irlande (il s'agit donc d'une TVA intra-communautaire).&lt;br /&gt;
&lt;br /&gt;
==Facture fournisseur d'immobilisation==&lt;br /&gt;
Référence : [http://www.eguens.com/v2/comptabilite/cours/enregistrer-achat-immobilisation.php enregistrer achat immobilisation].&lt;br /&gt;
&lt;br /&gt;
J'achète un avion à 150 000 € HT + 29 400 € de TVA chez un constructeur :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Immobilisation corporelle (21xxxx)||150 000 €||&lt;br /&gt;
|-&lt;br /&gt;
|TVA déductible sur immobilisations (445620) ||29 400 €||&lt;br /&gt;
|-&lt;br /&gt;
|Constructeur (401xxx)||||179 400 €&lt;br /&gt;
|}&lt;br /&gt;
A l'issue de l'enregistrement de cette écriture le fournisseur à un solde créditeur de 179 400 € sur son compte&lt;br /&gt;
&lt;br /&gt;
=Remboursement fournisseur=&lt;br /&gt;
Si j'ai payé trop à un fournisseur ou que j'ai retourné un achat, ce dernier va me rembourser le trop perçu. Un remboursement fournisseur correspond à l'opposé d'un paiement fournisseur :&lt;br /&gt;
&lt;br /&gt;
Mon papetier me fait un chèque de 17.94 € :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Papeterie||||17.94 €&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie||17.94 €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Revenus mobiliers=&lt;br /&gt;
Dans ce type de revenu, il n'y a pas de facture et il n'y a pas de client. Il suffit donc de saisir un mouvement entre le compte de trésorerie (au débit dans le cas d'un revenu positif) et le compte de produit correspondant à l'enregistrement des revenus mobiliers (compte 764 par exemple).&lt;br /&gt;
&lt;br /&gt;
=Paiement de la TVA=&lt;br /&gt;
==TVA annuelle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|TVA à décaisser (445510)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte courant (512xxx)||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Acomptes de TVA==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Taxes sur le chiffre d'affaires à régulariser ou en attente - Acomptes - Régime simplifié d'imposition (445810)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte courant (512xxx)||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Solde de compte de bilan=&lt;br /&gt;
Normalement, il n'y a pas lieu de modifier le solde d'un compte de bilan autrement que lors de la mise en place de la comptabilité. Cette initialisation s'effectue lors du [[Getting_started_with_OpenFlyers#Rapatrier_les_.C3.A0_nouveaux_des_comptes_de_bilan|rapatriement des à nouveaux]]. Dans OpenFlyers, elle est [[Getting_started_with_OpenFlyers#Rapatrier_les_.C3.A0_nouveaux_des_comptes_clients|automatisable pour les comptes clients]]. Elle peut être décalée dans le temps et doit être faite manuellement pour les autres comptes de bilan sur le modèle ci-dessous qui correspond au type d'écriture généré automatiquement pour l'import des comptes clients :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|[[Account#Comptes_de_bilan|Compte de bilan concerné]]||10.000 €||&lt;br /&gt;
|-&lt;br /&gt;
|[[Account#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]||||10.000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Initialiser le solde d'un compte de trésorerie==&lt;br /&gt;
Attention : dans le cas d'un compte de trésorerie il faut penser que le signe du solde doit être inversé par rapport au relevé de banque. Ainsi, si le compte de trésorerie est positif de +1234 €, alors il faut saisir un flux qui va le débiter de +1234 €. L'écriture comptable sera donc la suivante :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte de trésorerie||1.234 €||&lt;br /&gt;
|-&lt;br /&gt;
|[[Account#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]||||1.234 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dans la version 3 d'OpenFlyers cette opération se fait au travers de la [[Use_Accounting3#Saisie_d.27un_flux|saisie d'un flux]].&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
==Subventions d'exploitation==&lt;br /&gt;
*[http://www.compta-facile.com/la-comptabilisation-des-subventions-dexploitation/ La comptabilisation des subventions d'exploitation]&lt;br /&gt;
===Subventions d’exploitation accordées sans conditions===&lt;br /&gt;
Enregistrement de la &amp;quot;promesse&amp;quot; de subvention (par exemple lors de l'obtention d'un document officiel indiquant l'obtention de la subvention)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir ([[Account#Comptes_de_tiers|4417]] - compte de tiers)||10.000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation ([[Wikipedia-fr:Plan_comptable_général_(France)#74._Subventions_d.27exploitation|74]] - compte produit)||||10.000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lorsque la subvention est réellement encaissée, il faut [[#Saisie_d.27un_encaissement_.28d.27un_client.29|saisir cet encaissement]] sur le compte 4417.&lt;br /&gt;
&lt;br /&gt;
==Subventions d'investissement==&lt;br /&gt;
*[http://www.compta-facile.com/subventions-dinvestissement-comptabilite/ La comptabilisation des subventions d'investissement]&lt;br /&gt;
&lt;br /&gt;
=Transfert de charge=&lt;br /&gt;
Dans certains cas, de l'argent peut &amp;quot;arriver&amp;quot; sur le compte de trésorerie sans que cela soit pour autant une recette issue d'une facturation client. C'est le cas par exemple :&lt;br /&gt;
*Lorsqu'une assurance rembourse un sinistre,&lt;br /&gt;
*Lorsque des utilisateurs bénéficient d'une subvention attribuée par leur fédération et qui est versée sur le compte de leur de leur structure&lt;br /&gt;
&lt;br /&gt;
L'écriture de transfert de charge correspond alors à enregistrer :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Trésorerie (512)||100.00 €||&lt;br /&gt;
|-&lt;br /&gt;
|Transfert de charge (791) ||||100.00 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Il n'y a pas d'opération de TVA à associer.&lt;br /&gt;
&lt;br /&gt;
=Écritures de fin d'exercice avant la clôture de la comptabilité=&lt;br /&gt;
OpenFlyers n'implémente pas de fonctionnalité permettant de générer automatiquement les écritures de fin d'année à passer en comptabilité hormis l'[[#.C3.89criture_d.27apurement_des_comptes_de_r.C3.A9sultat|écriture d'apurement du compte de résultat]]. Il peut être nécessaire de faire appel à un expert-comptable.&lt;br /&gt;
&lt;br /&gt;
Entre autre, il faut penser à :&lt;br /&gt;
*Calculer le solde de TVA lorsque la structure est soumise à la TVA&lt;br /&gt;
*Corriger éventuellement les ventilations des salaires et charges sociales&lt;br /&gt;
*[[#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|Transférer les produits et charges constatées d'avance]]&lt;br /&gt;
*Passer les amortissements et provisions pour charge&lt;br /&gt;
*Passer l'[[#.C3.89criture_d.27apurement_des_comptes_de_r.C3.A9sultat|écriture d'apurement des comptes de résultat]]&lt;br /&gt;
&lt;br /&gt;
==Écriture d'apurement des comptes de résultat==&lt;br /&gt;
L'écriture d’apurement des comptes de charges (6x) et de produits (7x) se fait après édition du compte de résultat au 31 décembre de l'année considérée.&lt;br /&gt;
&lt;br /&gt;
Le but est de solder (=mettre à 0) tous les comptes de résultat et d'injecter le résultat de l'exercice dans le compte 129000 (perte) ou 120000 (bénéfice).&lt;br /&gt;
&lt;br /&gt;
[[Use_Accounting3#Solder_les_comptes|La version 3 d'OpenFlyers intègre un module]] permettant d'effectuer cette opération semi-automatiquement.&lt;br /&gt;
&lt;br /&gt;
==Écriture de report à nouveau==&lt;br /&gt;
Cette écriture n'a pas besoin d'être passée dans OpenFlyers lorsqu'on ouvre un nouvel exercice Comptable. En effet, les à nouveaux sont repris automatiquement du solde de l'exercice précédent.&lt;br /&gt;
&lt;br /&gt;
Cependant, lorsqu'on crée de nouveaux comptes, lorsqu'on met en place la comptabilité dans OpenFlyers, il peut être nécessaire de passer une ou plusieurs écritures de report d'à nouveau. Il s'agit de saisir un flux au sens OpenFlyers en effectuant un mouvement entre un compte bilan 110000 &amp;quot;Report à nouveau&amp;quot; et le ou les comptes concernés. Voir saisie d'un flux sur la [[Use_Accounting3#Saisie_d.27un_flux| version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux| version 4]].&lt;br /&gt;
&lt;br /&gt;
==Écritures de transfert des produits et charges constatées d'avance==&lt;br /&gt;
L'idéal est d'avoir des comptes produits dédiés pour recevoir les ventes correspondant à des produits constatés d'avance. Il en est de même pour les comptes de charges.&lt;br /&gt;
&lt;br /&gt;
Ainsi, supposons que nous ayons un compte produit ''Cotisation N+1'' recevant [[Accounting_Specic_Advise#Cotisations.2Fabonnements_ann.C3.A9e_N.2B1|les produits des cotisations valables pour l'année suivante]]. En fin d'année, ce compte produit à un solde X. Il faut transférer le montant de ce solde sur un compte de produits constatés d'avance :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Cotisations N+1 (compte de produit)||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Produits constatés d'avances ([[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|compte de tiers 487]])||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Après l'ouverture du nouvel exercice, il faudra [[#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|réaffecter les produits/charges constatées d'avances]].&lt;br /&gt;
&lt;br /&gt;
=Écritures de début d'exercice après l'ouverture de la comptabilité=&lt;br /&gt;
==Écritures de réaffectation des produits/charges constatées d'avances==&lt;br /&gt;
Avant la clôture de la comptabilité, s'il a été nécessaire de [[#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|transférer des produits ou charges constatées d'avances]], alors après l'ouverture de la comptabilité, il faut réaffecter ces montants sur les comptes produits &amp;quot;normaux&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ainsi, supposons que nous ayons passé un mouvement de X € entre le compte produit ''Cotisations N+1'' et le compte de produits constatés d'avance. Alors il faudra réaffecter ce même montant sur le compte produit ''Cotisations N'' :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Produits constatés d'avances ([[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|compte de tiers 487]])||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Cotisations (compte de produit)||||X €&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13789</id>
		<title>Modèle commercial et compte client OpenFlyers</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13789"/>
				<updated>2016-01-05T10:12:58Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Définitions=&lt;br /&gt;
==Plateforme de démonstration==&lt;br /&gt;
Les plateformes de démonstration sont accessibles au public et servent de bac à sable.&lt;br /&gt;
&lt;br /&gt;
Le sous-domaine de l'URL des plateformes de démonstration est ''demo'' ou commence par ''demo-''. Il existe également des plateformes de démonstration spécifiques dont le sous-domaine est différent.&lt;br /&gt;
&lt;br /&gt;
Elles sont réinitialisées toutes les heures à la minute 44.&lt;br /&gt;
==Plateforme en production==&lt;br /&gt;
Une plateforme est considérée en production lorsque l'abonnement pour l'année en cours a été payé.&lt;br /&gt;
&lt;br /&gt;
La phase de paramétrage qui précède le &amp;quot;passage en production&amp;quot; effectif s'effectue toujours sur une &amp;quot;plateforme en production&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Plateforme en test==&lt;br /&gt;
Les plateformes en test sont de 2 natures :&lt;br /&gt;
*Les plateformes créées par un utilisateur et qui ne sont pas [[#Plateforme_en_production|en production]];&lt;br /&gt;
*[[#Plateforme_suppl.C3.A9mentaire_de_test|Les plateformes supplémentaires de test]];&lt;br /&gt;
&lt;br /&gt;
=Le modèle commercial de la SARL OpenFlyers=&lt;br /&gt;
==Fonctionnement économique==&lt;br /&gt;
OpenFlyers fonctionne sur le modèle économique d'une ASP (=Application Service Provider) ou SaaS (= Software as a Service). On parle également de &amp;quot;cloud computing&amp;quot; (informatique dans les nuages). C'est-à-dire que nous fournissons un service applicatif par le biais d'internet pour lequel nous facturons un abonnement annuel.&lt;br /&gt;
&lt;br /&gt;
Les avantages de ce système pour les clients finaux sont les suivants :&lt;br /&gt;
*la maintenance logiciel est déportée et ne nécessite plus le déplacement d'un technicien. Cela permet également de mettre en œuvre plus rapidement des correctifs à la demande ;&lt;br /&gt;
*le coût des développements est mutualisé entre les différents clients ;&lt;br /&gt;
*nous assurons nous-mêmes la pérennité des données par sauvegardes journalières sur plusieurs serveurs en plusieurs lieux et cela sur 20 jours glissants.&lt;br /&gt;
&lt;br /&gt;
De plus, OpenFlyers existe en plusieurs versions dont certaines sont disponibles en téléchargement. Vous pouvez retrouver [http://wiki.openflyers.org/index.php?title=FAQ#May_I_install_OpenFlyers_on_my_own_server.3F plus d'infos sur notre support libre].&lt;br /&gt;
&lt;br /&gt;
==Arbitrage des demandes de développements==&lt;br /&gt;
Les demandes de développements pour avoir de nouvelles fonctionnalités sont infinies. Au début de son existence OpenFlyers devait arbitrer entre les demandes des différents clients. Pour cela, l'équipe de développement OpenFlyers tenait compte de la taille d'un client ou d'un prospect pour arbitrer les différentes demandes et du potentiel impact qui pouvait en résulter sur le chiffre d'affaire au travers des nouveaux clients qui pouvaient se décider à passer à OpenFlyers du fait de l'existence de telle ou telle fonctionnalité. Ces demandes étant nombreuses, les demandes non retenues étaient nombreuses et cela pouvait conduire à &amp;quot;vexer&amp;quot; un client qui pouvait considérer que sa demande non retenue ou mise en attente était plus pertinente qu'une autre demande retenue.&lt;br /&gt;
&lt;br /&gt;
Afin de ne plus être juge et parti, OpenFlyers a remis au goût du jour le [[Wikipedia-fr:Suffrage_censitaire|vote censitaire]] au travers des heures de bonus développement. Ainsi, les conditions générales d'OpenFlyers donne la possibilité aux clients de choisir eux-mêmes les développements qui leur seront le plus profitable. Le fonctionnement est le suivant :&lt;br /&gt;
*Tout client désireux de voir développer une nouvelle fonctionnalité peut faire '''une unique demande''' de devis développement '''par an'''. Cette demande doit être effectuée par e-mail en précisant le nom de la structure aéronautique cliente.&lt;br /&gt;
*En fonction du coût en heures de développement, ce développement peut être financé par les heures de bonus développement dont bénéficie chaque client. Plusieurs clients peuvent mutualiser leurs heures de bonus de développement. Les développements peuvent être également financés en partie ou en totalité par une facturation spécifique dans le cas où le bonus développement ne permet pas de couvrir l'intégralité du coût en heures.&lt;br /&gt;
*A l'issue d'une demande de devis, un client peut demander un nouveau devis à condition qu'il ait accepté le 1er devis. Le but est de limiter le temps consacré par l'équipe OpenFlyers à effectuer des devis.&lt;br /&gt;
Nous mutualisons les développements : tous nos développements sont intégrés au sein de l'unique version en cours de développement. Ainsi, tous les clients bénéficient des demandes de chacun d'entre-eux.&lt;br /&gt;
*Les développements &amp;quot;votés&amp;quot; sont triés par ordre d'arrivé sauf pour ceux dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
Enfin, les clients peuvent, avant d'effectuer une demande de devis par e-mail, faire part de leur demande sur le [http://support-fr.openflyers.com/ forum] dans la partie '''Evolutions et Adaptations''' en vérifiant qu'elle n'existe pas déjà. C'est aussi un moyen pour le demandeur d'inviter d'autres clients à s'associer à leur demande en mutualisant leurs heures de bonus développement.&lt;br /&gt;
&lt;br /&gt;
==Bonus assistance/développement==&lt;br /&gt;
Chaque client dispose en fonction de son abonnement d'un quota d'heures de bonus qui peuvent être utilisées comme assistance ou comme développement (cf. [[#Arbitrage_des_demandes_de_d.C3.A9veloppements|Arbitrage des demandes de développements]]).&lt;br /&gt;
&lt;br /&gt;
L'assistance permet de couvrir une demande de support téléphonique ou une demande d'intervention sur la plateforme.&lt;br /&gt;
&lt;br /&gt;
Pour utiliser les heures de bonus, il faut :&lt;br /&gt;
*Faire une demande par e-mail d'intervention ou de support.&lt;br /&gt;
''Nous répondons en indiquant le temps à prévoir/déduire des heures de bonus''&lt;br /&gt;
*Confirmer sa demande par retour d'e-mail&lt;br /&gt;
&lt;br /&gt;
Les demandes sont triées par ordre d'arrivé sauf pour celles dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
A noter que les heures non utilisées dans l'année sont perdues (cf. les [https://openflyers.com/fr/entreprise/conditions-generales conditions générales de vente]).&lt;br /&gt;
&lt;br /&gt;
Il n'existe pas à ce jour d'interface permettant de suivre les heures déjà utilisées. Il est néanmoins possible d'en obtenir le suivi sur simple demande par e-mail.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
Attention, il ne faut pas confondre son compte client OpenFlyers qui permet d'accéder à sa fiche client OpenFlyers et qui permet de renouveler son abonnement OpenFlyers avec son identifiant personnel permettant d'accéder à sa plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
==Accéder à son compte client OpenFlyers==&lt;br /&gt;
Aller sur [https://client.openflyers.com l'espace client] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'identifiant permettant d'accéder à votre compte client correspond au sous-domaine de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Par exemple, si votre plateforme est référencée par l'adresse :&lt;br /&gt;
 http://mermoz.openflyers.fr&lt;br /&gt;
&lt;br /&gt;
Alors le sous-domaine est '''mermoz'''.&lt;br /&gt;
&lt;br /&gt;
C'est donc '''mermoz''' qu'il faut utiliser comme identifiant pour vous connecter au .&lt;br /&gt;
&lt;br /&gt;
Si vous n'avez pas le mot de passe, vous pouvez le réactiver avec la fonction '''Mot de passe oublié ?''' qui est sur la page d'identification.&lt;br /&gt;
&lt;br /&gt;
Une adresse e-mail vous sera demandée. Vous pourrez saisir l'adresse e-mail de la structure aéronautique ou celle du contact qui ont été saisies dans la fiche client (il s'agit des adresses e-mails sur lesquelles sont envoyées nos e-mails d'alerte de renouvellement ou d'information).&lt;br /&gt;
&lt;br /&gt;
Dans le but de ne pas être submergés par les demandes, nous facturons la ré-initialisation manuelle, par nos soins, du mot de passe ou la mise à jour des adresses e-mails présentes sur la fiche client pour les abonnement First Price (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Changer de responsable en charge d'OpenFlyers==&lt;br /&gt;
Lorsqu'il y a un changement de responsable en charge d'OpenFlyers, pour que la passation se passe dans les meilleures conditions, il faut penser à effectuer les 3 changements suivants :&lt;br /&gt;
*Attribuer un profil d'administrateur de la plateforme OpenFlyers au niveau de la plateforme (procédure pour intervenir sur la fiche utilisateur pour la [[User-management3#Modifier_un_utilisateur|version 3]] ou la [[User-management4#Acc.C3.A9der_.C3.A0_l.27interface_de_gestion_des_utilisateurs|version 4]])&lt;br /&gt;
*Mettre à jour le champ du responsable OpenFlyers au niveau de la plateforme (procédure pour la [[AdminDoc3#Responsable_OpenFlyers|version 3]] et la [[AdminDoc4#Responsable_OpenFlyers|version 4]]).&lt;br /&gt;
*Mettre à jour le nom du responsable OpenFlyers au niveau de la fiche client en effectuant la procédure suivante :&lt;br /&gt;
**[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client OpenFlyers]]&lt;br /&gt;
**Aller dans '''Fiche contact'''&lt;br /&gt;
**Mettre à jour la fiche&lt;br /&gt;
**Cliquer sur le bouton '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Dans le cas où la passation ne peut pas se faire ainsi car l'ancien responsable OpenFlyers ne peut pas effectuer ces opérations ou transmettre les couples (identifiants, mots de passe) au nouveau responsable pour qu'il effectue ces opérations, vous pouvez nous demandez, uniquement par e-mail, d'effectuer ces changements de responsable OpenFlyers, en joignant à l'e-mail :&lt;br /&gt;
*Un courrier signé du responsable de la structure (gérant, président, etc.) contenant la demande de mise à jour du responsable OpenFlyers désigné et indiquant explicitement le nom du nouveau responsable avec son adresse e-mail&lt;br /&gt;
*Une copie d'un document officiel (extrait K-BIS, procès-verbal d'assemblée générale, etc.) permettant de prouver la qualité du responsable de la structure.&lt;br /&gt;
Le courrier scanné n'est pas nécessaire dans le cas où le nouveau responsable OpenFlyers apparait sur l'extrait K-BIS.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' dans le cas d'une société, le responsable de la structure doit détenir plus de la moitié des parts dans la société. Dans le cas où il y a cogérance, alors il faut que le courrier soit signé de l'ensemble des responsables de sorte à représenter plus de la moitié des parts de la société.&lt;br /&gt;
&lt;br /&gt;
==Mettre à jour sa fiche client==&lt;br /&gt;
*[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client]]&lt;br /&gt;
*Cliquer sur le menu '''Fiche contact'''&lt;br /&gt;
*Mettre à jour le contenu des champs concernés&lt;br /&gt;
*Cliquer sur le bouton valider&lt;br /&gt;
''Conseil OpenFlyers :'' Il est fortement recommandé d'avoir 2 adresses e-mails différentes pour les champs '''E-mail client''' et '''E-mail contact'''&lt;br /&gt;
&lt;br /&gt;
==Migrer vers une nouvelle version OpenFlyers==&lt;br /&gt;
Chez OpenFlyers, nous parlons de migration vers une nouvelle version lorsqu'il s'agit de mettre à jour une plateforme d'une version X vers une version Y incluant des changements majeurs.&lt;br /&gt;
&lt;br /&gt;
Par contre, il existe les mises à jours. Les mises à jour ne changent pas le numéro de version principal (exemple : 3.2 ou 3.5 correspondent à la même version principale). OpenFlyers effectue ces mises à jour automatiquement. Leur objectif est de corriger des bugs ou de rajouter de nouvelles fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
Hormis pour les abonnements Première, qui disposent d'une plateforme avec une version gelée et indépendante d'OpenFlyers, toutes les autres plateformes OpenFlyers sont sur un moteur commun qui est mis à jour de façon transparente plusieurs fois par semaine, voir même par jour.&lt;br /&gt;
&lt;br /&gt;
Nous ne présentons ci-dessous que les migrations &amp;quot;majeurs&amp;quot; qui peuvent impliquer des opérations de nettoyage manuel post-migration.&lt;br /&gt;
&lt;br /&gt;
===Coût d'une migration===&lt;br /&gt;
Lorsque vous êtes en production sur une version X d'OpenFlyers, vous pouvez demander à migrer vers la dernière version stable proposée aux nouveaux clients ou même vers la dernière version en développement dénommée &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; (par exemple &amp;quot;version 3.0alpha&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Les migrations sont incluses dans le support des abonnement Business, Première et Corporate.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un abonnement First Price, la migration est facturée 50 € HT sauf dans le cas d'une migration vers une version alpha ou beta ou depuis vers une version alpha ou beta vers la version stable suivante. Exemple de migrations offertes en abonnement First Price :&lt;br /&gt;
*Migration depuis la version 3.0alpha vers la version 3&lt;br /&gt;
*Migration depuis la version 3.5 vers la version 4.0alpha&lt;br /&gt;
*Migration depuis la version 4.0alpha vers la version 4&lt;br /&gt;
&lt;br /&gt;
Enfin, dans le cas où la plateforme bénéficiait d'un ancien tarif, le fait de migrer implique le passage au tarif en vigueur au moment de la migration et à l'acquittement de la différence de tarif par rapport à l'ancien tarif.&lt;br /&gt;
&lt;br /&gt;
===Déroulement d'une migration===&lt;br /&gt;
#Il faut avoir pris connaissance des [[#Cons.C3.A9quences_d.27une_migration|conséquences d'une migration]] et accepter le fait qu'elle est irréversible&lt;br /&gt;
#Il faut éventuellement créer la ou les factures selon l'abonnement déjà souscrit et l'abonnement souhaité (cf. [[#Co.C3.BBt_d.27une_migration|Coût d'une migration]] en [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|se connectant sur l'espace client]].&lt;br /&gt;
#Il faut payer les factures correspondantes ainsi créées.&lt;br /&gt;
#Il faut en faire la demande par e-mail et précisant la date avant laquelle vous ne souhaitez pas qu'on effectue de migration. Il n'est pas possible de programmer une date pour une migration : cela se fait en fonction de la synchronisation des disponibilités des différents collaborateurs d'OpenFlyers qui doivent intervenir à tour de rôle.&lt;br /&gt;
#Nous créons alors les factures liées à la migration, à la différence de tarif et au forfait paramétrage selon votre abonnement et les options souscrites (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
#Vous payez.&lt;br /&gt;
#Nous procédons alors à cette migration et nous fournissons une URL de substitution pendant une semaine pour palier les problèmes de cache DNS. Lors de la migration l'interruption de service est seulement de quelques minutes. Elle est donc transparente pour la quasi totalité des utilisateurs.&lt;br /&gt;
#Selon ce qui a été convenu nous effectuons ou le client effectue [[Upgrade3|le nettoyage lié au passage à la version 3]].&lt;br /&gt;
#Si vous avez souscrit au forfait paramétrage ou qu'il est inclut dans votre abonnement, nous vous envoyons un questionnaire pour le paramétrage. Cf. [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|Forfait paramétrage]]&lt;br /&gt;
&lt;br /&gt;
===Conséquences d'une migration===&lt;br /&gt;
*Toute migration est irréversible : nous ne créons pas de script permettant de revenir vers une version antérieure. En effet, nous effectuons des migrations &amp;quot;cachées&amp;quot; plusieurs fois par semaine qui constituent des corrections de bugs ou l'ajout de nouvelles fonctionnalités. De ce fait, notre exploitation est organisée pour pouvoir palier à un défaut apparaissant à l'issue d'une migration tout comme elle est organisée pour faire face à l'apparition d'un nouveau bug lors d'une mise à jour transparente.&lt;br /&gt;
*Attention notamment à une migration vers une version &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; : en effet, une migration vers cette version implique que vous acceptiez de fonctionner sur une version qui évolue sans cesse. Outre les corrections de bugs, nous rajoutons sur la version beta régulièrement des fonctionnalités qui peuvent créer de nouvelles anomalies. Bien entendu, nous faisons le nécessaire dès que nous avons connaissance d'un problème (notamment par le [http://bts.openflyers.org BTS] pour résoudre les défauts. C'est d'ailleurs grâce aux clients volontaires pour fonctionner sur la version beta que nous pouvons faire évoluer le produit.&lt;br /&gt;
&lt;br /&gt;
==Ajouter une ressource à son abonnement OpenFlyers==&lt;br /&gt;
L'abonnement OpenFlyers est calculé en fonction du nombre de ressources. Le nombre est déterminé pour l'année civile complète.&lt;br /&gt;
&lt;br /&gt;
Si vous voulez rajouter une ressource en cours d'année, alors vous devez [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|vous connecter sur l'espace client OpenFlyers]] et créer une facture d'ajout de ressource en indiquant le nombre de ressources supplémentaires. Le tarif appliqué sera alors celui de l'année complète.&lt;br /&gt;
&lt;br /&gt;
Une fois le paiement de la facture correspondante acquitté, il sera possible d'intervenir sur la plateforme concernée pour rajouter la ressource. Il y alors 2 cas possible :&lt;br /&gt;
*C'est une ressource dont les tarifs correspondent à un type de ressource déjà présent sur la plateforme concernée. Dans ce cas, l'opération est relativement simple et nous conseillons de suivre soi-même la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]].&lt;br /&gt;
*C'est une ressource qui nécessite la création d'un nouveau type de ressource avec de nouveaux tarifs : dans ce cas, l'opération est plus complexe. Elle peut être effectuée de façon autonome en suivant la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]] et en procédant par comparaison avec les types de ressources existantes. Cependant, si vous souhaitez éviter tout risque d'erreur, nous recommandons de nous confier cette tâche en nous communiquant les éléments comme lors de la mise en place du paramétrage par nos soins à l'aide du questionnaire. Nous décomptons notre intervention des heures de bonus assistance/développement à hauteur d'une heure.&lt;br /&gt;
&lt;br /&gt;
===Créer une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#Ajouter_un_avion|Ajouter un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#Ajouter_un_a.C3.A9ronef|Ajouter un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#Ajouter_une_ressource|Ajouter une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#Ajouter_une_ressource|Ajouter une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Enlever une ressource à son abonnement OpenFlyers==&lt;br /&gt;
Si vous enlevez une ressource en cours d'année, il n'y a aucun changement d'abonnement puisque les ressources sont souscrites pour toute l'année.&lt;br /&gt;
&lt;br /&gt;
===Désactiver une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#D.C3.A9sactiver_un_avion|Désactiver un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#D.C3.A9sactiver_un_a.C3.A9ronef|Désactiver un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Remplacer une ressource par une autre dans son abonnement OpenFlyers==&lt;br /&gt;
S'il y a un remplacement de ressource, alors il n'y a pas besoin d'acquitter un nouvel abonnement pour la nouvelle ressource : il suffit de [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver l'ancienne ressource]] avant d'[[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|activer la nouvelle]].&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un remplacement temporaire, il peut être aussi simple de simplement renommer la ressource concernée (immatriculation par exemple). A noter que dans ce cas, les statistiques totaliseront l'activité des 2 ressources en 1 seule.&lt;br /&gt;
&lt;br /&gt;
Si vous ne souhaitez pas désactiver cette ressource, alors vous pouvez [[#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|créer une facture complémentaire d'abonnement pour une ressource supplémentaire]].&lt;br /&gt;
&lt;br /&gt;
==Renouveler son abonnement OpenFlyers==&lt;br /&gt;
Pour renouveler l'abonnement, il faut :&lt;br /&gt;
#[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter]] sur le compte client OpenFlyers&lt;br /&gt;
#Créer la facture en fonction du choix d'abonnement (vous trouverez plus d'informations dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire])&lt;br /&gt;
#Ensuite, payer soit :&lt;br /&gt;
#*par carte bancaire en cliquant sur le lien &amp;quot;paiement par carte bancaire&amp;quot; (le choix le plus pratique pour une prise en compte immédiate)&lt;br /&gt;
#*par transfert bancaire (dans ce cas, vous devez prendre en charge tous les frais liés à la transaction). Les coordonnées bancaires sont indiquées sur la facture.&lt;br /&gt;
#*par chèque (attention au délai d'acheminement du courrier)&lt;br /&gt;
&lt;br /&gt;
===Variation du nombre de ressources lors du renouvellement===&lt;br /&gt;
Lors du renouvellement, le nombre minimum de ressources proposées, dans l'interface de renouvellement de l'abonnement, correspond au nombre de ressources activées dans la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez augmenter le nombre de ressources pour l'année suivante, il suffit de modifier la valeur proposée par défaut.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez diminuer le nombre de ressources pour l'année suivante, il faut [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver des ressources dans la plateforme OpenFlyers]] afin que le nombre proposé par défaut diminue avant de créer la facture de renouvellement d'abonnement.&lt;br /&gt;
&lt;br /&gt;
==Plateforme supplémentaire de test==&lt;br /&gt;
Cette fonctionnalité disponible que pour les clients étant au moins sous la version 3.5 d'OpenFlyers, est utile dans le cas où vous souhaitez :&lt;br /&gt;
*effectuer des tests sur une recopie de la plateforme de démonstration.&lt;br /&gt;
*effectuer des tests sur une recopie de votre propre plateforme et ainsi modifier son paramétrage sur une version [[Wikipedia-fr:Sandbox_(sécurité_informatique)|sandbox]] sans impacter la version de production.&lt;br /&gt;
*essayer la version 4 d'OpenFlyers&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut :&lt;br /&gt;
*Se connecter sur son [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|compte client]]&lt;br /&gt;
*Aller dans le menu '''Plateforme'''&lt;br /&gt;
* Plusieurs choix sont proposés :&lt;br /&gt;
** Si vous êtes sous la version 3.5 :&lt;br /&gt;
*** '''De demo.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de la plateforme démo avec suppression du message d'accueil &amp;quot;La base de données cette plateforme de démonstration est réinitialisée toutes les heures, vers XX:45&amp;quot;.&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.of4.openflyers.fr''' : Permet de créer une plateforme d'essai sous la version 4 d'OpenFlyers en effectuant une recopie de votre plateforme existante puis en faisant une montée de version sur cette recopie&lt;br /&gt;
** Si vous êtes sous la version 3.5 ou supérieure :&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de votre plateforme existante&lt;br /&gt;
* Cliquer sur '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Si votre plateforme est référencée par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme de test se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.test.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme d'essai de la version 4 d'OpenFlyers se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.of4.openflyers.fr&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13782</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13782"/>
				<updated>2015-12-30T09:01:50Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* hasValidity('user id', 'validity type id', 'check only holding') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id', 'check only holding')===&lt;br /&gt;
'check only holding' est un paramètre optionnel. On ne prend en compte sa valeur que si elle est à 1. Dans les autres cas, on l'ignore.&lt;br /&gt;
&lt;br /&gt;
*Si 'check only holding' n'est pas à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si c'est une validité à formule d'expérience récente :&lt;br /&gt;
**** l'utilisateur a l'expérience requise&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** Si la validité n'est pas soumise à échéance alors l'utilisateur possède la validité&lt;br /&gt;
**** Si La validité est soumise à échéance alors l'utilisateur possède la validité et elle n'est pas encore expirée&lt;br /&gt;
** Retourne '''0''' dans les autres cas&lt;br /&gt;
*Si 'check only holding' est à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** L'utilisateur possède la validité&lt;br /&gt;
** Retourne '''0''' dans les autres cas (y compris dans le cas d'une validité à formule d'expérience récente et que l'utilisateur possède l'expérience récente)&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
*[[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul du compte d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+sprintf('%03s', %USER_ID)||Comptes utilisateurs||411001, 411002, etc.&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13781</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13781"/>
				<updated>2015-12-30T09:01:07Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* hasValidity('user id', 'validity type id', 'check only holding') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id', 'check only holding')===&lt;br /&gt;
'check only holding' est un paramètre optionnel. On ne prend en compte sa valeur que si elle est à 1. Dans les autres cas, on l'ignore.&lt;br /&gt;
&lt;br /&gt;
*Si 'check only holding' n'est pas à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si c'est une validité à formule d'expérience récente :&lt;br /&gt;
**** l'utilisateur a l'expérience requise&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** Si la validité n'est pas soumise à échéance alors l'utilisateur possède la validité&lt;br /&gt;
**** Si La validité est soumise à échéance alors l'utilisateur possède la validté et elle n'est pas encore expirée&lt;br /&gt;
** Retourne '''0''' dans les autres cas&lt;br /&gt;
*Si 'check only holding' est à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** L'utilisateur possède la validité&lt;br /&gt;
** Retourne '''0''' dans les autres cas (y compris dans le cas d'une validité à formule d'expérience récente)&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
*[[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul du compte d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+sprintf('%03s', %USER_ID)||Comptes utilisateurs||411001, 411002, etc.&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13780</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13780"/>
				<updated>2015-12-30T08:59:41Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* hasValidity('user id', 'validity type id') */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id', 'check only holding')===&lt;br /&gt;
'check only holding' est un paramètre optionnel. On ne prend en compte sa valeur que si elle est à 1. Dans les autres cas, on l'ignore.&lt;br /&gt;
&lt;br /&gt;
*Si 'check only holding' n'est pas à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si c'est une validité à formule d'expérience récente :&lt;br /&gt;
**** l'utilisateur a l'expérience requise&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** Si la validité n'est pas soumise à échéance alors l'utilisateur possède la validité&lt;br /&gt;
**** Si La validité est soumise à échéance alors l'utilisateur possède la validté et elle n'est pas encore expirée&lt;br /&gt;
** Retourne '''0''' dans les autres cas&lt;br /&gt;
*Si 'check only holding' est à 1 :&lt;br /&gt;
** Retourne '''1''' lorsque :&lt;br /&gt;
*** Si c'est une validité à formule d'expérience récente :&lt;br /&gt;
**** l'utilisateur a l'expérience requise&lt;br /&gt;
*** Si ce n'est pas une validité à formule d'expérience récente :&lt;br /&gt;
**** L'utilisateur possède la validité&lt;br /&gt;
** Retourne '''0''' dans les autres cas&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
*[[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul du compte d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+sprintf('%03s', %USER_ID)||Comptes utilisateurs||411001, 411002, etc.&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13756</id>
		<title>Modèle commercial et compte client OpenFlyers</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13756"/>
				<updated>2015-11-16T10:24:49Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Conséquences d'une migration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Définitions=&lt;br /&gt;
==Plateforme de démonstration==&lt;br /&gt;
Les plateformes de démonstration sont accessibles au public et servent de bac à sable.&lt;br /&gt;
&lt;br /&gt;
Le sous-domaine de l'URL des plateformes de démonstration est ''demo'' ou commence par ''demo-''. Il existe également des plateformes de démonstration spécifiques dont le sous-domaine est différent.&lt;br /&gt;
&lt;br /&gt;
Elles sont réinitialisées toutes les heures à la minute 44.&lt;br /&gt;
==Plateforme en production==&lt;br /&gt;
Une plateforme est considérée en production lorsque l'abonnement pour l'année en cours a été payé.&lt;br /&gt;
&lt;br /&gt;
La phase de paramétrage qui précède le &amp;quot;passage en production&amp;quot; effectif s'effectue toujours sur une &amp;quot;plateforme en production&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Plateforme en test==&lt;br /&gt;
Les plateformes en test sont de 2 natures :&lt;br /&gt;
*Les plateformes créées par un utilisateur et qui ne sont pas [[#Plateforme_en_production|en production]];&lt;br /&gt;
*[[#Plateforme_suppl.C3.A9mentaire_de_test|Les plateformes supplémentaires de test]];&lt;br /&gt;
&lt;br /&gt;
=Le modèle commercial de la SARL OpenFlyers=&lt;br /&gt;
==Fonctionnement économique==&lt;br /&gt;
OpenFlyers fonctionne sur le modèle économique d'une ASP (=Application Service Provider) ou SaaS (= Software as a Service). On parle également de &amp;quot;cloud computing&amp;quot; (informatique dans les nuages). C'est-à-dire que nous fournissons un service applicatif par le biais d'internet pour lequel nous facturons un abonnement annuel.&lt;br /&gt;
&lt;br /&gt;
Les avantages de ce système pour les clients finaux sont les suivants :&lt;br /&gt;
*la maintenance logiciel est déportée et ne nécessite plus le déplacement d'un technicien. Cela permet également de mettre en œuvre plus rapidement des correctifs à la demande ;&lt;br /&gt;
*le coût des développements est mutualisé entre les différents clients ;&lt;br /&gt;
*nous assurons nous-mêmes la pérennité des données par sauvegardes journalières sur plusieurs serveurs en plusieurs lieux et cela sur 20 jours glissants.&lt;br /&gt;
&lt;br /&gt;
De plus, OpenFlyers existe en plusieurs versions dont certaines sont disponibles en téléchargement. Vous pouvez retrouver [http://wiki.openflyers.org/index.php?title=FAQ#May_I_install_OpenFlyers_on_my_own_server.3F plus d'infos sur notre support libre].&lt;br /&gt;
&lt;br /&gt;
==Arbitrage des demandes de développements==&lt;br /&gt;
Les demandes de développements pour avoir de nouvelles fonctionnalités sont infinies. Au début de son existence OpenFlyers devait arbitrer entre les demandes des différents clients. Pour cela, l'équipe de développement OpenFlyers tenait compte de la taille d'un client ou d'un prospect pour arbitrer les différentes demandes et du potentiel impact qui pouvait en résulter sur le chiffre d'affaire au travers des nouveaux clients qui pouvaient se décider à passer à OpenFlyers du fait de l'existence de telle ou telle fonctionnalité. Ces demandes étant nombreuses, les demandes non retenues étaient nombreuses et cela pouvait conduire à &amp;quot;vexer&amp;quot; un client qui pouvait considérer que sa demande non retenue ou mise en attente était plus pertinente qu'une autre demande retenue.&lt;br /&gt;
&lt;br /&gt;
Afin de ne plus être juge et parti, OpenFlyers a remis au goût du jour le [[Wikipedia-fr:Suffrage_censitaire|vote censitaire]] au travers des heures de bonus développement. Ainsi, les conditions générales d'OpenFlyers donne la possibilité aux clients de choisir eux-mêmes les développements qui leur seront le plus profitable. Le fonctionnement est le suivant :&lt;br /&gt;
*Tout client désireux de voir développer une nouvelle fonctionnalité peut faire '''une unique demande''' de devis développement '''par an'''. Cette demande doit être effectuée par e-mail en précisant le nom de la structure aéronautique cliente.&lt;br /&gt;
*En fonction du coût en heures de développement, ce développement peut être financé par les heures de bonus développement dont bénéficie chaque client. Plusieurs clients peuvent mutualiser leurs heures de bonus de développement. Les développements peuvent être également financés en partie ou en totalité par une facturation spécifique dans le cas où le bonus développement ne permet pas de couvrir l'intégralité du coût en heures.&lt;br /&gt;
*A l'issue d'une demande de devis, un client peut demander un nouveau devis à condition qu'il ait accepté le 1er devis. Le but est de limiter le temps consacré par l'équipe OpenFlyers à effectuer des devis.&lt;br /&gt;
Nous mutualisons les développements : tous nos développements sont intégrés au sein de l'unique version en cours de développement. Ainsi, tous les clients bénéficient des demandes de chacun d'entre-eux.&lt;br /&gt;
*Les développements &amp;quot;votés&amp;quot; sont triés par ordre d'arrivé sauf pour ceux dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
Enfin, les clients peuvent, avant d'effectuer une demande de devis par e-mail, faire part de leur demande sur le [http://support-fr.openflyers.com/ forum] dans la partie '''Evolutions et Adaptations''' en vérifiant qu'elle n'existe pas déjà. C'est aussi un moyen pour le demandeur d'inviter d'autres clients à s'associer à leur demande en mutualisant leurs heures de bonus développement.&lt;br /&gt;
&lt;br /&gt;
==Bonus assistance/développement==&lt;br /&gt;
Chaque client dispose en fonction de son abonnement d'un quota d'heures de bonus qui peuvent être utilisées comme assistance ou comme développement (cf. [[#Arbitrage_des_demandes_de_d.C3.A9veloppements|Arbitrage des demandes de développements]]).&lt;br /&gt;
&lt;br /&gt;
L'assistance permet de couvrir une demande de support téléphonique ou une demande d'intervention sur la plateforme.&lt;br /&gt;
&lt;br /&gt;
Pour utiliser les heures de bonus, il faut :&lt;br /&gt;
*Faire une demande par e-mail d'intervention ou de support.&lt;br /&gt;
''Nous répondons en indiquant le temps à prévoir/déduire des heures de bonus''&lt;br /&gt;
*Confirmer sa demande par retour d'e-mail&lt;br /&gt;
&lt;br /&gt;
Les demandes sont triées par ordre d'arrivé sauf pour celles dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
A noter que les heures non utilisées dans l'année sont perdues (cf. les [https://openflyers.com/fr/entreprise/conditions-generales conditions générales de vente]).&lt;br /&gt;
&lt;br /&gt;
Il n'existe pas à ce jour d'interface permettant de suivre les heures déjà utilisées. Il est néanmoins possible d'en obtenir le suivi sur simple demande par e-mail.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
Attention, il ne faut pas confondre son compte client OpenFlyers qui permet d'accéder à sa fiche client OpenFlyers et qui permet de renouveler son abonnement OpenFlyers avec son identifiant personnel permettant d'accéder à sa plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
==Accéder à son compte client OpenFlyers==&lt;br /&gt;
Aller sur [https://client.openflyers.com l'espace client] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'identifiant permettant d'accéder à votre compte client correspond au sous-domaine de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Par exemple, si votre plateforme est référencée par l'adresse :&lt;br /&gt;
 http://mermoz.openflyers.fr&lt;br /&gt;
&lt;br /&gt;
Alors le sous-domaine est '''mermoz'''.&lt;br /&gt;
&lt;br /&gt;
C'est donc '''mermoz''' qu'il faut utiliser comme identifiant pour vous connecter au .&lt;br /&gt;
&lt;br /&gt;
Si vous n'avez pas le mot de passe, vous pouvez le réactiver avec la fonction '''Mot de passe oublié ?''' qui est sur la page d'identification.&lt;br /&gt;
&lt;br /&gt;
Une adresse e-mail vous sera demandée. Vous pourrez saisir l'adresse e-mail de la structure aéronautique ou celle du contact qui ont été saisies dans la fiche client (il s'agit des adresses e-mails sur lesquelles sont envoyées nos e-mails d'alerte de renouvellement ou d'information).&lt;br /&gt;
&lt;br /&gt;
Dans le but de ne pas être submergés par les demandes, nous facturons la ré-initialisation manuelle, par nos soins, du mot de passe ou la mise à jour des adresses e-mails présentes sur la fiche client pour les abonnement First Price (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Changer de responsable en charge d'OpenFlyers==&lt;br /&gt;
Lorsqu'il y a un changement de responsable en charge d'OpenFlyers, pour que la passation se passe dans les meilleures conditions, il faut penser à effectuer les 3 changements suivants :&lt;br /&gt;
*Attribuer un profil d'administrateur de la plateforme OpenFlyers au niveau de la plateforme (procédure pour intervenir sur la fiche utilisateur pour la [[User-management3#Modifier_un_utilisateur|version 3]] ou la [[User-management4#Acc.C3.A9der_.C3.A0_l.27interface_de_gestion_des_utilisateurs|version 4]])&lt;br /&gt;
*Mettre à jour le champ du responsable OpenFlyers au niveau de la plateforme (procédure pour la [[AdminDoc3#Responsable_OpenFlyers|version 3]] et la [[AdminDoc4#Responsable_OpenFlyers|version 4]]).&lt;br /&gt;
*Mettre à jour le nom du responsable OpenFlyers au niveau de la fiche client en effectuant la procédure suivante :&lt;br /&gt;
**[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client OpenFlyers]]&lt;br /&gt;
**Aller dans '''Fiche contact'''&lt;br /&gt;
**Mettre à jour la fiche&lt;br /&gt;
**Cliquer sur le bouton '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Dans le cas où la passation ne peut pas se faire ainsi car l'ancien responsable OpenFlyers ne peut pas effectuer ces opérations ou transmettre les couples (identifiants, mots de passe) au nouveau responsable pour qu'il effectue ces opérations, vous pouvez nous demandez, uniquement par e-mail, d'effectuer ces changements de responsable OpenFlyers, en joignant à l'e-mail :&lt;br /&gt;
*Un courrier signé du responsable de la structure (gérant, président, etc.) contenant la demande de mise à jour du responsable OpenFlyers désigné et indiquant explicitement le nom du nouveau responsable avec son adresse e-mail&lt;br /&gt;
*Une copie d'un document officiel (extrait K-BIS, procès-verbal d'assemblée générale, etc.) permettant de prouver la qualité du responsable de la structure.&lt;br /&gt;
Le courrier scanné n'est pas nécessaire dans le cas où le nouveau responsable OpenFlyers apparait sur l'extrait K-BIS.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' dans le cas d'une société, le responsable de la structure doit détenir plus de la moitié des parts dans la société. Dans le cas où il y a cogérance, alors il faut que le courrier soit signé de l'ensemble des responsables de sorte à représenter plus de la moitié des parts de la société.&lt;br /&gt;
&lt;br /&gt;
==Mettre à jour sa fiche client==&lt;br /&gt;
*[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client]]&lt;br /&gt;
*Cliquer sur le menu '''Fiche contact'''&lt;br /&gt;
*Mettre à jour le contenu des champs concernés&lt;br /&gt;
*Cliquer sur le bouton valider&lt;br /&gt;
''Conseil OpenFlyers :'' Il est fortement recommandé d'avoir 2 adresses e-mails différentes pour les champs '''E-mail client''' et '''E-mail contact'''&lt;br /&gt;
&lt;br /&gt;
==Migrer vers une nouvelle version OpenFlyers==&lt;br /&gt;
Chez OpenFlyers, nous parlons de migration vers une nouvelle version lorsqu'il s'agit de mettre à jour une plateforme d'une version X vers une version Y incluant des changements majeurs.&lt;br /&gt;
&lt;br /&gt;
Par contre, il existe les mises à jours. Les mises à jour ne changent pas le numéro de version principal (exemple : 3.2 ou 3.5 correspondent à la même version principale). OpenFlyers effectue ces mises à jour automatiquement. Leur objectif est de corriger des bugs ou de rajouter de nouvelles fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
Hormis pour les abonnements Première, qui disposent d'une plateforme avec une version gelée et indépendante d'OpenFlyers, toutes les autres plateformes OpenFlyers sont sur un moteur commun qui est mis à jour de façon transparente plusieurs fois par semaine, voir même par jour.&lt;br /&gt;
&lt;br /&gt;
Nous ne présentons ci-dessous que les migrations &amp;quot;majeurs&amp;quot; qui peuvent impliquer des opérations de nettoyage manuel post-migration.&lt;br /&gt;
&lt;br /&gt;
===Coût d'une migration===&lt;br /&gt;
Lorsque vous êtes en production sur une version X d'OpenFlyers, vous pouvez demander à migrer vers la dernière version stable proposée aux nouveaux clients ou même vers la dernière version en développement dénommée &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; (par exemple &amp;quot;version 3.0alpha&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Les migrations sont incluses dans le support des abonnement Business, Première et Corporate.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un abonnement First Price, la migration est facturée 50 € HT sauf dans le cas d'une migration vers une version alpha ou beta ou depuis vers une version alpha ou beta vers la version stable suivante. Exemple de migrations offertes en abonnement First Price :&lt;br /&gt;
*Migration depuis la version 3.0alpha vers la version 3&lt;br /&gt;
*Migration depuis la version 3.5 vers la version 4.0alpha&lt;br /&gt;
*Migration depuis la version 4.0alpha vers la version 4&lt;br /&gt;
&lt;br /&gt;
Certaines migrations peuvent induire des opérations de nettoyage à effectuer manuellement. Ces opérations sont prises en charge dans le cas des abonnements Business, Première et Corporate. Elles sont facturées dans le cas de l'abonnement First Price. La structure peut également effectuer elle-même les opérations de nettoyage dans le cas d'un abonnement First Price en suivant la [[Accueil#Proc.C3.A9dures_de_mont.C3.A9e_de_version|procédure de montée de version]] publiée par OpenFlyers. Exemple de procédure de nettoyage : [[Upgrade3|nettoyage suite à migration vers une version 3]].&lt;br /&gt;
&lt;br /&gt;
Enfin, dans le cas où la plateforme bénéficiait d'un ancien tarif, le fait de migrer implique le passage au tarif en vigueur au moment de la migration et à l'acquittement de la différence de tarif par rapport à l'ancien tarif.&lt;br /&gt;
&lt;br /&gt;
===Déroulement d'une migration===&lt;br /&gt;
#Il faut avoir pris connaissance des [[#Cons.C3.A9quences_d.27une_migration|conséquences d'une migration]] et accepter le fait qu'elle est irréversible&lt;br /&gt;
#Il faut éventuellement créer la ou les factures selon l'abonnement déjà souscrit et l'abonnement souhaité (cf. [[#Co.C3.BBt_d.27une_migration|Coût d'une migration]] en [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|se connectant sur l'espace client]].&lt;br /&gt;
#Il faut payer les factures correspondantes ainsi créées.&lt;br /&gt;
#Il faut en faire la demande par e-mail et précisant la date avant laquelle vous ne souhaitez pas qu'on effectue de migration. Il n'est pas possible de programmer une date pour une migration : cela se fait en fonction de la synchronisation des disponibilités des différents collaborateurs d'OpenFlyers qui doivent intervenir à tour de rôle.&lt;br /&gt;
#Nous créons alors les factures liées à la migration, à la différence de tarif et au forfait paramétrage selon votre abonnement et les options souscrites (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
#Vous payez.&lt;br /&gt;
#Nous procédons alors à cette migration et nous fournissons une URL de substitution pendant une semaine pour palier les problèmes de cache DNS. Lors de la migration l'interruption de service est seulement de quelques minutes. Elle est donc transparente pour la quasi totalité des utilisateurs.&lt;br /&gt;
#Selon ce qui a été convenu nous effectuons ou le client effectue [[Upgrade3|le nettoyage lié au passage à la version 3]].&lt;br /&gt;
#Si vous avez souscrit au forfait paramétrage ou qu'il est inclut dans votre abonnement, nous vous envoyons un questionnaire pour le paramétrage. Cf. [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|Forfait paramétrage]]&lt;br /&gt;
&lt;br /&gt;
===Conséquences d'une migration===&lt;br /&gt;
*Toute migration est irréversible : nous ne créons pas de script permettant de revenir vers une version antérieure. En effet, nous effectuons des migrations &amp;quot;cachées&amp;quot; plusieurs fois par semaine qui constituent des corrections de bugs ou l'ajout de nouvelles fonctionnalités. De ce fait, notre exploitation est organisée pour pouvoir palier à un défaut apparaissant à l'issue d'une migration tout comme elle est organisée pour faire face à l'apparition d'un nouveau bug lors d'une mise à jour transparente.&lt;br /&gt;
*Attention notamment à une migration vers une version &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; : en effet, une migration vers cette version implique que vous acceptiez de fonctionner sur une version qui évolue sans cesse. Outre les corrections de bugs, nous rajoutons sur la version beta régulièrement des fonctionnalités qui peuvent créer de nouvelles anomalies. Bien entendu, nous faisons le nécessaire dès que nous avons connaissance d'un problème (notamment par le [http://bts.openflyers.org BTS] pour résoudre les défauts. C'est d'ailleurs grâce aux clients volontaires pour fonctionner sur la version beta que nous pouvons faire évoluer le produit.&lt;br /&gt;
&lt;br /&gt;
==Ajouter une ressource à son abonnement OpenFlyers==&lt;br /&gt;
L'abonnement OpenFlyers est calculé en fonction du nombre de ressources. Le nombre est déterminé pour l'année civile complète.&lt;br /&gt;
&lt;br /&gt;
Si vous voulez rajouter une ressource en cours d'année, alors vous devez [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|vous connecter sur l'espace client OpenFlyers]] et créer une facture d'ajout de ressource en indiquant le nombre de ressources supplémentaires. Le tarif appliqué sera alors celui de l'année complète.&lt;br /&gt;
&lt;br /&gt;
Une fois le paiement de la facture correspondante acquitté, il sera possible d'intervenir sur la plateforme concernée pour rajouter la ressource. Il y alors 2 cas possible :&lt;br /&gt;
*C'est une ressource dont les tarifs correspondent à un type de ressource déjà présent sur la plateforme concernée. Dans ce cas, l'opération est relativement simple et nous conseillons de suivre soi-même la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]].&lt;br /&gt;
*C'est une ressource qui nécessite la création d'un nouveau type de ressource avec de nouveaux tarifs : dans ce cas, l'opération est plus complexe. Elle peut être effectuée de façon autonome en suivant la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]] et en procédant par comparaison avec les types de ressources existantes. Cependant, si vous souhaitez éviter tout risque d'erreur, nous recommandons de nous confier cette tâche en nous communiquant les éléments comme lors de la mise en place du paramétrage par nos soins à l'aide du questionnaire. Nous décomptons notre intervention des heures de bonus assistance/développement à hauteur d'une heure.&lt;br /&gt;
&lt;br /&gt;
===Créer une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#Ajouter_un_avion|Ajouter un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#Ajouter_un_a.C3.A9ronef|Ajouter un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#Ajouter_une_ressource|Ajouter une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#Ajouter_une_ressource|Ajouter une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Enlever une ressource à son abonnement OpenFlyers==&lt;br /&gt;
Si vous enlevez une ressource en cours d'année, il n'y a aucun changement d'abonnement puisque les ressources sont souscrites pour toute l'année.&lt;br /&gt;
&lt;br /&gt;
===Désactiver une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#D.C3.A9sactiver_un_avion|Désactiver un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#D.C3.A9sactiver_un_a.C3.A9ronef|Désactiver un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Remplacer une ressource par une autre dans son abonnement OpenFlyers==&lt;br /&gt;
S'il y a un remplacement de ressource, alors il n'y a pas besoin d'acquitter un nouvel abonnement pour la nouvelle ressource : il suffit de [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver l'ancienne ressource]] avant d'[[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|activer la nouvelle]].&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un remplacement temporaire, il peut être aussi simple de simplement renommer la ressource concernée (immatriculation par exemple). A noter que dans ce cas, les statistiques totaliseront l'activité des 2 ressources en 1 seule.&lt;br /&gt;
&lt;br /&gt;
Si vous ne souhaitez pas désactiver cette ressource, alors vous pouvez [[#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|créer une facture complémentaire d'abonnement pour une ressource supplémentaire]].&lt;br /&gt;
&lt;br /&gt;
==Renouveler son abonnement OpenFlyers==&lt;br /&gt;
Pour renouveler l'abonnement, il faut :&lt;br /&gt;
#[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter]] sur le compte client OpenFlyers&lt;br /&gt;
#Créer la facture en fonction du choix d'abonnement (vous trouverez plus d'informations dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire])&lt;br /&gt;
#Ensuite, payer soit :&lt;br /&gt;
#*par carte bancaire en cliquant sur le lien &amp;quot;paiement par carte bancaire&amp;quot; (le choix le plus pratique pour une prise en compte immédiate)&lt;br /&gt;
#*par transfert bancaire (dans ce cas, vous devez prendre en charge tous les frais liés à la transaction). Les coordonnées bancaires sont indiquées sur la facture.&lt;br /&gt;
#*par chèque (attention au délai d'acheminement du courrier)&lt;br /&gt;
&lt;br /&gt;
===Variation du nombre de ressources lors du renouvellement===&lt;br /&gt;
Lors du renouvellement, le nombre minimum de ressources proposées, dans l'interface de renouvellement de l'abonnement, correspond au nombre de ressources activées dans la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez augmenter le nombre de ressources pour l'année suivante, il suffit de modifier la valeur proposée par défaut.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez diminuer le nombre de ressources pour l'année suivante, il faut [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver des ressources dans la plateforme OpenFlyers]] afin que le nombre proposé par défaut diminue avant de créer la facture de renouvellement d'abonnement.&lt;br /&gt;
&lt;br /&gt;
==Plateforme supplémentaire de test==&lt;br /&gt;
Cette fonctionnalité disponible que pour les clients étant au moins sous la version 3.5 d'OpenFlyers, est utile dans le cas où vous souhaitez :&lt;br /&gt;
*effectuer des tests sur une recopie de la plateforme de démonstration.&lt;br /&gt;
*effectuer des tests sur une recopie de votre propre plateforme et ainsi modifier son paramétrage sur une version [[Wikipedia-fr:Sandbox_(sécurité_informatique)|sandbox]] sans impacter la version de production.&lt;br /&gt;
*essayer la version 4 d'OpenFlyers&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut :&lt;br /&gt;
*Se connecter sur son [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|compte client]]&lt;br /&gt;
*Aller dans le menu '''Plateforme'''&lt;br /&gt;
* Plusieurs choix sont proposés :&lt;br /&gt;
** Si vous êtes sous la version 3.5 :&lt;br /&gt;
*** '''De demo.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de la plateforme démo avec suppression du message d'accueil &amp;quot;La base de données cette plateforme de démonstration est réinitialisée toutes les heures, vers XX:45&amp;quot;.&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.of4.openflyers.fr''' : Permet de créer une plateforme d'essai sous la version 4 d'OpenFlyers en effectuant une recopie de votre plateforme existante puis en faisant une montée de version sur cette recopie&lt;br /&gt;
** Si vous êtes sous la version 3.5 ou supérieure :&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de votre plateforme existante&lt;br /&gt;
* Cliquer sur '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Si votre plateforme est référencée par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme de test se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.test.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme d'essai de la version 4 d'OpenFlyers se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.of4.openflyers.fr&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13755</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13755"/>
				<updated>2015-11-16T09:22:53Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Exemples de formules pour le calcul du compte d'export */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
Vérifie si l'utilisateur possède la validité :&lt;br /&gt;
* Retourne '''1''' lorsque :&lt;br /&gt;
** C'est une validité à formule d'expérience récente et l'utilisateur a l'expérience requise&lt;br /&gt;
** La validité n'est pas soumise à échéance et que l'utilisateur possède la validité&lt;br /&gt;
** La validité est soumise à échéance et n'est pas encore expirée&lt;br /&gt;
* Retourne '''0''' dans les autres cas&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
*[[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul du compte d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+sprintf('%03s', %USER_ID)||Comptes utilisateurs||411001, 411002, etc.&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13754</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13754"/>
				<updated>2015-11-16T09:21:25Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Variables autorisées pour le calcul du compte d'export */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
Vérifie si l'utilisateur possède la validité :&lt;br /&gt;
* Retourne '''1''' lorsque :&lt;br /&gt;
** C'est une validité à formule d'expérience récente et l'utilisateur a l'expérience requise&lt;br /&gt;
** La validité n'est pas soumise à échéance et que l'utilisateur possède la validité&lt;br /&gt;
** La validité est soumise à échéance et n'est pas encore expirée&lt;br /&gt;
* Retourne '''0''' dans les autres cas&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
*[[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul du compte d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13753</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13753"/>
				<updated>2015-11-16T09:20:40Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Exemples de patrons de comptes d'export */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
Vérifie si l'utilisateur possède la validité :&lt;br /&gt;
* Retourne '''1''' lorsque :&lt;br /&gt;
** C'est une validité à formule d'expérience récente et l'utilisateur a l'expérience requise&lt;br /&gt;
** La validité n'est pas soumise à échéance et que l'utilisateur possède la validité&lt;br /&gt;
** La validité est soumise à échéance et n'est pas encore expirée&lt;br /&gt;
* Retourne '''0''' dans les autres cas&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul du compte d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13752</id>
		<title>Formules de calcul</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Formules-de-calcul&amp;diff=13752"/>
				<updated>2015-11-16T09:19:58Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Variables autorisées pour le calcul de la date d'expiration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page à pour objet de présenter l'ensemble des fonctions et variables utilisables dans des formules de calculs d'OpenFlyers ainsi que les différents types de formules de calculs.&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Présentation=&lt;br /&gt;
&lt;br /&gt;
==Fonctions==&lt;br /&gt;
&lt;br /&gt;
===abs(X)===&lt;br /&gt;
Retourne la valeur absolue de X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(-200) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;abs(100) donne 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeTime('date', 'année', 'mois', 'jour')===&lt;br /&gt;
Retourne la date en changeant l'année, le mois et/ou le jour&lt;br /&gt;
&lt;br /&gt;
La date doit être au format '''AAAA-MM-JJ hh:mm:ss''' ou '''AAAA-MM-JJ'''&lt;br /&gt;
&lt;br /&gt;
Les valeurs possibles pour l'année, le mois ou le jour sont :&lt;br /&gt;
* 0 = L'année, le mois ou le jour reste inchangé&lt;br /&gt;
* +X = L'année, le mois ou le jour est augmenté de X&lt;br /&gt;
* -X = L'année, le mois ou le jour est diminué de X&lt;br /&gt;
* X = L'année, le mois ou le jour est placé sur X&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '0', '0' ) donne 2011-05-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-test', '0' ) donne 2011-05-15 car la valeur du mois n'est pas valide&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '-2', '0' ) donne 2011-03-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '+2', '0' ) donne 2011-07-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '0' ) donne 2011-02-15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( '2011-05-15', '0', '2', '-1' ) donne 2011-02-14&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;changeTime( %NOW_DATE, '2015', '1', '1' ) donne 2015-01-01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===formatDate('patron', 'date')===&lt;br /&gt;
&lt;br /&gt;
Formate la date selon le patron. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#Date_and_time_format|format de date et d'heure]]&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('yyyy', '2015-03-01') donne 2015&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('MM', '2015-03-01') donne 03&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate('d', '2015-03-01') donne 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getValidityExpiredDate('person id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
* Retourne la date d'expiration de la validité de la personne si c'est une validité soumise à échéance et que la date d'expiration a été renseigné. La date est au format AAAA-MM-JJ.&lt;br /&gt;
* Retourne &amp;quot;0000-00-00&amp;quot; dans les autres cas&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(%USER_ID, 1) donne 2014-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;getValidityExpiredDate(0, 20) donne 0000-00-00&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===hasValidity('user id', 'validity type id')===&lt;br /&gt;
&lt;br /&gt;
Vérifie si l'utilisateur possède la validité :&lt;br /&gt;
* Retourne '''1''' lorsque :&lt;br /&gt;
** C'est une validité à formule d'expérience récente et l'utilisateur a l'expérience requise&lt;br /&gt;
** La validité n'est pas soumise à échéance et que l'utilisateur possède la validité&lt;br /&gt;
** La validité est soumise à échéance et n'est pas encore expirée&lt;br /&gt;
* Retourne '''0''' dans les autres cas&lt;br /&gt;
&lt;br /&gt;
===max(X,Y)===&lt;br /&gt;
Retourne le maximum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===min(X,Y)===&lt;br /&gt;
Retourne le minimum entre X et Y&lt;br /&gt;
&lt;br /&gt;
===roundCeil(X,Y)===&lt;br /&gt;
Arrondi la valeur X au nombre supérieur multiple de l'unité Y le plus proche&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,100) donne 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(114,10) donne 120&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sprintf('pattern', 'string')===&lt;br /&gt;
&lt;br /&gt;
Formate la chaîne &amp;quot;string&amp;quot; avec le patron &amp;quot;pattern&amp;quot;. Pour les motifs du patron, voir [[OF_doc-en::CommonFormula#sprintf_format|format de sprintf]].&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%05s', %MEMBER_NUM) retourne 00010 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 5 caractères en ajoutant autant de zéro que possible derrière :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%-05d', %MEMBER_NUM) retourne 10000 si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple pour formater le numéro de membre pour qu'il ait 6 caractères en ajoutant autant d'espace que possible devant :&lt;br /&gt;
&amp;lt;php&amp;gt;sprintf('%6s', %MEMBER_NUM) retourne &amp;quot;    10&amp;quot; si %MEMBER_NUM vaut 10 par exemple&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===substr(string,a,b)===&lt;br /&gt;
Retourne l'extrait de chaîne de caractères &amp;quot;string&amp;quot; à partir du caractère &amp;quot;a&amp;quot;, 0 étant le 1er caractère et &amp;quot;b&amp;quot; la longueur à extraire. Lorsque b est une valeur négative, alors il détermine le nombre de caractères devant être enlevé depuis la fin de la chaîne.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;substr('FIRST_NAME', 0, 5) returns FIRST&lt;br /&gt;
substr('FIRST_NAME', 0, -2) returns FIRST_NA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type' )===&lt;br /&gt;
Retourne le total des heures de vol faite par un pilote %PILOT pour le type de vol 'flight type' Depuis la date indiquée.&lt;br /&gt;
&lt;br /&gt;
La position 0 correspond au 1er pilote, la position 1 au 2ème pilote.&lt;br /&gt;
&lt;br /&gt;
Si le type de vol n'est pas spécifié, le total est déterminé pour tous les types de vols.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;sumFlightTime(%PILOT, 2008, 01, 01, 00, 00, 0, 64 )&amp;lt;/pre&amp;gt;&lt;br /&gt;
Retourne en [[#D.C3.A9finition_Unit.C3.A9_sexacentimal|Sexacentimal]] le total des heures de vol faites sur le type de vol 64 en tant que pilote en place gauche depuis le 2008-01-01 00:00:00.&lt;br /&gt;
&lt;br /&gt;
===sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===sumPreviousFlightTime('pilot id', 'position', 'day', 'endingDate', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')===&lt;br /&gt;
&lt;br /&gt;
===strtolower(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en minuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;camelback&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===strtoupper(string)===&lt;br /&gt;
Retourne la chaine &amp;quot;string&amp;quot; en majuscule.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;strtolower('CamelBack') retourne &amp;quot;CAMELBACK&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
===%ACCOUNT_TYPE===&lt;br /&gt;
Type de compte&lt;br /&gt;
&lt;br /&gt;
===%AUTHENTICATION_LOGIN===&lt;br /&gt;
Identifiant utilisateur&lt;br /&gt;
&lt;br /&gt;
===%AUTO_INCREMENT===&lt;br /&gt;
Valeur auto-incrémentale&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_ARRIVAL===&lt;br /&gt;
Compteur arrivé saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%COUNTER_DEPARTURE===&lt;br /&gt;
Compteur départ saisi dans le formulaire&lt;br /&gt;
&lt;br /&gt;
===%DURATION===&lt;br /&gt;
Durée du vol&lt;br /&gt;
&lt;br /&gt;
===%FIRSTNAME===&lt;br /&gt;
Prénom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%LASTNAME===&lt;br /&gt;
Nom de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
===%MEMBER_NUM===&lt;br /&gt;
Numéro de membre&lt;br /&gt;
&lt;br /&gt;
===%NOW_DATE===&lt;br /&gt;
Date courante au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%RESOURCE_NAME===&lt;br /&gt;
Nom de la ressource&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_ARRIVAL&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de fin saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;s&amp;gt;%TIME_DEPARTURE&amp;lt;/s&amp;gt;===&lt;br /&gt;
&amp;lt;s&amp;gt;Heure de début saisie dans le formulaire&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===%START_DATE===&lt;br /&gt;
&lt;br /&gt;
Date de début du vol ou date d'achat de produit au format '''AAAA-MM-JJ hh:mm:ss'''&lt;br /&gt;
&lt;br /&gt;
Par exemple : 2015-03-31 14:20:03&lt;br /&gt;
&lt;br /&gt;
===%USER_ID===&lt;br /&gt;
&lt;br /&gt;
Id de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
=Compte d'export=&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du compte d'export==&lt;br /&gt;
&lt;br /&gt;
*[[#sprintf.28.27pattern.27.2C_.27string.27.29|sprintf]]&lt;br /&gt;
*[[#substr.28string.2Ca.2Cb.29|substr]]&lt;br /&gt;
*[[#strtolower.28string.29|strtolower]]&lt;br /&gt;
*[[#strtoupper.28string.29|strtoupper]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du compte d'export==&lt;br /&gt;
*[[#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
*[[#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
*[[#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
*[[#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
*[[#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de patrons de comptes d'export==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable centre&amp;quot;&lt;br /&gt;
!Formule de calcul!!Usage!!Exemples de génération&lt;br /&gt;
|-&lt;br /&gt;
|411+%ACCOUNT_TYPE||Comptes ressources et utilisateurs||4110002, 4110005&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTHENTICATION_LOGIN||Comptes utilisateurs||411pdupont '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes utilisateurs'''&lt;br /&gt;
|-&lt;br /&gt;
|411+%AUTO_INCREMENT||Comptes ressources et utilisateurs||41100001, 41100002, ...., 4110000x&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME||Comptes utilisateurs||411dupont, 411dupond&lt;br /&gt;
|-&lt;br /&gt;
|411+%LASTNAME+substr(%FIRSTNAME,0,1)||Comptes utilisateurs||411dupontp, 411dupontf&lt;br /&gt;
|-&lt;br /&gt;
|411+%MEMBER_NUM||Comptes utilisateurs||411XXXXX, l'intitulé XXXXXX est le champ Numéro de membre qui est inscrit sur la fiche personnelle de vos adhérents. Exemple : 411001. A vous de vérifier l'unicité de cette valeurs&lt;br /&gt;
|-&lt;br /&gt;
|411+substr(%AUTHENTICATION_LOGIN,0,3)||Comptes utilisateurs||411pdu 411 suivi de l'identifiant limité à 3 caractères. Cela permet d'être compatible avec les logiciels de comptabilités paramétrés pour n'accepter que 6 caractères. Dans ce cas, il est nécessaire de modifier les comptes d'exports en doublon.&lt;br /&gt;
|-&lt;br /&gt;
|7061+sprintf('%02s', %RESOURCE_ID)||Comptes ressources||706101, 706102, etc.  '''c'est le modèle recommandé par OpenFlyers et proposé par défaut pour les comptes ressources'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Date d'expiration=&lt;br /&gt;
==Fonctions autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
* [[#formatDate.28.27patron.27.2C_.27date.27.29|formatDate]]&lt;br /&gt;
* [[#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate]]&lt;br /&gt;
* [[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
* [[#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de la date d'expiration==&lt;br /&gt;
&lt;br /&gt;
===Date fixe===&lt;br /&gt;
&amp;lt;pre&amp;gt;2012-12-31&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Date dans un an ou dans un an après la date d'expiration d'une validité déjà détenue===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple une carte de réduction) valable 1 an.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité concerné :&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-MM-dd', changeTime( ( hasValidity(%USER_ID, XX) ? getValidityExpiredDate(%USER_ID, 3XX3) : %NOW_DATE ), '+1', '0', '0' ) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Fin de l'année courante===&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', %NOW_DATE )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===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===&lt;br /&gt;
Cette formule permet de vendre une validité (par exemple cotisation) dont la prise est valable jusqu'au 31 décembre de l'année en cours ou de l'année suivante si elle est souscrite à partir du 1er octobre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;formatDate( 'yyyy-12-31', (formatDate('MM', %NOW_DATE)&amp;lt;10) ? %NOW_DATE : changeTime(%NOW_DATE, '+1', 0, 0) )&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expérience récente=&lt;br /&gt;
==Fonctions autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
*[[#hasValidity.28.27user_id.27.2C_.27validity_type_id.27.29|hasValidity]]&lt;br /&gt;
*[[#changeTime.28.27date.27.2C_.27ann.C3.A9e.27.2C_.27mois.27.2C_.27jour.27.29|changeTime]]&lt;br /&gt;
*[[#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour]]&lt;br /&gt;
*[[#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime]]&lt;br /&gt;
*[[#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber]]&lt;br /&gt;
*[[#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
* [[#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul de l'expérience récente==&lt;br /&gt;
&lt;br /&gt;
===Expérience récente en heures ou la détention d'une validité spécifique===&lt;br /&gt;
L'exemple suivant vérifie qu'un utilisateur a une expérience de 30 heures dans les 12 derniers mois ou qu'il possède une validité X lui permettant de s'affranchir du quota d'heures.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type de validité spécifique :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;( (sumFlightHour(%PILOT, 0, 365)+sumFlightHour(%PILOT, 1, 365) &amp;gt; 17999) OR hasValidity(%PILOT, XX) )&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Type d'activité X dans les 12 derniers mois===&lt;br /&gt;
L'exemple suivant vérifie si un utilisateur a effectué une activité d'un type X donné dans les 365 derniers jours.&lt;br /&gt;
&lt;br /&gt;
Remplacer dans l'exemple suivant XX par l'identifiant du type d'activité donné :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;php&amp;gt;sumFlightTime(%PILOT, formatDate('yyyy', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('M', changeTime( %NOW_DATE, '-1', '0', '0' )), formatDate('d', changeTime( %NOW_DATE, '-1', '0', '0' )), 00, 00, 0, XX ) &amp;gt; 0&amp;lt;/php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tarification=&lt;br /&gt;
Outre les définitions toujours valides pour le calcul du temps d'activité, voici d'autres définitions :&lt;br /&gt;
''A rédiger''&lt;br /&gt;
&lt;br /&gt;
Voir [http://doc-en.openflyers.com/index.php?title=AdminDoc2.1 Formules en anglais]&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul de la tarification==&lt;br /&gt;
&lt;br /&gt;
* [[#.25START_DATE|%START_DATE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules pour le calcul de la tarification==&lt;br /&gt;
===Motoplaneur : tarification à l'heure de vol ET à l'utilisation du moteur===&lt;br /&gt;
Pour cela, on suppose que les compteurs sont utilisés et qu'ils prennent en compte le temps d'utilisation du moteur :&lt;br /&gt;
 %DURATION * $FLIGHT_HOUR_PRICE + (%COUNTER_ARRIVAL - %COUNTER_DEPARTURE) * $ENGINE_HOUR_PRICE&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le compte pilote a un solde positif===&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$S le solde positif qui doit être atteint pour bénéficier de la réduction&amp;lt;br&amp;gt;&lt;br /&gt;
$R le montant horaire de la réduction obtenue dans ce cas&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil((((getBalance(%PILOT)&amp;gt;$S ? ($C2-$R) : $C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
===Avion : réduction lorsque le vol se fait après une certaine heure===&lt;br /&gt;
&lt;br /&gt;
$C2 concerne le tarif horaire de l'avion&amp;lt;br&amp;gt;&lt;br /&gt;
$C2R concerne le tarif horaire réduit de l'avion après une certaine heure&amp;lt;br&amp;gt;&lt;br /&gt;
659 correspond à 06:59 en temps UTC&amp;lt;br&amp;gt;&lt;br /&gt;
Dans ce cas la formule considère que dès 700, la réduction s'applique.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 roundCeil(((((formatDate('hmm',%START_DATE)&amp;gt;659)?$C2R:$C2)*%DURATION/600)-0.5),1)&lt;br /&gt;
&lt;br /&gt;
=Temps d'activité=&lt;br /&gt;
Pour calculer le temps d'une activité (exemple : vol), les règles diffèrent selon les structures.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
==Définition Unité sexacentimal==&lt;br /&gt;
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''.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*1 heure = 600 sexacentièmes&lt;br /&gt;
*1 minute = 10 sexacentièmes&lt;br /&gt;
*5 minutes = 50 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
*1 centième de minute = 6 sexacentièmes&lt;br /&gt;
*10 centième de minute (=1 dixième de minute) = 60 sexacentièmes&lt;br /&gt;
&lt;br /&gt;
Exemples de formules :&lt;br /&gt;
*pour arrondir à 5 minutes : roundCeil(X,50)&lt;br /&gt;
*pour arrondir à 10 centièmes : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Fonctions autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#abs.28X.29|abs]]&lt;br /&gt;
*[[#max.28X.2CY.29|max]]&lt;br /&gt;
*[[#min.28X.2CY.29|min]]&lt;br /&gt;
*[[#roundCeil.28X.2CY.29|roundCeil]]&lt;br /&gt;
&lt;br /&gt;
==Variables autorisées pour le calcul du temps d'activité==&lt;br /&gt;
*[[#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[#.25DURATION|%DURATION]]&lt;br /&gt;
*[[#.25TIME_ARRIVAL|%TIME_ARRIVAL]]&lt;br /&gt;
*[[#.25TIME_DEPARTURE|%TIME_DEPARTURE]]&lt;br /&gt;
&lt;br /&gt;
==Exemples de formules de calcul du temps d'activité==&lt;br /&gt;
===Durée saisie===&lt;br /&gt;
&amp;lt;pre&amp;gt;%DURATION&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs saisis===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Durée saisie arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%DURATION, 50)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 centièmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 30&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs plus 5 minutes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;%COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie au 5 minutes les plus proches plus 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50) + 50&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Différence des compteurs arrondie à 10 centièmes===&lt;br /&gt;
&amp;lt;pre&amp;gt;roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée du vol et la différence des compteurs arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;br /&gt;
&lt;br /&gt;
===Le plus grand entre la durée saisie, arrondie à 5 minutes, et la différence des compteurs, arrondie à 5 minutes===&lt;br /&gt;
&amp;lt;pre&amp;gt;max(roundCeil(%DURATION,50),roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette formule calcule :&lt;br /&gt;
*la différence des compteurs et l'arrondi à 5 minutes&lt;br /&gt;
*la valeur de la durée de vol saisie par le pilote et l'arrondi à 5 minutes&lt;br /&gt;
Puis elle prend le plus grand des deux&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13740</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13740"/>
				<updated>2015-11-02T21:06:55Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Subventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*[[#Enregistrement_des_subventions_destin.C3.A9es_.C3.A0_la_structure|Des subventions destinées directement à la structure]]&lt;br /&gt;
*[[#Ventilation_des_subventions_destin.C3.A9es_aux_utilisateurs|Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées]]&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Lorsque la subvention est encaissée par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et uniquement l'encaissement de la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions destinées aux utilisateurs==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13739</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13739"/>
				<updated>2015-11-02T21:05:50Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Ventilation des subventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*Des subventions destinées directement à la structure&lt;br /&gt;
*Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Lorsque la subvention est encaissée par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et uniquement l'encaissement de la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions destinées aux utilisateurs==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13738</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13738"/>
				<updated>2015-11-02T21:04:53Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Enregistrement des subventions destinées à la structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*Des subventions destinées directement à la structure&lt;br /&gt;
*Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Lorsque la subvention est encaissée par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et uniquement l'encaissement de la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13737</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13737"/>
				<updated>2015-11-02T21:04:20Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Subventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
Une structure peut recevoir 2 types de subventions :&lt;br /&gt;
*Des subventions destinées directement à la structure&lt;br /&gt;
*Des subventions destinées à des utilisateurs de la structure et qui doivent donc être ventilées&lt;br /&gt;
&lt;br /&gt;
==Enregistrement des subventions destinées à la structure==&lt;br /&gt;
Il existe plusieurs situations :&lt;br /&gt;
*Subventions d'exploitation accordées sans condition&lt;br /&gt;
*Subventions d'exploitation accordées avec condition résolutoire&lt;br /&gt;
*Subventions d'exploitation accordées avec condition suspensives&lt;br /&gt;
*Subventions d’investissement&lt;br /&gt;
&lt;br /&gt;
Nous ne documentons ici que le cas de la subvention d'exploitation accordée sans condition. Pour ces autres cas, nous recommandons d'effectuer une recherche sur internet pour trouver les éléments décrivant l'enregistrement comptable correspondant.&lt;br /&gt;
&lt;br /&gt;
*Enregistrement de la subvention à percevoir :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Lorsque la subvention est encaissée par la structure :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation à recevoir (4411)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si on souhaite simplifier la saisie, on peut enregistrer directement et seulement la subvention :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Compte!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Banque (512)||1000 €||&lt;br /&gt;
|-&lt;br /&gt;
|Subventions d’exploitation (74)||||1000 €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Ventilation des subventions==&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
===Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs===&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13736</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13736"/>
				<updated>2015-11-02T20:53:57Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Ventilation des subventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13735</id>
		<title>Conseils spécifiques pour la comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Conseils-sp%C3%A9cifiques-pour-la-comptabilit%C3%A9&amp;diff=13735"/>
				<updated>2015-11-02T20:53:46Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Refacturation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
L'objet de cette page est de présenter nos conseils sur la [[Account|comptabilité]]&lt;br /&gt;
&lt;br /&gt;
=Baptêmes dans un aéro-club=&lt;br /&gt;
Dans un aéro-club, les baptêmes ne doivent pas dépasser pas 8% de l'activité (cf. [http://www.legifrance.gouv.fr/affichCodeArticle.do;?cidTexte=LEGITEXT000006074234&amp;amp;idArticle=LEGIARTI000006844019&amp;amp;dateTexte=20140707&amp;amp;categorieLien=id#LEGIARTI000006844019 Article D510-7 du code de l'aviation civile]). Aussi, nous déconseillons de mettre en place les tarifs des baptêmes qui engendrent plus d'erreurs de saisies qu'autre chose. Par contre, dans le cas d'une société commerciale et notamment si la saisie des vols est entre les mains d'un nombre réduit de personnes, alors la tarification des baptêmes peut être mise en place. Voici donc comment nous conseillons de gérer les baptêmes dans OpenFlyers pour un aéro-club.&lt;br /&gt;
&lt;br /&gt;
==Paramétrage préconisé pour gérer les baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Configuration_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Configuration_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Utilisation pratique du paramétrage préconisé des baptêmes de l'air d'un aéro-club==&lt;br /&gt;
*[[Use_Accounting3#Gestion_des_bapt.C3.AAmes|Version 3]]&lt;br /&gt;
*[[Use_Accounting4#Gestion_des_bapt.C3.AAmes|Version 4]]&lt;br /&gt;
&lt;br /&gt;
==Bons baptêmes payés et non effectués==&lt;br /&gt;
Quelque soit le statut commercial de la structure aéronautique (association ou société), voici comment nous conseillons de gérer les bons baptêmes :&lt;br /&gt;
*Enregistrer dans OpenFlyers uniquement l'encaissement du bon sans saisir de vente (et donc ne pas créer de produit pour cela)&lt;br /&gt;
*Lorsque le baptême est effectué, saisir le vol : cela génère la facture selon le paramétrage&lt;br /&gt;
Lors de la clôture de l'exercice, il suffit de contrôler le compte &amp;quot;client baptême&amp;quot; et de le comparer avec les dates de remise des bons baptêmes. C'est alors que doit être décidé si un bon ne sera jamais utilisé. Auquel cas, une écriture spécifique est à prévoir comptablement.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du quota d'heures baptêmes==&lt;br /&gt;
Pour vérifier que l'activité baptême de l'aéro-club ne dépasse pas les 8% des heures de vols, il faut utiliser les rapports pour contrôler le pourcentage d'heures de vols baptêmes par rapport au total des heures de vols.&lt;br /&gt;
&lt;br /&gt;
=Cautions=&lt;br /&gt;
Le principe de la caution est de demander, lors de l'inscription en général, un montant de X € à l'utilisateur qui est mis en réserve et remboursé lorsqu'il quitte la structure.&lt;br /&gt;
&lt;br /&gt;
Cette somme doit être encaissée normalement sur son compte utilisateur.&lt;br /&gt;
&lt;br /&gt;
Par contre, elle doit également générer une &amp;quot;facture&amp;quot; qui va débiter son compte utilisateur du montant de la caution et créditer un [[Account#Comptes_d.27emprunts_et_de_dettes_assimil.C3.A9es|compte d'emprunts de dettes assimilées]] pour &amp;quot;stocker&amp;quot; la caution. Ce compte de caution est en général en 165000.&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place la vente d'un produit &amp;quot;Caution&amp;quot; qui génère automatiquement l'écriture entre le compte utilisateur et le compte de caution.&lt;br /&gt;
&lt;br /&gt;
=Cotisations fédérales des adhérents dans une association=&lt;br /&gt;
La gestion des cotisations fédérales des adhérents dans OpenFlyers dépend de plusieurs facteurs.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents directement auprès des fédérations concernées et qu'il n'y a pas de mouvement financier au travers de l'association, alors il n'y a pas à mettre en place comptablement de gestion. Par contre, il peut être nécessaire de gérer les types de validités (cf. procédure pour [[Validity-management3|OpenFlyers version 3]], et [[Validity-management4|OpenFlyers version 4]]) correspondantes dans OpenFlyers notamment lorsque les cotisations fédérales inclues des assurances pour la pratique de l'activité. Dans ce cas là, il faut également voir avec l'équipe OpenFlyers s'il n'existe pas un système automatique de mise à jour dans OpenFlyers depuis le système de gestion des fédérations concernées.&lt;br /&gt;
*Si les cotisations fédérales sont souscrites par les adhérents auprès de l'association et que par conséquent l'association leur facture comptablement ces cotisations, alors il faut mettre en place dans OpenFlyers la vente de produits validités (cf. procédure pour [[Product_sale_manager3#Configuration_d.27un_produit_validit.C3.A9| OpenFlyers version 3]], et [[Product_sale_manager4#Configuration_d.27un_produit_validit.C3.A9|OpenFlyers version 4]]) correspondante.&lt;br /&gt;
*:Dans ce cas là, il y a également la question de la gestion des &amp;quot;factures fournisseurs&amp;quot; des fédérations. 2 cas possibles :&lt;br /&gt;
*#Si OpenFlyers n'est utilisé que pour gérer la &amp;quot;facturation client&amp;quot;, c'est à dire le chiffre d'affaire, alors la saisie des factures fédérales doit se faire dans le logiciel de gestion comptable.&lt;br /&gt;
*#Si OpenFlyers est utilisé pour gérer l'intégralité de la comptabilité courante de la structure, alors il faudra saisir dans OpenFlyers les factures des fédérations en tant que facture fournisseur (cf. procédure pour [[Purchase-management3#Saisie_d.27une_facture_fournisseur|OpenFlyers version 3]], et [[Purchase-management4#Saisie_d.27une_facture_fournisseur|OpenFlyers version 4]]). Comptablement les choses sont hermétiques entre :&lt;br /&gt;
*#*d'un côté, la vente d'une cotisation d'une fédération à un adhérent qui va impacter son [[Account#Comptes_clients|compte client]] et un [[Account#Comptes_de_produits|compte produit]].&lt;br /&gt;
*#*de l'autre côté, l'achat de la même cotisation auprès de la fédération pour cet adhérent qui va impacter le [[Account#Comptes_fournisseurs|compte fournisseur]] de la fédération et un [[Account#Comptes_de_charges|compte de charge]].&lt;br /&gt;
&lt;br /&gt;
=Cotisations/abonnements année N+1=&lt;br /&gt;
Certaines cotisations ou abonnements peuvent être facturées sur l'année précédente de leur date d'effet. Comptablement, ces factures clients doivent apparaitre sur l'exercice où elles ont été établies. Cependant, il est souvent nécessaire de séparer leur produit des cotisations ou abonnements de l'année N afin de pouvoir les sortir du chiffre d'affaire de l'année N.&lt;br /&gt;
&lt;br /&gt;
Voici comment gérer cela dans OpenFlyers :&lt;br /&gt;
*Nous supposons qu'il existe déjà un compte produit ''Cotisation'' dont le compte d'export est par exemple ''706100''.&lt;br /&gt;
*Il faut créer un 2ème compte produit intitulé ''Cotisation N+1'' dont le compte d'export sera par exemple ''706110''.&lt;br /&gt;
*Dans '''Ventes &amp;gt; Tarification des produits''', il faut créer une nouvelle ligne de tarification qui va transférer le crédit au profit du compte produit &amp;quot;Cotisation&amp;quot; vers le comptes produit &amp;quot;Cotisation N+1&amp;quot;. De plus, ce transfert ne devra s'applique que lorsqu'on est dans la période de renouvellement anticipé. Voici un exemple de règle de tarification lorsque la cotisation peut être pris de façon anticipée à partir du mois d'octobre :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Champ!!Ligne Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom'''||Cotisation N+1&lt;br /&gt;
|-&lt;br /&gt;
|'''Quantité/Taux'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Prix unitaire hors-taxe / TVA'''||&lt;br /&gt;
|-&lt;br /&gt;
|'''Formule'''||(formatDate('MM',%NOW_DATE)&amp;gt;9)?@tarifGeneral:0&lt;br /&gt;
|-&lt;br /&gt;
|'''Nom de variable associé à la formule'''||tarifGeneral&lt;br /&gt;
|-&lt;br /&gt;
|'''Produit'''||''Cocher uniquement les produits concernés. Normalement, il s'agit de la même liste de produit que pour la règle &amp;quot;parente&amp;quot; Cotisation.&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à débiter'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte à débiter'''||Cotisation&lt;br /&gt;
|-&lt;br /&gt;
|'''Type de compte à créditer'''||Compte produit&lt;br /&gt;
|-&lt;br /&gt;
|'''Compte produit à créditer'''||Cotisation N+1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Si la structure applique une remise sur cotisation sur certains critères, comme par exemple l'âge, il faut que la règle appliquant la remise s'applique avant la règle ci-dessus de ventilation. De plus, il faut que la règle de remise stocke son calcul dans une variable associée à la formule (cf. procédure pour la [[CustomerPricing3#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 3]] et la [[CustomerPricing4#Fonctionnement_des_variables_associ.C3.A9es_aux_formules_de_tarification|version 4]]) comme par exemple @remise pour que la remise soit prise en compte pour la ventilation N+1. Voici un exemple de construction de ces règles en cascade :&lt;br /&gt;
[[Fichier:Tarification cotisation N+1.png]]&lt;br /&gt;
&lt;br /&gt;
*En fin d'année, avant la clôture de la comptabilité, il faudra effectuer une [[Accounting_entries#.C3.89critures_de_transfert_des_produits_et_charges_constat.C3.A9es_d.27avance|opération comptable pour transférer le solde du compte produit N+1 dans un compte de ''produit constaté d’avance'']]&lt;br /&gt;
*Puis, après l'ouverture de la comptabilité, il faudra [[Accounting_entries#.C3.89critures_de_r.C3.A9affectation_des_produits.2Fcharges_constat.C3.A9es_d.27avances|transférer le même montant du compte ''produit constaté d’avance'' vers le compte produit de l'année N]].&lt;br /&gt;
&lt;br /&gt;
=Facturation automatique à des organismes avec ou sans quotas=&lt;br /&gt;
Certains utilisateurs finaux peuvent appartenir à des organismes (Entreprises, Comités d'entreprises, établissements publics etc.) qui prennent en charge soit une partie soit la totalité du coût d'une activité avec ou sans des limitations (quotas en heures d'activité ou en montant).&lt;br /&gt;
&lt;br /&gt;
Il est possible de mettre en place sur une plateforme OpenFlyers un paramétrage comptable spécifique qui déclenchera la facturation automatiquement auprès de l'organisme devant être réellement facturé. Cela présente comme avantages :&lt;br /&gt;
*De ne pas avoir à passer systématiquement et manuellement des écritures de transfert de facturation entre comptes clients.&lt;br /&gt;
*D'avoir directement sur le compte client de l'organisme concerné l'ensemble des débits à sa charge et ainsi de pouvoir déterminer le montant du paiement global qu'il doit effectuer.&lt;br /&gt;
&lt;br /&gt;
La mise en place du paramétrage comptable repose sur 2 éléments :&lt;br /&gt;
*un suivi (le cas échéant) des quotas d'heures d'activités/montants au travers de la mise en place d'une comptabilité en heures/euros séparée de la comptabilité générale. Ce mécanisme est identique dans son principe à celui mis en place pour la [[#Packs_d.27heures_d.27activit.C3.A9s|gestion des packs d'heures]]. Simplement, le &amp;quot;rechargement&amp;quot; du compte &amp;quot;quota&amp;quot; de l'utilisateur concerné ne se fait pas lors de la vente d'un pack mais lors du renouvellement d'une cotisation.&lt;br /&gt;
*une cascade d'écritures comptables permettant de débiter l'organisme en lieu et place de l'utilisateur&lt;br /&gt;
&lt;br /&gt;
Les utilisateurs dépendant d'un organisme X doivent être identifiés dans OpenFlyers grâce à un profil spécifique et '''non sélectionnable par l'utilisateur'' (cf. le droit correspondant pour la [[Profile-management3#G.C3.A9n.C3.A9ralit.C3.A9s|version 3]] et la [[Profile-management4#G.C3.A9n.C3.A9ralit.C3.A9s|version 4]] d'OpenFlyers).&lt;br /&gt;
&lt;br /&gt;
A l'usage, les choses se déroulent concrètement dans l'ordre suivant :&lt;br /&gt;
#L'utilisateur saisit son activité dans OpenFlyers =&amp;gt; automatiquement la ventilation des écritures se fait. Si l'utilisateur dispose d'un quota positif d'heures/d'argent, voir même d'un quota illimité, alors c'est le compte de son organisme de rattachement qui est débité au lieu de son compte. Il est également possible de &amp;quot;mixer&amp;quot;. C'est à dire que si l'organisme de rattachement ne prend en charge qu'une partie du coût, OpenFlyers calculera automatiquement qui paie quoi et débitera chaque compte en conséquence.&lt;br /&gt;
#Le gestionnaire de la structure envoie la liasse de factures ou un relevé d'activités général mensuellement/trimestriellement à l'organisme considéré. Ces éléments sont disponibles dans OpenFlyers.&lt;br /&gt;
#Le gestionnaire de la structure reçoit le paiement de l'organisme qu'il saisit directement dans OpenFlyers comme un encaissement normal qui va créditer le compte client de l'organisme considéré.&lt;br /&gt;
&lt;br /&gt;
Ainsi, le gestionnaire n'a que 2 actions à faire :&lt;br /&gt;
#Générer le relevé d'activités ou la liasse de factures et l'envoyer par e-mail&lt;br /&gt;
#Saisir l'encaissement de l'organisme payeur&lt;br /&gt;
&lt;br /&gt;
=Packs d'heures d'activités=&lt;br /&gt;
OpenFlyers propose un système de comptabilités multiples (cf. le paramétrage général des comptabilités [[Configuration_Accounting3#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 3]] ou [[Configuration_Accounting4#Param.C3.A9trage_g.C3.A9n.C3.A9ral_des_comptabilit.C3.A9s|version 4]]). Ce système permet de mettre en place plusieurs comptabilités à la fois. Ainsi, on peut avoir une comptabilité en euros et une comptabilités en heures. La comptabilité en heures, permet de gérer des crédits d'heures d'activités qui sont mis en ventes sous la forme de packs d'heures d'activités.&lt;br /&gt;
&lt;br /&gt;
==Fonctionnement d'un exemple de configuration de vente de packs d'heures==&lt;br /&gt;
L'exemple est basé sur une structure qui propose 2 packs d'heures d'activités :&lt;br /&gt;
*un pack de 5 heures à 450 €&lt;br /&gt;
*un pack de 10 heures à 850 €&lt;br /&gt;
Le tarif d'une heure d'activité hors pack est à 100 €.&lt;br /&gt;
&lt;br /&gt;
===Achat d'un pack d'heures par un utilisateur===&lt;br /&gt;
un utilisateur achète un pack de 10 heures 850 euros :&lt;br /&gt;
*Son compte utilisateur en euro est débité de 850 euros : le solde de son compte est débiteur de 850 €.&lt;br /&gt;
*Son compte en heures est crédité de 10 heures.&lt;br /&gt;
Ensuite l'utilisateur paie son pack 850 € ce qui a pour effet de ramener le solde de son compte en euros à 0 €.&lt;br /&gt;
&lt;br /&gt;
===Saisie d'une activité pour un utilisateur bénéficiant d'heures créditées===&lt;br /&gt;
Lors de la saisie d'une activité de 1 heure, le compte en heures de l'utilisateur est débité de 1 heure. Le compte en euros de l'utilisateur n'est pas impacté : les heures ont été payées en amont lors de l'achat du pack.&lt;br /&gt;
&lt;br /&gt;
===Remboursement d'heures===&lt;br /&gt;
A titre commercial, une structure peut accepter de rembourser un utilisateur n'ayant pas épuisé ses heures. Dans ce cas, plusieurs méthodes commerciales sont possibles :&lt;br /&gt;
*Considérer le crédit d'heures restant au tarif de l'heure du pack (par exemple 85 €/h pour un pack de 10 heures à 850 €) : cela revient à faire un prorata du prix du pack&lt;br /&gt;
*Considérer que dans ce cas, les heures utilisées sont refacturables à leur tarif hors pack. Dans ce cas, il faut consulter l'histoire du compte pour trouver le dernier pack acheté (pack de 5h ou de 10h), en déduire le nombre d'heures utilisées sur ce pack en faisant la différence avec le crédit d'heures restant, calculer le coût des heures utilisées hors pack et rembourser de la différence du prix du pack.&lt;br /&gt;
&lt;br /&gt;
==Initialisation du solde d'heures lors de la mise en place des packs==&lt;br /&gt;
Lors de la mise en place du système des packs sur une structure aéronautique déjà en activités, des packs peuvent avoir déjà été vendues et des heures effectuées. Dans ce cas, il faut juste saisir un flux entre le compte d'heures de l'utilisateur et le compte de bilan représentant l'encours des heures. Ce flux va créditer le compte d'heures de l'utilisateur de la valeur du nombre d'heures auxquelles il a encore droit.&lt;br /&gt;
&lt;br /&gt;
Exemple de saisie d'un flux dans la version 3 d'OpenFlyers :&lt;br /&gt;
&lt;br /&gt;
[[Image:Exemple-saisie-flux-pour-initialisation-solde-heures.png]]&lt;br /&gt;
&lt;br /&gt;
=Refacturation=&lt;br /&gt;
Il peut arriver qu'une structure soit facturée à la place de l'utilisateur final. Dans ce cas, la structure peut décider de refacturer à la personne concernée. C'est souvent le cas, par exemple, pour les factures de taxes d'atterrissages qui sont envoyée à la structure en tant que propriétaire de l'aéronef et qu'ensuite la structure refacture l'utilisateur concerné.&lt;br /&gt;
&lt;br /&gt;
Comptablement, il faut saisir les 2 écritures séparément :&lt;br /&gt;
*Saisir la facture fournisseur de la taxe d'atterrissage soit dans OpenFlyers (cf. procédure pour la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 3]] et la [[Purchase-management4#Saisie_d.27une_facture_fournisseur|version 4]]), soit dans le logiciel comptable utilisé pour les charges.&lt;br /&gt;
*Saisir l'achat d'une taxe d'atterrissages pour l'utilisateur concerné (cf. procédure pour la [[Product_sale_manager3#Achat_de_produit_non_stock.C3.A9|version 3]] et la [[Product_sale_manager4#Achat_de_produit_non_stock.C3.A9|version 4]]).&lt;br /&gt;
&lt;br /&gt;
=Subventions=&lt;br /&gt;
&lt;br /&gt;
=Ventilation des factures essences=&lt;br /&gt;
Afin de déterminer le coût de revient d'une ressource, il est nécessaire de pouvoir ventiler les différents postes de charge par ressource. C'est notamment le cas pour le poste &amp;quot;essence&amp;quot; qui dans le cas de l'aéronautique représente une part importante des charges.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une structure aéronautique, en général, l'approvisionnement se fait principalement auprès d'une seul fournisseur d'essence localisé sur son aérodrome ou sur un aérodrome voisin.&lt;br /&gt;
&lt;br /&gt;
Il existe alors 2 types de situations :&lt;br /&gt;
#la structure dispose de &amp;quot;clés&amp;quot; ou de badges par aéronef et ainsi le fournisseur d'essence est capable de générer des factures avec le détail des montants facturés par aéronef&lt;br /&gt;
#le fournisseur d'essence ne fournit qu'une facture globale &lt;br /&gt;
&lt;br /&gt;
Dans la 1ère situation, il est judicieux de saisir les factures fournisseurs en éclatant la facture globale en autant de sous-factures qu'il y a de ressources concernées. Cela permet d'avoir directement une ventilation des charges par ressource. C'est également le cas qu'on retrouve dans le cas où les factures sont individualisées à chaque avitaillement : on est capable d'associer telle facture à telle ressource.&lt;br /&gt;
&lt;br /&gt;
Dans la 2ème situation, il n'est pas possible à priori de ventiler la facture d'essence par ressource. Dans ce cas là, on recommande de regrouper toutes les factures d'essence dans un même compte de charge. Ensuite, grâce à la consultation du total des volumes d'essences saisis dans les rapports, on est capable d'en déduire la part du coût global qui revient à chaque ressource. On recommande de ne pas faire de post-ventilation comptable mais de gérer cela directement dans une feuille de calcul qui est normalement utilisée pour déterminer le coût de revient des ressources.&lt;br /&gt;
&lt;br /&gt;
=Ventilation des subventions=&lt;br /&gt;
Il peut arriver que la structure reçoive de l'argent d'un organisme et que cet argent doive ensuite être ventilé entre plusieurs clients. C'est le cas notamment pour les bourses attribuées par les fédérations qui doivent être redistribuées sur les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
Les opérations comptables à effectuer pour cela sont les suivantes :&lt;br /&gt;
*Saisir un flux correspondant à un [[Accounting_entries#Transfert_de_charge|transfert de charges]] (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
*Saisir un autre flux débitant le &amp;quot;compte de Transfert de charge (791)&amp;quot;  et créditant les comptes des utilisateurs concernés (cf. procédure pour la [[Use_Accounting3#Saisie_d.27un_flux|version 3]] et la [[Use_Accounting4#Saisie_d.27un_flux|version 4]]).&lt;br /&gt;
Si on sait au moment de l'encaissement du paiement quels sont les utilisateurs concernés, alors on peut saisir directement un flux qui débite le compte de trésorerie et crédite les comptes des utilisateurs concernés.&lt;br /&gt;
&lt;br /&gt;
==Anticiper l'attribution des subventions pour ne pas bloquer les utilisateurs==&lt;br /&gt;
Dans le cas où il existe des restrictions sur les droits pour les utilisateurs n'ayant pas le solde suffisant sur leur compte, il peut être pénalisant pour les utilisateurs attendant des subventions de se retrouver restreints dans leur droit à cause d'un solde insuffisant alors que la subvention est certaine.&lt;br /&gt;
&lt;br /&gt;
Afin, de ne pas restreindre les pilotes concernés, il faut :&lt;br /&gt;
*Créer un [[Account#Comptes_de_tiers|compte de tiers]], par exemple &amp;quot;Subvention à recevoir (441)&amp;quot;.&lt;br /&gt;
*Saisir un flux créditant le compte de l'utilisateur et débitant le compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
Ainsi :&lt;br /&gt;
*Le compte du pilote est crédité de la future subvention et il n'est donc pas restreint du fait d'un solde insuffisant dans l'attente d'une subvention.&lt;br /&gt;
*Il est possible de contrôler les sommes distribuées et non perçues au travers du compte &amp;quot;Subvention à recevoir&amp;quot;.&lt;br /&gt;
*Lorsque la subvention sera réellement perçue, il suffira de saisir un flux de transfert entre ce compte et le compte recevant la subvention afin de le ramener à 0.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Comptabilit%C3%A9&amp;diff=13734</id>
		<title>Comptabilité</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Comptabilit%C3%A9&amp;diff=13734"/>
				<updated>2015-11-02T09:59:22Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Comptes de tiers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation=&lt;br /&gt;
Cette page présente la comptabilité en général. Il existe d'autres pages en relation avec ce sujet :&lt;br /&gt;
*la [[Configuration_Accounting3|configuration]] de la comptabilité dans OpenFlyers version 3&lt;br /&gt;
*la [[Configuration_Accounting4|configuration]] de la comptabilité dans OpenFlyers version 4&lt;br /&gt;
*l'[[Use_Accounting3|utilisation]] du module de comptabilité d'OpenFlyers version 3&lt;br /&gt;
*l'[[Use_Accounting4|utilisation]] du module de comptabilité d'OpenFlyers version 4&lt;br /&gt;
*les [[Accounting_Specic_Advise|conseils]] sur la comptabilité&lt;br /&gt;
&lt;br /&gt;
=Définitions=&lt;br /&gt;
&lt;br /&gt;
==Comptabilité==&lt;br /&gt;
[http://fr.wikipedia.org/wiki/Comptabilit%C3%A9 définition de la comptabilité d'après wikipedia]&lt;br /&gt;
&lt;br /&gt;
==Principe de la partie double==&lt;br /&gt;
[http://fr.wikipedia.org/wiki/Comptabilit%C3%A9_en_partie_double définition de la partie double d'après wikipedia]&lt;br /&gt;
&lt;br /&gt;
==[[Accounting_entries#R.C3.A8gles_sur_les_.C3.A9critures|Règles concernant les écritures]]==&lt;br /&gt;
&lt;br /&gt;
=Que fait OpenFlyers ?=&lt;br /&gt;
A partir de la version 3, OpenFlyers gère la saisie des écritures courantes de la comptabilité :&lt;br /&gt;
*facturation client&lt;br /&gt;
*facturation fournisseur&lt;br /&gt;
*encaissements&lt;br /&gt;
*paiements&lt;br /&gt;
*mouvements de compte à compte&lt;br /&gt;
&lt;br /&gt;
=La Comptabilité=&lt;br /&gt;
==[[Wikipedia-fr:Plan_comptable_g%C3%A9n%C3%A9ral_%28France%29#Cadre_comptable|Plan comptable à la française]]==&lt;br /&gt;
===[[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|Comptes de bilan]]===&lt;br /&gt;
Les comptes de bilan regroupent l'ensemble des comptes qui ne sont pas réinitialisés lors d'un changement d'exercice comptable, c'est à dire que leur solde être conservé d'un exercice à l'autre pour assurer notamment la traçabilité des dettes envers [[#Comptes_de_tiers|les tiers]].&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#11._Report_.C3.A0_nouveau|Compte de report à nouveau]]====&lt;br /&gt;
Le compte report à nouveau est utilisé pour l'initialisation des comptes bilan ainsi que pour contenir déterminer le bénéfice ou le déficit d'un exercice comptable.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#16._Emprunts_et_dettes_assimil.C3.A9es|Comptes d'emprunts et de dettes assimilées]]====&lt;br /&gt;
Les comptes d'emprunts et de dettes assimilées sont des comptes du bilan : leur solde n'est pas réinitialisé d'un exercice comptable à l'autre.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_4_:_Comptes_de_tiers|Comptes de tiers]]====&lt;br /&gt;
Les comptes de tiers sont des comptes du bilan : leur solde n'est pas réinitialisé d'un exercice comptable à l'autre.&lt;br /&gt;
&lt;br /&gt;
Dans le plan comptable à la française, les comptes de tiers ont une racine en 4 ou 5.&lt;br /&gt;
&lt;br /&gt;
Ils regroupent :&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#40._Fournisseurs_et_comptes_rattach.C3.A9s|Les comptes fournisseurs, racine en 401]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#41._Clients_et_comptes_rattach.C3.A9s|Les comptes clients, racine en 411]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#44._.C3.89tat_et_autres_collectivit.C3.A9s_publiques|Les comptes représentant les collectivités pour les subventions, racine en 441]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#48._Comptes_de_r.C3.A9gularisation|Les comptes de régularisation]]&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_5_:_Comptes_financiers|Comptes financiers]]====&lt;br /&gt;
Les comptes financiers regroupent :&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#51._Banques.2C_.C3.A9tablissements_financiers_et_assimil.C3.A9s|Les comptes bancaires, racine en 512]]&lt;br /&gt;
*[[Wikipedia-fr:Plan_comptable_général_(France)#53._CAISSE|Les comptes de caisses, racine en 531]]&lt;br /&gt;
&lt;br /&gt;
===[[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|Comptes d'exploitation]]===&lt;br /&gt;
Ou comptes de résultat. A l'opposé des comptes de bilan, les comptes d'exploitation sont remis à zéro à chaque changement d'exercice.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_6_:_Comptes_de_charges|Comptes de charges]]====&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_6_:_Comptes_de_charges|en France: comptes 6xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de charges permettent de regrouper les coûts supportés par la structure sur un exercice donné. Il reçoivent les contreparties des factures fournisseurs.&lt;br /&gt;
&lt;br /&gt;
Les principaux comptes de charges ont leur racine en [[Wikipedia-fr:Plan_comptable_général_(France)#60._Achats_.28sauf_603.29|60]] ou [[Wikipedia-fr:Plan_comptable_général_(France)#61._Services_ext.C3.A9rieurs|61]]. Le 61 permet de désigner les &amp;quot;Services extérieurs&amp;quot;. C'est donc sur cette racine que trouveront leur place les charges &amp;quot;immatérielles&amp;quot; comme les assurances.&lt;br /&gt;
&lt;br /&gt;
====[[Wikipedia-fr:Plan_comptable_général_(France)#Classe_7_:_comptes_de_produits|Comptes de produits]]====&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_7_:_comptes_de_produits|en France: comptes 7xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de produits permettent de regrouper les ventes effectuées par la structure sur un exercice donné. Il reçoivent les contreparties des factures clients/utilisateurs.&lt;br /&gt;
&lt;br /&gt;
De façon simplifiée, le total des soldes des comptes de produits représente le [[Wikipedia-fr:Chiffre_d'affaires|chiffre d'affaire]] de la structure.&lt;br /&gt;
&lt;br /&gt;
==Présentation des comptes dans OpenFlyers==&lt;br /&gt;
===Comptes utilisateurs===&lt;br /&gt;
Au sens comptable, il s'agit en général de [[#Comptes_clients|comptes clients]] mais parfois également de [[Account#Comptes_fournisseurs|comptes fournisseurs]]. L'appellation &amp;quot;compte utilisateur&amp;quot; est propre à OpenFlyers et permet de coupler un compte comptable avec un utilisateur de la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont débités des factures (activités, cotisations, etc.)&lt;br /&gt;
*Les comptes utilisateurs sont crédités par les paiements des utilisateurs (carte bancaire, chèques, liquide, etc.) que l'on nomme dans OpenFlyers les '''encaissements'''.&lt;br /&gt;
&lt;br /&gt;
Quand un compte utilisateur est crédité par un encaissement, l'autre entrée (qui est un débit) doit affecter un compte de trésorerie (selon la ventilation paramétrée dans le gestionnaire des encaissements)&lt;br /&gt;
&lt;br /&gt;
===Comptes ressources===&lt;br /&gt;
Les comptes ressources sont une notion propre à OpenFlyers. Ils servent à coupler des [[#Comptes_d.27exploitation|comptes d'exploitation]] liés aux ressources.&lt;br /&gt;
&lt;br /&gt;
===Comptes clients===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#41._Clients_et_comptes_rattach.C3.A9s|en France: comptes 411xxx]])&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont débités des factures clients (vente de produit)&lt;br /&gt;
*La contrepartie va au crédit sur un compte de produit.&lt;br /&gt;
*Les encaissements des clients sont crédités sur le compte client et débité sur le compte de trésorerie&lt;br /&gt;
&lt;br /&gt;
===Comptes fournisseurs===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#40._Fournisseurs_et_comptes_rattach.C3.A9s|en France: comptes 401xxx]])&lt;br /&gt;
&lt;br /&gt;
*Les comptes sont crédités des factures fournisseurs (loyers, eau, électricité, etc.)&lt;br /&gt;
*La contrepartie va au débit sur un compte de charge.&lt;br /&gt;
*Les paiements des fournisseurs sont débités sur le compte fournisseur et crédité sur le compte de trésorerie&lt;br /&gt;
&lt;br /&gt;
===Comptes de trésorerie===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Classe_5_:_Comptes_financiers|en France: comptes 5xxxxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de trésorerie sont essentiellement des comptes bancaires.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' les mouvements sur ces comptes se font dans le sens opposé du relevé de compte bancaire. Ainsi, une opération au débit sur un relevé de compte bancaire sera enregistré en comptabilité au crédit et une opération au crédit sur un relevé de compte bancaire sera enregistré au débit.&lt;br /&gt;
&lt;br /&gt;
===Comptes de TVA===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#44._.C3.89tat_et_autres_collectivit.C3.A9s_publiques|en France comptes 445xxx]])&lt;br /&gt;
&lt;br /&gt;
Les comptes de TVA sont utilisés pour enregistrer les contreparties liées à la TVA des factures fournisseurs et des factures clients.&lt;br /&gt;
&lt;br /&gt;
Ils ne sont pas usités dans les associations qui ne facturent pas la TVA à leurs clients et qui n'ont donc pas besoin de gérer la contrepartie liée à la TVA des factures fournisseurs.&lt;br /&gt;
&lt;br /&gt;
===[[#Comptes_de_charges|Comptes de charges]]===&lt;br /&gt;
&lt;br /&gt;
===[[#Comptes_de_produits|Comptes de produits]]===&lt;br /&gt;
Normalement, dans OpenFlyers, la majorité des factures clients doivent être affectées à des [[#Comptes_ressources|comptes ressources-produits]] étant donné que les structures utilisant OpenFlyers génèrent l'essentiel de leur chiffre d'affaire par le biais de la mise à disposition de ressources.&lt;br /&gt;
&lt;br /&gt;
===Comptes bilan===&lt;br /&gt;
([[Wikipedia-fr:Plan_comptable_général_(France)#Cadre_comptable|en France : comptes 1, 2, 3, 4, 5]])&lt;br /&gt;
&lt;br /&gt;
Dans OpenFlyers, on ne met dans les comptes de bilan que les comptes qui ne sont ni des comptes de trésorerie, ni des comptes clients, ni des comptes fournisseurs&lt;br /&gt;
&lt;br /&gt;
====[[#Compte_de_report_.C3.A0_nouveau|Report à nouveau]]====&lt;br /&gt;
*Compte 110000&lt;br /&gt;
&lt;br /&gt;
==[[Accounting_entries|Les écritures comptables]]==&lt;br /&gt;
==Comptabilités multiples==&lt;br /&gt;
Dans le cas ou des entreprises ou associations mettent en commun des ressources qu'ils gèrent conjointement sur une même plateforme OpenFlyers, il est possible de mettre en place des comptabilités distinctes pour chaque entité.&lt;br /&gt;
&lt;br /&gt;
===Facturations automatiques entre entités comptables distinctes===&lt;br /&gt;
Dans le cas où chaque utilisateur dispose d'un compte unique dans une seule des entités, alors l'utilisateur est facturé dans la comptabilité de son entité d'appartenance quelque soit la ressource utilisée.&lt;br /&gt;
&lt;br /&gt;
Si la ressource utilisée appartient à une autre entité que celle à laquelle l'utilisateur est client alors il est possible de mettre en place des facturations automatiques entre les entités mises en jeu et cela dans chacune des comptabilités.&lt;br /&gt;
&lt;br /&gt;
Exemple avec 2 entités A et B, un utilisateur U client de l'entité A et une ressource R appartenant à l'entité B. On considère que l'utilisateur U utilise la ressource R.&lt;br /&gt;
*L'utilisateur U sera débité sur son compte client de l'entité A et la contrepartie ira sur un compte produit de cette entité :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité A'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client Utilisateur U||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte produit Ressource R||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Mais comme la ressource R appartient à l'entité B, alors l'entité B va enregistrer automatiquement une écriture de débit sur le compte client A et la contrepartie ira sur un compte produit de l'entité B :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité B'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte client Entité A||X €||&lt;br /&gt;
|-&lt;br /&gt;
|Compte produit Ressource R||||X €&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Parallèlement, l'entité A, enregistre également le fait qu'elle est facturée par le fournisseur entité B :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!'''comptabilité A'''!!Débit!!Crédit&lt;br /&gt;
|-&lt;br /&gt;
|Compte charge Ressource R||||X €&lt;br /&gt;
|-&lt;br /&gt;
|Compte fournisseur Entité B||X €||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Principes comptables généraux=&lt;br /&gt;
==Règles de saisies de la comptabilité courante==&lt;br /&gt;
Ces règles s'incrivent dans le cadre du [[Getting_started_with_OpenFlyers#Workflow_des_actions_hebdomadaires.2Fmensuelles|workflow proposé par OpenFlyers]].&lt;br /&gt;
#La facturation client et les encaissements clients sont normalement saisies au jour le jour soit par les utilisateurs soit par des gestionnaires&lt;br /&gt;
#Il faut saisir les factures fournisseurs au vu des factures&lt;br /&gt;
#Nous recommandons de saisir les écritures bancaires au vu du relevé de banque et en utilisant la date d'enregistrement indiquée sur le relevé de banque. Cette forme de saisie vaut alors pointage.&lt;br /&gt;
Le principe est normalement de saisir les paiements et les encaissements à la vue des chèques, bordereaux, etc. puis ensuite de vérifier que l'on tombe juste avec la banque. Mais il est plus simple de saisir les écritures bancaires au vu du relevé : cela permet d'être tout de suite juste avec la banque. Cette façon de procéder ne peut s'appliquer que si on limite le paiement par chèque qui ne permet pas de maitriser la date d'encaissement par le fournisseur. Il faut ainsi privilégier les paiements par carte bancaire ou par virement qui permettent une prise en compte immédiate ou quasiment immédiate de la part de la banque et évitent ainsi les problèmes de &amp;quot;chèque dans la nature&amp;quot; car non encaissés par le fournisseur.&lt;br /&gt;
En procédant ainsi, les vérifications s'en trouvent simplifiées.&lt;br /&gt;
&lt;br /&gt;
==Traçabilité des écritures==&lt;br /&gt;
Afin d'assurer la traçabilité des écritures comptables, il n'est pas possible d'effacer une écriture comptable validée. Cela permet de garantir la confiance entre les parties prenantes (utilisateurs, gestionnaires et OpenFlyers). Par contre, il est toujours possible d'annuler l'effet d'une écriture en saisissant un flux opposé. (cf. procédure pour [[Use_Accounting3#Annuler_l.27effet_d.27une_.C3.A9criture_comptable|OpenFlyers version 3]] et [[Use_Accounting4#Annuler_l.27effet_d.27une_.C3.A9criture_comptable|OpenFlyers version 4]]).&lt;br /&gt;
&lt;br /&gt;
==Vérifications sur la comptabilité courante==&lt;br /&gt;
En respectant les [[#R.C3.A8gles_de_saisies_de_la_comptabilit.C3.A9_courante|recommandations de saisie d'OpenFlyers de la comptabilité courante]], les éléments à vérifiés sont les suivants :&lt;br /&gt;
#On vérifie que l'on tombe juste sur le solde du compte bancaire : le solde du compte bancaire sur la plateforme OpenFlyers doit correspondre au solde présent sur le relevé de banque à la même date. Si une erreur apparait, on procède par dychotomie pour identifier à partir de quelle date, les soldes sont différents et ainsi retrouver l'écriture en défaut. C'est seulement une fois que ce travail est effectué, que l'on peut passer à l'étape suivante.&lt;br /&gt;
#On vérifie que les comptes fournisseurs sont tous à 0 et lorsqu'ils ne sont pas à 0, on doit être capable de dire pourquoi (facture non payée par exemple). En effet, on peut être juste au niveau de la banque sans que pour autant le compte fournisseur débité soit le bon.&lt;br /&gt;
#Il reste alors à contrôler le chiffre d'affaire. Pour cette vérification le plus simple est de vérifier que le chiffre d'affaire correspond au volume de l'activité multiplié par le prix unitaire. Dans certains cas, cette vérification n'est pas aisée (changements de tarifs en cours d'année par exemple). Il faut donc scinder le volume en autant de composantes qu'il peut y avoir de tarifs.&lt;br /&gt;
&lt;br /&gt;
=Quelques conseils généraux=&lt;br /&gt;
==[[Getting_started_with_OpenFlyers#Passer_en_production|Passer en production sur la saisie des vols dans OpenFlyers]]==&lt;br /&gt;
&lt;br /&gt;
==[[Getting_started_with_OpenFlyers#Workflow|Mettre en place un workflow]]==&lt;br /&gt;
&lt;br /&gt;
==Gestion comptable de cas particuliers==&lt;br /&gt;
===Débiter les vols mécaniques===&lt;br /&gt;
Les vols mécaniques sont une charge pour une structure. La structure peut être tentée de ne pas faire apparaitre cette charge dans sa comptabilité car il n'y a personne à facturer. Cependant OpenFlyers recommande de facturer les vols mécaniques au même tarif que autres vols pour plusieurs raisons :&lt;br /&gt;
*Cela permet de suivre d'une manière comptable le coût de la mécanique (et notamment sa partie &amp;quot;vols&amp;quot;) et éventuellement de détecter des dérives. C'est aussi utile lorsque l'on veut calculer le prix de revient d'une ressource.&lt;br /&gt;
*Cela permet de contrôler plus facilement le chiffre d'affaire de la structure puisque le produit reste proportionnel aux heures de vol.&lt;br /&gt;
*L'impact sur le résultat est nul puisque la charge est égale au produit. De ce fait cela n'a pas de conséquence fiscale pour les structures soumises à l'impôt sur les sociétés ou à la TVA.&lt;br /&gt;
*Seul le rapport du résultat par rapport au chiffre d'affaire est très légèrement modifié.&lt;br /&gt;
Par contre la facturation d'un vol mécanique s'effectue en débitant un compte de charge au lieu d'un compte client. Ainsi, c'est neutre pour les utilisateurs.&lt;br /&gt;
&lt;br /&gt;
===TVA sur les ventes à soi-même===&lt;br /&gt;
Lorsque vous faites de la vente à vous-même vous devez calculer la TVA correspondante. Cette opération est neutre car vous déduisez aussi la TVA déductible pour le même montant.&lt;br /&gt;
&lt;br /&gt;
===Saisie des salaires===&lt;br /&gt;
Nous recommandons de dissocier les salaires en 2 parties :&lt;br /&gt;
*Le salaire net versé au salarié qui fait l'objet d'un mouvement qui crédite le compte &amp;quot;fournisseur&amp;quot; du salarié (401MARTIN pour M. MARTIN) et débite le compte de charge ''Rémunérations brutes'' (641100)&lt;br /&gt;
*Les taxes sur les salaires regroupées en un seul mouvement qui crédite le compte &amp;quot;fournisseur&amp;quot; URSSAF (431000) et débite le compte de charges ''Cotisations à l'URSSAF'' (645100)&lt;br /&gt;
Nous recommandons de saisir ces écritures récurrentes en tant que facture fournisseur (cf. procédure pour la [[Use_Accounting3#Saisie_des_factures_fournisseurs|version 3]] et la [[Use_Accounting4#Saisie_des_factures_fournisseurs|version 4]]). Cela permet d'enregistrer la ventilation des mouvements et ensuite de simplifier cette saisie.&lt;br /&gt;
&lt;br /&gt;
==Contrôle du chiffre d'affaire==&lt;br /&gt;
Le contrôle du chiffre d'affaire est une opération que devrait faire les personnes en charge de la validation des comptes.&lt;br /&gt;
&lt;br /&gt;
Contrôler le chiffre d'affaire c'est vérifier que ce que l'on a fabriqué à bien était facturé (ou stocké).&lt;br /&gt;
&lt;br /&gt;
Dans le cas des vols, il n'y a pas de stock possible. Donc le contrôle du chiffre d'affaire est très simple : on prend le nombre d'heures de vol faite par un avion et on multiplie par son coÃ»t horaire. On vérifie alors que le CA lié à cet avion correspond avec l'ensemble facturé qui apparait dans les comptes produits.&lt;br /&gt;
&lt;br /&gt;
Exemple :&lt;br /&gt;
*L'avion UE a fait 300 heures de vols en 2008.&lt;br /&gt;
*Le prix de l'heure de vol est de 100 €.&lt;br /&gt;
*Le chiffre d'affaire lié à l'avion est alors de 300*100 = 30 000 €.&lt;br /&gt;
*Le compte produit de l'avion doit donc faire apparaître exactement un solde de 30 000 €.&lt;br /&gt;
&lt;br /&gt;
Il faut tenir compte des changements tarifaires intervenus durant l'année. Le trésorier devrait donc fournir un état des heures de vol sur chacune des périodes tarifaires de l'année. D'où l'utilité d'effectuer les changements de tarifaire au 1er d'un mois : les états sont plus faciles à créer.&lt;br /&gt;
&lt;br /&gt;
Il faut également tenir compte des différents tarifs (double commande, baptêmes de l'air, etc.)&lt;br /&gt;
&lt;br /&gt;
Ainsi, le trésorier ou le secrétaire devrait communiquer un tableau pour chaque avion (ou chaque type avion) avec une ligne par type de vol (impliquant un tarif différent) et une colonne par date d'application du tarif.&lt;br /&gt;
&lt;br /&gt;
Un autre tableau devrait comporter la ventilation des heures en fonction des mêmes éléments.&lt;br /&gt;
&lt;br /&gt;
Il suffit alors de multiplier les cellules du premier tableau avec celles du second tableau puis d'additionner le tout : on obtient le chiffre d'affaire de l'avion (que l'on doit comparer avec le chiffre d'affaire effectivement facturé).&lt;br /&gt;
&lt;br /&gt;
==Messages d'alertes==&lt;br /&gt;
Nous recommandons comme bonne pratique d'attirer l'attention des utilisateurs autorisés à valider les vols ou les écritures comptables que '''tout message d'alerte apparaissant dans l'espace d'administration doit conduire à stopper la validation des écritures''' dans l'attente de la résolution du problème par l'administrateur.&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13723</id>
		<title>Modèle commercial et compte client OpenFlyers</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13723"/>
				<updated>2015-10-20T16:15:01Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Plateforme en test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Définitions=&lt;br /&gt;
==Plateforme de démonstration==&lt;br /&gt;
Les plateformes de démonstration sont accessibles au public et servent de bac à sable.&lt;br /&gt;
&lt;br /&gt;
Le sous-domaine de l'URL des plateformes de démonstration est ''demo'' ou commence par ''demo-''. Il existe également des plateformes de démonstration spécifiques dont le sous-domaine est différent.&lt;br /&gt;
&lt;br /&gt;
Elles sont réinitialisées toutes les heures à la minute 44.&lt;br /&gt;
==Plateforme en production==&lt;br /&gt;
Une plateforme est considérée en production lorsque l'abonnement pour l'année en cours a été payé.&lt;br /&gt;
&lt;br /&gt;
La phase de paramétrage qui précède le &amp;quot;passage en production&amp;quot; effectif s'effectue toujours sur une &amp;quot;plateforme en production&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Plateforme en test==&lt;br /&gt;
Les plateformes en test sont de 2 natures :&lt;br /&gt;
*Les plateformes créées par un utilisateur et qui ne sont pas [[#Plateforme_en_production|en production]];&lt;br /&gt;
*[[#Plateforme_suppl.C3.A9mentaire_de_test|Les plateformes supplémentaires de test]];&lt;br /&gt;
&lt;br /&gt;
=Le modèle commercial de la SARL OpenFlyers=&lt;br /&gt;
==Fonctionnement économique==&lt;br /&gt;
OpenFlyers fonctionne sur le modèle économique d'une ASP (=Application Service Provider) ou SaaS (= Software as a Service). On parle également de &amp;quot;cloud computing&amp;quot; (informatique dans les nuages). C'est-à-dire que nous fournissons un service applicatif par le biais d'internet pour lequel nous facturons un abonnement annuel.&lt;br /&gt;
&lt;br /&gt;
Les avantages de ce système pour les clients finaux sont les suivants :&lt;br /&gt;
*la maintenance logiciel est déportée et ne nécessite plus le déplacement d'un technicien. Cela permet également de mettre en œuvre plus rapidement des correctifs à la demande ;&lt;br /&gt;
*le coût des développements est mutualisé entre les différents clients ;&lt;br /&gt;
*nous assurons nous-mêmes la pérennité des données par sauvegardes journalières sur plusieurs serveurs en plusieurs lieux et cela sur 20 jours glissants.&lt;br /&gt;
&lt;br /&gt;
De plus, OpenFlyers existe en plusieurs versions dont certaines sont disponibles en téléchargement. Vous pouvez retrouver [http://wiki.openflyers.org/index.php?title=FAQ#May_I_install_OpenFlyers_on_my_own_server.3F plus d'infos sur notre support libre].&lt;br /&gt;
&lt;br /&gt;
==Arbitrage des demandes de développements==&lt;br /&gt;
Les demandes de développements pour avoir de nouvelles fonctionnalités sont infinies. Au début de son existence OpenFlyers devait arbitrer entre les demandes des différents clients. Pour cela, l'équipe de développement OpenFlyers tenait compte de la taille d'un client ou d'un prospect pour arbitrer les différentes demandes et du potentiel impact qui pouvait en résulter sur le chiffre d'affaire au travers des nouveaux clients qui pouvaient se décider à passer à OpenFlyers du fait de l'existence de telle ou telle fonctionnalité. Ces demandes étant nombreuses, les demandes non retenues étaient nombreuses et cela pouvait conduire à &amp;quot;vexer&amp;quot; un client qui pouvait considérer que sa demande non retenue ou mise en attente était plus pertinente qu'une autre demande retenue.&lt;br /&gt;
&lt;br /&gt;
Afin de ne plus être juge et parti, OpenFlyers a remis au goût du jour le [[Wikipedia-fr:Suffrage_censitaire|vote censitaire]] au travers des heures de bonus développement. Ainsi, les conditions générales d'OpenFlyers donne la possibilité aux clients de choisir eux-mêmes les développements qui leur seront le plus profitable. Le fonctionnement est le suivant :&lt;br /&gt;
*Tout client désireux de voir développer une nouvelle fonctionnalité peut faire '''une unique demande''' de devis développement '''par an'''. Cette demande doit être effectuée par e-mail en précisant le nom de la structure aéronautique cliente.&lt;br /&gt;
*En fonction du coût en heures de développement, ce développement peut être financé par les heures de bonus développement dont bénéficie chaque client. Plusieurs clients peuvent mutualiser leurs heures de bonus de développement. Les développements peuvent être également financés en partie ou en totalité par une facturation spécifique dans le cas où le bonus développement ne permet pas de couvrir l'intégralité du coût en heures.&lt;br /&gt;
*A l'issue d'une demande de devis, un client peut demander un nouveau devis à condition qu'il ait accepté le 1er devis. Le but est de limiter le temps consacré par l'équipe OpenFlyers à effectuer des devis.&lt;br /&gt;
Nous mutualisons les développements : tous nos développements sont intégrés au sein de l'unique version en cours de développement. Ainsi, tous les clients bénéficient des demandes de chacun d'entre-eux.&lt;br /&gt;
*Les développements &amp;quot;votés&amp;quot; sont triés par ordre d'arrivé sauf pour ceux dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
Enfin, les clients peuvent, avant d'effectuer une demande de devis par e-mail, faire part de leur demande sur le [http://support-fr.openflyers.com/ forum] dans la partie '''Evolutions et Adaptations''' en vérifiant qu'elle n'existe pas déjà. C'est aussi un moyen pour le demandeur d'inviter d'autres clients à s'associer à leur demande en mutualisant leurs heures de bonus développement.&lt;br /&gt;
&lt;br /&gt;
==Bonus assistance/développement==&lt;br /&gt;
Chaque client dispose en fonction de son abonnement d'un quota d'heures de bonus qui peuvent être utilisées comme assistance ou comme développement (cf. [[#Arbitrage_des_demandes_de_d.C3.A9veloppements|Arbitrage des demandes de développements]]).&lt;br /&gt;
&lt;br /&gt;
L'assistance permet de couvrir une demande de support téléphonique ou une demande d'intervention sur la plateforme.&lt;br /&gt;
&lt;br /&gt;
Pour utiliser les heures de bonus, il faut :&lt;br /&gt;
*Faire une demande par e-mail d'intervention ou de support.&lt;br /&gt;
''Nous répondons en indiquant le temps à prévoir/déduire des heures de bonus''&lt;br /&gt;
*Confirmer sa demande par retour d'e-mail&lt;br /&gt;
&lt;br /&gt;
Les demandes sont triées par ordre d'arrivé sauf pour celles dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
A noter que les heures non utilisées dans l'année sont perdues (cf. les [https://openflyers.com/fr/entreprise/conditions-generales conditions générales de vente]).&lt;br /&gt;
&lt;br /&gt;
Il n'existe pas à ce jour d'interface permettant de suivre les heures déjà utilisées. Il est néanmoins possible d'en obtenir le suivi sur simple demande par e-mail.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
Attention, il ne faut pas confondre son compte client OpenFlyers qui permet d'accéder à sa fiche client OpenFlyers et qui permet de renouveler son abonnement OpenFlyers avec son identifiant personnel permettant d'accéder à sa plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
==Accéder à son compte client OpenFlyers==&lt;br /&gt;
Aller sur [https://client.openflyers.com l'espace client] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'identifiant permettant d'accéder à votre compte client correspond au sous-domaine de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Par exemple, si votre plateforme est référencée par l'adresse :&lt;br /&gt;
 http://mermoz.openflyers.fr&lt;br /&gt;
&lt;br /&gt;
Alors le sous-domaine est '''mermoz'''.&lt;br /&gt;
&lt;br /&gt;
C'est donc '''mermoz''' qu'il faut utiliser comme identifiant pour vous connecter au .&lt;br /&gt;
&lt;br /&gt;
Si vous n'avez pas le mot de passe, vous pouvez le réactiver avec la fonction '''Mot de passe oublié ?''' qui est sur la page d'identification.&lt;br /&gt;
&lt;br /&gt;
Une adresse e-mail vous sera demandée. Vous pourrez saisir l'adresse e-mail de la structure aéronautique ou celle du contact qui ont été saisies dans la fiche client (il s'agit des adresses e-mails sur lesquelles sont envoyées nos e-mails d'alerte de renouvellement ou d'information).&lt;br /&gt;
&lt;br /&gt;
Dans le but de ne pas être submergés par les demandes, nous facturons la ré-initialisation manuelle, par nos soins, du mot de passe ou la mise à jour des adresses e-mails présentes sur la fiche client pour les abonnement First Price (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Changer de responsable en charge d'OpenFlyers==&lt;br /&gt;
Lorsqu'il y a un changement de responsable en charge d'OpenFlyers, pour que la passation se passe dans les meilleures conditions, il faut penser à effectuer les 3 changements suivants :&lt;br /&gt;
*Attribuer un profil d'administrateur de la plateforme OpenFlyers au niveau de la plateforme (procédure pour intervenir sur la fiche utilisateur pour la [[User-management3#Modifier_un_utilisateur|version 3]] ou la [[User-management4#Acc.C3.A9der_.C3.A0_l.27interface_de_gestion_des_utilisateurs|version 4]])&lt;br /&gt;
*Mettre à jour le champ du responsable OpenFlyers au niveau de la plateforme (procédure pour la [[AdminDoc3#Responsable_OpenFlyers|version 3]] et la [[AdminDoc4#Responsable_OpenFlyers|version 4]]).&lt;br /&gt;
*Mettre à jour le nom du responsable OpenFlyers au niveau de la fiche client en effectuant la procédure suivante :&lt;br /&gt;
**[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client OpenFlyers]]&lt;br /&gt;
**Aller dans '''Fiche contact'''&lt;br /&gt;
**Mettre à jour la fiche&lt;br /&gt;
**Cliquer sur le bouton '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Dans le cas où la passation ne peut pas se faire ainsi car l'ancien responsable OpenFlyers ne peut pas effectuer ces opérations ou transmettre les couples (identifiants, mots de passe) au nouveau responsable pour qu'il effectue ces opérations, vous pouvez nous demandez, uniquement par e-mail, d'effectuer ces changements de responsable OpenFlyers, en joignant à l'e-mail :&lt;br /&gt;
*Un courrier signé du responsable de la structure (gérant, président, etc.) contenant la demande de mise à jour du responsable OpenFlyers désigné et indiquant explicitement le nom du nouveau responsable avec son adresse e-mail&lt;br /&gt;
*Une copie d'un document officiel (extrait K-BIS, procès-verbal d'assemblée générale, etc.) permettant de prouver la qualité du responsable de la structure.&lt;br /&gt;
Le courrier scanné n'est pas nécessaire dans le cas où le nouveau responsable OpenFlyers apparait sur l'extrait K-BIS.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' dans le cas d'une société, le responsable de la structure doit détenir plus de la moitié des parts dans la société. Dans le cas où il y a cogérance, alors il faut que le courrier soit signé de l'ensemble des responsables de sorte à représenter plus de la moitié des parts de la société.&lt;br /&gt;
&lt;br /&gt;
==Mettre à jour sa fiche client==&lt;br /&gt;
*[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client]]&lt;br /&gt;
*Cliquer sur le menu '''Fiche contact'''&lt;br /&gt;
*Mettre à jour le contenu des champs concernés&lt;br /&gt;
*Cliquer sur le bouton valider&lt;br /&gt;
''Conseil OpenFlyers :'' Il est fortement recommandé d'avoir 2 adresses e-mails différentes pour les champs '''E-mail client''' et '''E-mail contact'''&lt;br /&gt;
&lt;br /&gt;
==Migrer vers une nouvelle version OpenFlyers==&lt;br /&gt;
Chez OpenFlyers, nous parlons de migration vers une nouvelle version lorsqu'il s'agit de mettre à jour une plateforme d'une version X vers une version Y incluant des changements majeurs.&lt;br /&gt;
&lt;br /&gt;
Par contre, il existe les mises à jours. Les mises à jour ne changent pas le numéro de version principal (exemple : 3.2 ou 3.5 correspondent à la même version principale). OpenFlyers effectue ces mises à jour automatiquement. Leur objectif est de corriger des bugs ou de rajouter de nouvelles fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
Hormis pour les abonnements Première, qui disposent d'une plateforme avec une version gelée et indépendante d'OpenFlyers, toutes les autres plateformes OpenFlyers sont sur un moteur commun qui est mis à jour de façon transparente plusieurs fois par semaine, voir même par jour.&lt;br /&gt;
&lt;br /&gt;
Nous ne présentons ci-dessous que les migrations &amp;quot;majeurs&amp;quot; qui peuvent impliquer des opérations de nettoyage manuel post-migration.&lt;br /&gt;
&lt;br /&gt;
===Coût d'une migration===&lt;br /&gt;
Lorsque vous êtes en production sur une version X d'OpenFlyers, vous pouvez demander à migrer vers la dernière version stable proposée aux nouveaux clients ou même vers la dernière version en développement dénommée &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; (par exemple &amp;quot;version 3.0alpha&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Les migrations sont incluses dans le support des abonnement Business, Première et Corporate.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un abonnement First Price, la migration est facturée 50 € HT sauf dans le cas d'une migration vers une version alpha ou beta ou depuis vers une version alpha ou beta vers la version stable suivante. Exemple de migrations offertes en abonnement First Price :&lt;br /&gt;
*Migration depuis la version 3.0alpha vers la version 3&lt;br /&gt;
*Migration depuis la version 3.5 vers la version 4.0alpha&lt;br /&gt;
*Migration depuis la version 4.0alpha vers la version 4&lt;br /&gt;
&lt;br /&gt;
Certaines migrations peuvent induire des opérations de nettoyage à effectuer manuellement. Ces opérations sont prises en charge dans le cas des abonnements Business, Première et Corporate. Elles sont facturées dans le cas de l'abonnement First Price. La structure peut également effectuer elle-même les opérations de nettoyage dans le cas d'un abonnement First Price en suivant la [[Accueil#Proc.C3.A9dures_de_mont.C3.A9e_de_version|procédure de montée de version]] publiée par OpenFlyers. Exemple de procédure de nettoyage : [[Upgrade3|nettoyage suite à migration vers une version 3]].&lt;br /&gt;
&lt;br /&gt;
Enfin, dans le cas où la plateforme bénéficiait d'un ancien tarif, le fait de migrer implique le passage au tarif en vigueur au moment de la migration et à l'acquittement de la différence de tarif par rapport à l'ancien tarif.&lt;br /&gt;
&lt;br /&gt;
===Déroulement d'une migration===&lt;br /&gt;
#Il faut avoir pris connaissance des [[#Cons.C3.A9quences_d.27une_migration|conséquences d'une migration]] et accepter le fait qu'elle est irréversible&lt;br /&gt;
#Il faut éventuellement créer la ou les factures selon l'abonnement déjà souscrit et l'abonnement souhaité (cf. [[#Co.C3.BBt_d.27une_migration|Coût d'une migration]] en [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|se connectant sur l'espace client]].&lt;br /&gt;
#Il faut payer les factures correspondantes ainsi créées.&lt;br /&gt;
#Il faut en faire la demande par e-mail et précisant la date avant laquelle vous ne souhaitez pas qu'on effectue de migration. Il n'est pas possible de programmer une date pour une migration : cela se fait en fonction de la synchronisation des disponibilités des différents collaborateurs d'OpenFlyers qui doivent intervenir à tour de rôle.&lt;br /&gt;
#Nous créons alors les factures liées à la migration, à la différence de tarif et au forfait paramétrage selon votre abonnement et les options souscrites (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
#Vous payez.&lt;br /&gt;
#Nous procédons alors à cette migration et nous fournissons une URL de substitution pendant une semaine pour palier les problèmes de cache DNS. Lors de la migration l'interruption de service est seulement de quelques minutes. Elle est donc transparente pour la quasi totalité des utilisateurs.&lt;br /&gt;
#Selon ce qui a été convenu nous effectuons ou le client effectue [[Upgrade3|le nettoyage lié au passage à la version 3]].&lt;br /&gt;
#Si vous avez souscrit au forfait paramétrage ou qu'il est inclut dans votre abonnement, nous vous envoyons un questionnaire pour le paramétrage. Cf. [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|Forfait paramétrage]]&lt;br /&gt;
&lt;br /&gt;
===Conséquences d'une migration===&lt;br /&gt;
*Toute migration est irréversible : nous ne créons pas de script permettant de revenir vers une version antérieure. En effet, nous effectuons des migrations &amp;quot;cachées&amp;quot; plusieurs fois par semaine qui constituent des corrections de bugs ou l'ajout de nouvelles fonctionnalités. De ce fait, notre exploitation est organisée pour pouvoir palier à un défaut apparaissant à l'issue d'une migration tout comme elle est organisée pour faire face à l'apparition d'un nouveau bug lors d'une mise à jour transparente.&lt;br /&gt;
*Attention notamment à une migration vers une version &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; : en effet, une migration vers cette version implique que vous acceptiez de fonctionner sur une version qui évolue sans cesse. Outre les corrections de bugs, nous rajoutons sur la version beta régulièrement des fonctionnalités qui peuvent créer de nouvelles anomalies. Bien entendu, nous faisons le nécessaire dès que nous avons connaissance d'un problème (notamment par le [http://bts.openflyers.org BTS] pour résoudre les défauts. C'est d'ailleurs grâce aux clients volontaires pour fonctionner sur la version beta que nous pouvons faire évoluer le produit.&lt;br /&gt;
*Après une migration, il peut être nécessaire de forcer le rafraichissement du &amp;quot;cache&amp;quot; du navigateur en appuyant sur CTRL+R (ou icône &amp;quot;Actualiser&amp;quot; ou &amp;quot;Rafraichir&amp;quot; suivant les navigateurs) afin d'obliger le navigateur à charger en mémoire les scripts qui correspondent à la nouvelle version.&lt;br /&gt;
*De même, l'accès à la plateforme via son URL peut ne pas fonctionner pendant 1 ou 2 jours du fait des serveurs disposant de &amp;quot;caches DNS&amp;quot;. Afin de palier à ce défaut, nous fournissons une URL de substitution pendant une semaine qui permet quand même d'accéder à la plateforme.&lt;br /&gt;
*Le temps d'indisponibilité d'accès à la plateforme est de l'ordre de quelques minutes en général. Il est donc transparent pour la plupart des utilisateurs. Par contre, s'il y a un travail de nettoyage post-migration à effectuer par OpenFlyers, ce nettoyage peut durer plusieurs heures. Il n'empêche pas l'utilisation de la plateforme.&lt;br /&gt;
&lt;br /&gt;
==Ajouter une ressource à son abonnement OpenFlyers==&lt;br /&gt;
L'abonnement OpenFlyers est calculé en fonction du nombre de ressources. Le nombre est déterminé pour l'année civile complète.&lt;br /&gt;
&lt;br /&gt;
Si vous voulez rajouter une ressource en cours d'année, alors vous devez [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|vous connecter sur l'espace client OpenFlyers]] et créer une facture d'ajout de ressource en indiquant le nombre de ressources supplémentaires. Le tarif appliqué sera alors celui de l'année complète.&lt;br /&gt;
&lt;br /&gt;
Une fois le paiement de la facture correspondante acquitté, il sera possible d'intervenir sur la plateforme concernée pour rajouter la ressource. Il y alors 2 cas possible :&lt;br /&gt;
*C'est une ressource dont les tarifs correspondent à un type de ressource déjà présent sur la plateforme concernée. Dans ce cas, l'opération est relativement simple et nous conseillons de suivre soi-même la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]].&lt;br /&gt;
*C'est une ressource qui nécessite la création d'un nouveau type de ressource avec de nouveaux tarifs : dans ce cas, l'opération est plus complexe. Elle peut être effectuée de façon autonome en suivant la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]] et en procédant par comparaison avec les types de ressources existantes. Cependant, si vous souhaitez éviter tout risque d'erreur, nous recommandons de nous confier cette tâche en nous communiquant les éléments comme lors de la mise en place du paramétrage par nos soins à l'aide du questionnaire. Nous décomptons notre intervention des heures de bonus assistance/développement à hauteur d'une heure.&lt;br /&gt;
&lt;br /&gt;
===Créer une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#Ajouter_un_avion|Ajouter un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#Ajouter_un_a.C3.A9ronef|Ajouter un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#Ajouter_une_ressource|Ajouter une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#Ajouter_une_ressource|Ajouter une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Enlever une ressource à son abonnement OpenFlyers==&lt;br /&gt;
Si vous enlevez une ressource en cours d'année, il n'y a aucun changement d'abonnement puisque les ressources sont souscrites pour toute l'année.&lt;br /&gt;
&lt;br /&gt;
===Désactiver une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#D.C3.A9sactiver_un_avion|Désactiver un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#D.C3.A9sactiver_un_a.C3.A9ronef|Désactiver un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Remplacer une ressource par une autre dans son abonnement OpenFlyers==&lt;br /&gt;
S'il y a un remplacement de ressource, alors il n'y a pas besoin d'acquitter un nouvel abonnement pour la nouvelle ressource : il suffit de [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver l'ancienne ressource]] avant d'[[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|activer la nouvelle]].&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un remplacement temporaire, il peut être aussi simple de simplement renommer la ressource concernée (immatriculation par exemple). A noter que dans ce cas, les statistiques totaliseront l'activité des 2 ressources en 1 seule.&lt;br /&gt;
&lt;br /&gt;
Si vous ne souhaitez pas désactiver cette ressource, alors vous pouvez [[#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|créer une facture complémentaire d'abonnement pour une ressource supplémentaire]].&lt;br /&gt;
&lt;br /&gt;
==Renouveler son abonnement OpenFlyers==&lt;br /&gt;
Pour renouveler l'abonnement, il faut :&lt;br /&gt;
#[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter]] sur le compte client OpenFlyers&lt;br /&gt;
#Créer la facture en fonction du choix d'abonnement (vous trouverez plus d'informations dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire])&lt;br /&gt;
#Ensuite, payer soit :&lt;br /&gt;
#*par carte bancaire en cliquant sur le lien &amp;quot;paiement par carte bancaire&amp;quot; (le choix le plus pratique pour une prise en compte immédiate)&lt;br /&gt;
#*par transfert bancaire (dans ce cas, vous devez prendre en charge tous les frais liés à la transaction). Les coordonnées bancaires sont indiquées sur la facture.&lt;br /&gt;
#*par chèque (attention au délai d'acheminement du courrier)&lt;br /&gt;
&lt;br /&gt;
===Variation du nombre de ressources lors du renouvellement===&lt;br /&gt;
Lors du renouvellement, le nombre minimum de ressources proposées, dans l'interface de renouvellement de l'abonnement, correspond au nombre de ressources activées dans la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez augmenter le nombre de ressources pour l'année suivante, il suffit de modifier la valeur proposée par défaut.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez diminuer le nombre de ressources pour l'année suivante, il faut [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver des ressources dans la plateforme OpenFlyers]] afin que le nombre proposé par défaut diminue avant de créer la facture de renouvellement d'abonnement.&lt;br /&gt;
&lt;br /&gt;
==Plateforme supplémentaire de test==&lt;br /&gt;
Cette fonctionnalité disponible que pour les clients étant au moins sous la version 3.5 d'OpenFlyers, est utile dans le cas où vous souhaitez :&lt;br /&gt;
*effectuer des tests sur une recopie de la plateforme de démonstration.&lt;br /&gt;
*effectuer des tests sur une recopie de votre propre plateforme et ainsi modifier son paramétrage sur une version [[Wikipedia-fr:Sandbox_(sécurité_informatique)|sandbox]] sans impacter la version de production.&lt;br /&gt;
*essayer la version 4 d'OpenFlyers&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut :&lt;br /&gt;
*Se connecter sur son [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|compte client]]&lt;br /&gt;
*Aller dans le menu '''Plateforme'''&lt;br /&gt;
* Plusieurs choix sont proposés :&lt;br /&gt;
** Si vous êtes sous la version 3.5 :&lt;br /&gt;
*** '''De demo.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de la plateforme démo avec suppression du message d'accueil &amp;quot;La base de données cette plateforme de démonstration est réinitialisée toutes les heures, vers XX:45&amp;quot;.&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.of4.openflyers.fr''' : Permet de créer une plateforme d'essai sous la version 4 d'OpenFlyers en effectuant une recopie de votre plateforme existante puis en faisant une montée de version sur cette recopie&lt;br /&gt;
** Si vous êtes sous la version 3.5 ou supérieure :&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de votre plateforme existante&lt;br /&gt;
* Cliquer sur '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Si votre plateforme est référencée par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme de test se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.test.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme d'essai de la version 4 d'OpenFlyers se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.of4.openflyers.fr&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13722</id>
		<title>Modèle commercial et compte client OpenFlyers</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13722"/>
				<updated>2015-10-20T16:14:41Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Définitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Définitions=&lt;br /&gt;
==Plateforme de démonstration==&lt;br /&gt;
Les plateformes de démonstration sont accessibles au public et servent de bac à sable.&lt;br /&gt;
&lt;br /&gt;
Le sous-domaine de l'URL des plateformes de démonstration est ''demo'' ou commence par ''demo-''. Il existe également des plateformes de démonstration spécifiques dont le sous-domaine est différent.&lt;br /&gt;
&lt;br /&gt;
Elles sont réinitialisées toutes les heures à la minute 44.&lt;br /&gt;
==Plateforme en production==&lt;br /&gt;
Une plateforme est considérée en production lorsque l'abonnement pour l'année en cours a été payé.&lt;br /&gt;
&lt;br /&gt;
La phase de paramétrage qui précède le &amp;quot;passage en production&amp;quot; effectif s'effectue toujours sur une &amp;quot;plateforme en production&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Plateforme en test==&lt;br /&gt;
Les plateformes en test sont de 2 natures :&lt;br /&gt;
*Les plateformes créées par un utilisateur et qui ne sont pas [[en production]];&lt;br /&gt;
*[[#Plateforme_suppl.C3.A9mentaire_de_test|Les plateformes supplémentaires de test]];&lt;br /&gt;
&lt;br /&gt;
=Le modèle commercial de la SARL OpenFlyers=&lt;br /&gt;
==Fonctionnement économique==&lt;br /&gt;
OpenFlyers fonctionne sur le modèle économique d'une ASP (=Application Service Provider) ou SaaS (= Software as a Service). On parle également de &amp;quot;cloud computing&amp;quot; (informatique dans les nuages). C'est-à-dire que nous fournissons un service applicatif par le biais d'internet pour lequel nous facturons un abonnement annuel.&lt;br /&gt;
&lt;br /&gt;
Les avantages de ce système pour les clients finaux sont les suivants :&lt;br /&gt;
*la maintenance logiciel est déportée et ne nécessite plus le déplacement d'un technicien. Cela permet également de mettre en œuvre plus rapidement des correctifs à la demande ;&lt;br /&gt;
*le coût des développements est mutualisé entre les différents clients ;&lt;br /&gt;
*nous assurons nous-mêmes la pérennité des données par sauvegardes journalières sur plusieurs serveurs en plusieurs lieux et cela sur 20 jours glissants.&lt;br /&gt;
&lt;br /&gt;
De plus, OpenFlyers existe en plusieurs versions dont certaines sont disponibles en téléchargement. Vous pouvez retrouver [http://wiki.openflyers.org/index.php?title=FAQ#May_I_install_OpenFlyers_on_my_own_server.3F plus d'infos sur notre support libre].&lt;br /&gt;
&lt;br /&gt;
==Arbitrage des demandes de développements==&lt;br /&gt;
Les demandes de développements pour avoir de nouvelles fonctionnalités sont infinies. Au début de son existence OpenFlyers devait arbitrer entre les demandes des différents clients. Pour cela, l'équipe de développement OpenFlyers tenait compte de la taille d'un client ou d'un prospect pour arbitrer les différentes demandes et du potentiel impact qui pouvait en résulter sur le chiffre d'affaire au travers des nouveaux clients qui pouvaient se décider à passer à OpenFlyers du fait de l'existence de telle ou telle fonctionnalité. Ces demandes étant nombreuses, les demandes non retenues étaient nombreuses et cela pouvait conduire à &amp;quot;vexer&amp;quot; un client qui pouvait considérer que sa demande non retenue ou mise en attente était plus pertinente qu'une autre demande retenue.&lt;br /&gt;
&lt;br /&gt;
Afin de ne plus être juge et parti, OpenFlyers a remis au goût du jour le [[Wikipedia-fr:Suffrage_censitaire|vote censitaire]] au travers des heures de bonus développement. Ainsi, les conditions générales d'OpenFlyers donne la possibilité aux clients de choisir eux-mêmes les développements qui leur seront le plus profitable. Le fonctionnement est le suivant :&lt;br /&gt;
*Tout client désireux de voir développer une nouvelle fonctionnalité peut faire '''une unique demande''' de devis développement '''par an'''. Cette demande doit être effectuée par e-mail en précisant le nom de la structure aéronautique cliente.&lt;br /&gt;
*En fonction du coût en heures de développement, ce développement peut être financé par les heures de bonus développement dont bénéficie chaque client. Plusieurs clients peuvent mutualiser leurs heures de bonus de développement. Les développements peuvent être également financés en partie ou en totalité par une facturation spécifique dans le cas où le bonus développement ne permet pas de couvrir l'intégralité du coût en heures.&lt;br /&gt;
*A l'issue d'une demande de devis, un client peut demander un nouveau devis à condition qu'il ait accepté le 1er devis. Le but est de limiter le temps consacré par l'équipe OpenFlyers à effectuer des devis.&lt;br /&gt;
Nous mutualisons les développements : tous nos développements sont intégrés au sein de l'unique version en cours de développement. Ainsi, tous les clients bénéficient des demandes de chacun d'entre-eux.&lt;br /&gt;
*Les développements &amp;quot;votés&amp;quot; sont triés par ordre d'arrivé sauf pour ceux dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
Enfin, les clients peuvent, avant d'effectuer une demande de devis par e-mail, faire part de leur demande sur le [http://support-fr.openflyers.com/ forum] dans la partie '''Evolutions et Adaptations''' en vérifiant qu'elle n'existe pas déjà. C'est aussi un moyen pour le demandeur d'inviter d'autres clients à s'associer à leur demande en mutualisant leurs heures de bonus développement.&lt;br /&gt;
&lt;br /&gt;
==Bonus assistance/développement==&lt;br /&gt;
Chaque client dispose en fonction de son abonnement d'un quota d'heures de bonus qui peuvent être utilisées comme assistance ou comme développement (cf. [[#Arbitrage_des_demandes_de_d.C3.A9veloppements|Arbitrage des demandes de développements]]).&lt;br /&gt;
&lt;br /&gt;
L'assistance permet de couvrir une demande de support téléphonique ou une demande d'intervention sur la plateforme.&lt;br /&gt;
&lt;br /&gt;
Pour utiliser les heures de bonus, il faut :&lt;br /&gt;
*Faire une demande par e-mail d'intervention ou de support.&lt;br /&gt;
''Nous répondons en indiquant le temps à prévoir/déduire des heures de bonus''&lt;br /&gt;
*Confirmer sa demande par retour d'e-mail&lt;br /&gt;
&lt;br /&gt;
Les demandes sont triées par ordre d'arrivé sauf pour celles dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
A noter que les heures non utilisées dans l'année sont perdues (cf. les [https://openflyers.com/fr/entreprise/conditions-generales conditions générales de vente]).&lt;br /&gt;
&lt;br /&gt;
Il n'existe pas à ce jour d'interface permettant de suivre les heures déjà utilisées. Il est néanmoins possible d'en obtenir le suivi sur simple demande par e-mail.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
Attention, il ne faut pas confondre son compte client OpenFlyers qui permet d'accéder à sa fiche client OpenFlyers et qui permet de renouveler son abonnement OpenFlyers avec son identifiant personnel permettant d'accéder à sa plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
==Accéder à son compte client OpenFlyers==&lt;br /&gt;
Aller sur [https://client.openflyers.com l'espace client] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'identifiant permettant d'accéder à votre compte client correspond au sous-domaine de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Par exemple, si votre plateforme est référencée par l'adresse :&lt;br /&gt;
 http://mermoz.openflyers.fr&lt;br /&gt;
&lt;br /&gt;
Alors le sous-domaine est '''mermoz'''.&lt;br /&gt;
&lt;br /&gt;
C'est donc '''mermoz''' qu'il faut utiliser comme identifiant pour vous connecter au .&lt;br /&gt;
&lt;br /&gt;
Si vous n'avez pas le mot de passe, vous pouvez le réactiver avec la fonction '''Mot de passe oublié ?''' qui est sur la page d'identification.&lt;br /&gt;
&lt;br /&gt;
Une adresse e-mail vous sera demandée. Vous pourrez saisir l'adresse e-mail de la structure aéronautique ou celle du contact qui ont été saisies dans la fiche client (il s'agit des adresses e-mails sur lesquelles sont envoyées nos e-mails d'alerte de renouvellement ou d'information).&lt;br /&gt;
&lt;br /&gt;
Dans le but de ne pas être submergés par les demandes, nous facturons la ré-initialisation manuelle, par nos soins, du mot de passe ou la mise à jour des adresses e-mails présentes sur la fiche client pour les abonnement First Price (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Changer de responsable en charge d'OpenFlyers==&lt;br /&gt;
Lorsqu'il y a un changement de responsable en charge d'OpenFlyers, pour que la passation se passe dans les meilleures conditions, il faut penser à effectuer les 3 changements suivants :&lt;br /&gt;
*Attribuer un profil d'administrateur de la plateforme OpenFlyers au niveau de la plateforme (procédure pour intervenir sur la fiche utilisateur pour la [[User-management3#Modifier_un_utilisateur|version 3]] ou la [[User-management4#Acc.C3.A9der_.C3.A0_l.27interface_de_gestion_des_utilisateurs|version 4]])&lt;br /&gt;
*Mettre à jour le champ du responsable OpenFlyers au niveau de la plateforme (procédure pour la [[AdminDoc3#Responsable_OpenFlyers|version 3]] et la [[AdminDoc4#Responsable_OpenFlyers|version 4]]).&lt;br /&gt;
*Mettre à jour le nom du responsable OpenFlyers au niveau de la fiche client en effectuant la procédure suivante :&lt;br /&gt;
**[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client OpenFlyers]]&lt;br /&gt;
**Aller dans '''Fiche contact'''&lt;br /&gt;
**Mettre à jour la fiche&lt;br /&gt;
**Cliquer sur le bouton '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Dans le cas où la passation ne peut pas se faire ainsi car l'ancien responsable OpenFlyers ne peut pas effectuer ces opérations ou transmettre les couples (identifiants, mots de passe) au nouveau responsable pour qu'il effectue ces opérations, vous pouvez nous demandez, uniquement par e-mail, d'effectuer ces changements de responsable OpenFlyers, en joignant à l'e-mail :&lt;br /&gt;
*Un courrier signé du responsable de la structure (gérant, président, etc.) contenant la demande de mise à jour du responsable OpenFlyers désigné et indiquant explicitement le nom du nouveau responsable avec son adresse e-mail&lt;br /&gt;
*Une copie d'un document officiel (extrait K-BIS, procès-verbal d'assemblée générale, etc.) permettant de prouver la qualité du responsable de la structure.&lt;br /&gt;
Le courrier scanné n'est pas nécessaire dans le cas où le nouveau responsable OpenFlyers apparait sur l'extrait K-BIS.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' dans le cas d'une société, le responsable de la structure doit détenir plus de la moitié des parts dans la société. Dans le cas où il y a cogérance, alors il faut que le courrier soit signé de l'ensemble des responsables de sorte à représenter plus de la moitié des parts de la société.&lt;br /&gt;
&lt;br /&gt;
==Mettre à jour sa fiche client==&lt;br /&gt;
*[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client]]&lt;br /&gt;
*Cliquer sur le menu '''Fiche contact'''&lt;br /&gt;
*Mettre à jour le contenu des champs concernés&lt;br /&gt;
*Cliquer sur le bouton valider&lt;br /&gt;
''Conseil OpenFlyers :'' Il est fortement recommandé d'avoir 2 adresses e-mails différentes pour les champs '''E-mail client''' et '''E-mail contact'''&lt;br /&gt;
&lt;br /&gt;
==Migrer vers une nouvelle version OpenFlyers==&lt;br /&gt;
Chez OpenFlyers, nous parlons de migration vers une nouvelle version lorsqu'il s'agit de mettre à jour une plateforme d'une version X vers une version Y incluant des changements majeurs.&lt;br /&gt;
&lt;br /&gt;
Par contre, il existe les mises à jours. Les mises à jour ne changent pas le numéro de version principal (exemple : 3.2 ou 3.5 correspondent à la même version principale). OpenFlyers effectue ces mises à jour automatiquement. Leur objectif est de corriger des bugs ou de rajouter de nouvelles fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
Hormis pour les abonnements Première, qui disposent d'une plateforme avec une version gelée et indépendante d'OpenFlyers, toutes les autres plateformes OpenFlyers sont sur un moteur commun qui est mis à jour de façon transparente plusieurs fois par semaine, voir même par jour.&lt;br /&gt;
&lt;br /&gt;
Nous ne présentons ci-dessous que les migrations &amp;quot;majeurs&amp;quot; qui peuvent impliquer des opérations de nettoyage manuel post-migration.&lt;br /&gt;
&lt;br /&gt;
===Coût d'une migration===&lt;br /&gt;
Lorsque vous êtes en production sur une version X d'OpenFlyers, vous pouvez demander à migrer vers la dernière version stable proposée aux nouveaux clients ou même vers la dernière version en développement dénommée &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; (par exemple &amp;quot;version 3.0alpha&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Les migrations sont incluses dans le support des abonnement Business, Première et Corporate.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un abonnement First Price, la migration est facturée 50 € HT sauf dans le cas d'une migration vers une version alpha ou beta ou depuis vers une version alpha ou beta vers la version stable suivante. Exemple de migrations offertes en abonnement First Price :&lt;br /&gt;
*Migration depuis la version 3.0alpha vers la version 3&lt;br /&gt;
*Migration depuis la version 3.5 vers la version 4.0alpha&lt;br /&gt;
*Migration depuis la version 4.0alpha vers la version 4&lt;br /&gt;
&lt;br /&gt;
Certaines migrations peuvent induire des opérations de nettoyage à effectuer manuellement. Ces opérations sont prises en charge dans le cas des abonnements Business, Première et Corporate. Elles sont facturées dans le cas de l'abonnement First Price. La structure peut également effectuer elle-même les opérations de nettoyage dans le cas d'un abonnement First Price en suivant la [[Accueil#Proc.C3.A9dures_de_mont.C3.A9e_de_version|procédure de montée de version]] publiée par OpenFlyers. Exemple de procédure de nettoyage : [[Upgrade3|nettoyage suite à migration vers une version 3]].&lt;br /&gt;
&lt;br /&gt;
Enfin, dans le cas où la plateforme bénéficiait d'un ancien tarif, le fait de migrer implique le passage au tarif en vigueur au moment de la migration et à l'acquittement de la différence de tarif par rapport à l'ancien tarif.&lt;br /&gt;
&lt;br /&gt;
===Déroulement d'une migration===&lt;br /&gt;
#Il faut avoir pris connaissance des [[#Cons.C3.A9quences_d.27une_migration|conséquences d'une migration]] et accepter le fait qu'elle est irréversible&lt;br /&gt;
#Il faut éventuellement créer la ou les factures selon l'abonnement déjà souscrit et l'abonnement souhaité (cf. [[#Co.C3.BBt_d.27une_migration|Coût d'une migration]] en [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|se connectant sur l'espace client]].&lt;br /&gt;
#Il faut payer les factures correspondantes ainsi créées.&lt;br /&gt;
#Il faut en faire la demande par e-mail et précisant la date avant laquelle vous ne souhaitez pas qu'on effectue de migration. Il n'est pas possible de programmer une date pour une migration : cela se fait en fonction de la synchronisation des disponibilités des différents collaborateurs d'OpenFlyers qui doivent intervenir à tour de rôle.&lt;br /&gt;
#Nous créons alors les factures liées à la migration, à la différence de tarif et au forfait paramétrage selon votre abonnement et les options souscrites (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
#Vous payez.&lt;br /&gt;
#Nous procédons alors à cette migration et nous fournissons une URL de substitution pendant une semaine pour palier les problèmes de cache DNS. Lors de la migration l'interruption de service est seulement de quelques minutes. Elle est donc transparente pour la quasi totalité des utilisateurs.&lt;br /&gt;
#Selon ce qui a été convenu nous effectuons ou le client effectue [[Upgrade3|le nettoyage lié au passage à la version 3]].&lt;br /&gt;
#Si vous avez souscrit au forfait paramétrage ou qu'il est inclut dans votre abonnement, nous vous envoyons un questionnaire pour le paramétrage. Cf. [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|Forfait paramétrage]]&lt;br /&gt;
&lt;br /&gt;
===Conséquences d'une migration===&lt;br /&gt;
*Toute migration est irréversible : nous ne créons pas de script permettant de revenir vers une version antérieure. En effet, nous effectuons des migrations &amp;quot;cachées&amp;quot; plusieurs fois par semaine qui constituent des corrections de bugs ou l'ajout de nouvelles fonctionnalités. De ce fait, notre exploitation est organisée pour pouvoir palier à un défaut apparaissant à l'issue d'une migration tout comme elle est organisée pour faire face à l'apparition d'un nouveau bug lors d'une mise à jour transparente.&lt;br /&gt;
*Attention notamment à une migration vers une version &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; : en effet, une migration vers cette version implique que vous acceptiez de fonctionner sur une version qui évolue sans cesse. Outre les corrections de bugs, nous rajoutons sur la version beta régulièrement des fonctionnalités qui peuvent créer de nouvelles anomalies. Bien entendu, nous faisons le nécessaire dès que nous avons connaissance d'un problème (notamment par le [http://bts.openflyers.org BTS] pour résoudre les défauts. C'est d'ailleurs grâce aux clients volontaires pour fonctionner sur la version beta que nous pouvons faire évoluer le produit.&lt;br /&gt;
*Après une migration, il peut être nécessaire de forcer le rafraichissement du &amp;quot;cache&amp;quot; du navigateur en appuyant sur CTRL+R (ou icône &amp;quot;Actualiser&amp;quot; ou &amp;quot;Rafraichir&amp;quot; suivant les navigateurs) afin d'obliger le navigateur à charger en mémoire les scripts qui correspondent à la nouvelle version.&lt;br /&gt;
*De même, l'accès à la plateforme via son URL peut ne pas fonctionner pendant 1 ou 2 jours du fait des serveurs disposant de &amp;quot;caches DNS&amp;quot;. Afin de palier à ce défaut, nous fournissons une URL de substitution pendant une semaine qui permet quand même d'accéder à la plateforme.&lt;br /&gt;
*Le temps d'indisponibilité d'accès à la plateforme est de l'ordre de quelques minutes en général. Il est donc transparent pour la plupart des utilisateurs. Par contre, s'il y a un travail de nettoyage post-migration à effectuer par OpenFlyers, ce nettoyage peut durer plusieurs heures. Il n'empêche pas l'utilisation de la plateforme.&lt;br /&gt;
&lt;br /&gt;
==Ajouter une ressource à son abonnement OpenFlyers==&lt;br /&gt;
L'abonnement OpenFlyers est calculé en fonction du nombre de ressources. Le nombre est déterminé pour l'année civile complète.&lt;br /&gt;
&lt;br /&gt;
Si vous voulez rajouter une ressource en cours d'année, alors vous devez [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|vous connecter sur l'espace client OpenFlyers]] et créer une facture d'ajout de ressource en indiquant le nombre de ressources supplémentaires. Le tarif appliqué sera alors celui de l'année complète.&lt;br /&gt;
&lt;br /&gt;
Une fois le paiement de la facture correspondante acquitté, il sera possible d'intervenir sur la plateforme concernée pour rajouter la ressource. Il y alors 2 cas possible :&lt;br /&gt;
*C'est une ressource dont les tarifs correspondent à un type de ressource déjà présent sur la plateforme concernée. Dans ce cas, l'opération est relativement simple et nous conseillons de suivre soi-même la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]].&lt;br /&gt;
*C'est une ressource qui nécessite la création d'un nouveau type de ressource avec de nouveaux tarifs : dans ce cas, l'opération est plus complexe. Elle peut être effectuée de façon autonome en suivant la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]] et en procédant par comparaison avec les types de ressources existantes. Cependant, si vous souhaitez éviter tout risque d'erreur, nous recommandons de nous confier cette tâche en nous communiquant les éléments comme lors de la mise en place du paramétrage par nos soins à l'aide du questionnaire. Nous décomptons notre intervention des heures de bonus assistance/développement à hauteur d'une heure.&lt;br /&gt;
&lt;br /&gt;
===Créer une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#Ajouter_un_avion|Ajouter un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#Ajouter_un_a.C3.A9ronef|Ajouter un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#Ajouter_une_ressource|Ajouter une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#Ajouter_une_ressource|Ajouter une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Enlever une ressource à son abonnement OpenFlyers==&lt;br /&gt;
Si vous enlevez une ressource en cours d'année, il n'y a aucun changement d'abonnement puisque les ressources sont souscrites pour toute l'année.&lt;br /&gt;
&lt;br /&gt;
===Désactiver une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#D.C3.A9sactiver_un_avion|Désactiver un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#D.C3.A9sactiver_un_a.C3.A9ronef|Désactiver un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Remplacer une ressource par une autre dans son abonnement OpenFlyers==&lt;br /&gt;
S'il y a un remplacement de ressource, alors il n'y a pas besoin d'acquitter un nouvel abonnement pour la nouvelle ressource : il suffit de [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver l'ancienne ressource]] avant d'[[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|activer la nouvelle]].&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un remplacement temporaire, il peut être aussi simple de simplement renommer la ressource concernée (immatriculation par exemple). A noter que dans ce cas, les statistiques totaliseront l'activité des 2 ressources en 1 seule.&lt;br /&gt;
&lt;br /&gt;
Si vous ne souhaitez pas désactiver cette ressource, alors vous pouvez [[#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|créer une facture complémentaire d'abonnement pour une ressource supplémentaire]].&lt;br /&gt;
&lt;br /&gt;
==Renouveler son abonnement OpenFlyers==&lt;br /&gt;
Pour renouveler l'abonnement, il faut :&lt;br /&gt;
#[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter]] sur le compte client OpenFlyers&lt;br /&gt;
#Créer la facture en fonction du choix d'abonnement (vous trouverez plus d'informations dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire])&lt;br /&gt;
#Ensuite, payer soit :&lt;br /&gt;
#*par carte bancaire en cliquant sur le lien &amp;quot;paiement par carte bancaire&amp;quot; (le choix le plus pratique pour une prise en compte immédiate)&lt;br /&gt;
#*par transfert bancaire (dans ce cas, vous devez prendre en charge tous les frais liés à la transaction). Les coordonnées bancaires sont indiquées sur la facture.&lt;br /&gt;
#*par chèque (attention au délai d'acheminement du courrier)&lt;br /&gt;
&lt;br /&gt;
===Variation du nombre de ressources lors du renouvellement===&lt;br /&gt;
Lors du renouvellement, le nombre minimum de ressources proposées, dans l'interface de renouvellement de l'abonnement, correspond au nombre de ressources activées dans la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez augmenter le nombre de ressources pour l'année suivante, il suffit de modifier la valeur proposée par défaut.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez diminuer le nombre de ressources pour l'année suivante, il faut [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver des ressources dans la plateforme OpenFlyers]] afin que le nombre proposé par défaut diminue avant de créer la facture de renouvellement d'abonnement.&lt;br /&gt;
&lt;br /&gt;
==Plateforme supplémentaire de test==&lt;br /&gt;
Cette fonctionnalité disponible que pour les clients étant au moins sous la version 3.5 d'OpenFlyers, est utile dans le cas où vous souhaitez :&lt;br /&gt;
*effectuer des tests sur une recopie de la plateforme de démonstration.&lt;br /&gt;
*effectuer des tests sur une recopie de votre propre plateforme et ainsi modifier son paramétrage sur une version [[Wikipedia-fr:Sandbox_(sécurité_informatique)|sandbox]] sans impacter la version de production.&lt;br /&gt;
*essayer la version 4 d'OpenFlyers&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut :&lt;br /&gt;
*Se connecter sur son [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|compte client]]&lt;br /&gt;
*Aller dans le menu '''Plateforme'''&lt;br /&gt;
* Plusieurs choix sont proposés :&lt;br /&gt;
** Si vous êtes sous la version 3.5 :&lt;br /&gt;
*** '''De demo.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de la plateforme démo avec suppression du message d'accueil &amp;quot;La base de données cette plateforme de démonstration est réinitialisée toutes les heures, vers XX:45&amp;quot;.&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.of4.openflyers.fr''' : Permet de créer une plateforme d'essai sous la version 4 d'OpenFlyers en effectuant une recopie de votre plateforme existante puis en faisant une montée de version sur cette recopie&lt;br /&gt;
** Si vous êtes sous la version 3.5 ou supérieure :&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de votre plateforme existante&lt;br /&gt;
* Cliquer sur '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Si votre plateforme est référencée par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme de test se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.test.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme d'essai de la version 4 d'OpenFlyers se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.of4.openflyers.fr&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	<entry>
		<id>https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13674</id>
		<title>Modèle commercial et compte client OpenFlyers</title>
		<link rel="alternate" type="text/html" href="https://doc2-fr.openflyers.com/index.php?title=Mod%C3%A8le-commercial-et-compte-client-OpenFlyers&amp;diff=13674"/>
				<updated>2015-09-30T13:54:25Z</updated>
		
		<summary type="html">&lt;p&gt;Claratte : /* Bonus assistance/développement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
=Définitions=&lt;br /&gt;
==Plateforme en production==&lt;br /&gt;
Une plateforme est considérée en production lorsque l'abonnement pour l'année en cours a été payé.&lt;br /&gt;
&lt;br /&gt;
La phase de paramétrage qui précède le &amp;quot;passage en production&amp;quot; effectif s'effectue toujours sur une &amp;quot;plateforme en production&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Le modèle commercial de la SARL OpenFlyers=&lt;br /&gt;
==Fonctionnement économique==&lt;br /&gt;
OpenFlyers fonctionne sur le modèle économique d'une ASP (=Application Service Provider) ou SaaS (= Software as a Service). On parle également de &amp;quot;cloud computing&amp;quot; (informatique dans les nuages). C'est-à-dire que nous fournissons un service applicatif par le biais d'internet pour lequel nous facturons un abonnement annuel.&lt;br /&gt;
&lt;br /&gt;
Les avantages de ce système pour les clients finaux sont les suivants :&lt;br /&gt;
*la maintenance logiciel est déportée et ne nécessite plus le déplacement d'un technicien. Cela permet également de mettre en œuvre plus rapidement des correctifs à la demande ;&lt;br /&gt;
*le coût des développements est mutualisé entre les différents clients ;&lt;br /&gt;
*nous assurons nous-mêmes la pérennité des données par sauvegardes journalières sur plusieurs serveurs en plusieurs lieux et cela sur 20 jours glissants.&lt;br /&gt;
&lt;br /&gt;
De plus, OpenFlyers existe en plusieurs versions dont certaines sont disponibles en téléchargement. Vous pouvez retrouver [http://wiki.openflyers.org/index.php?title=FAQ#May_I_install_OpenFlyers_on_my_own_server.3F plus d'infos sur notre support libre].&lt;br /&gt;
&lt;br /&gt;
==Arbitrage des demandes de développements==&lt;br /&gt;
Les demandes de développements pour avoir de nouvelles fonctionnalités sont infinies. Au début de son existence OpenFlyers devait arbitrer entre les demandes des différents clients. Pour cela, l'équipe de développement OpenFlyers tenait compte de la taille d'un client ou d'un prospect pour arbitrer les différentes demandes et du potentiel impact qui pouvait en résulter sur le chiffre d'affaire au travers des nouveaux clients qui pouvaient se décider à passer à OpenFlyers du fait de l'existence de telle ou telle fonctionnalité. Ces demandes étant nombreuses, les demandes non retenues étaient nombreuses et cela pouvait conduire à &amp;quot;vexer&amp;quot; un client qui pouvait considérer que sa demande non retenue ou mise en attente était plus pertinente qu'une autre demande retenue.&lt;br /&gt;
&lt;br /&gt;
Afin de ne plus être juge et parti, OpenFlyers a remis au goût du jour le [[Wikipedia-fr:Suffrage_censitaire|vote censitaire]] au travers des heures de bonus développement. Ainsi, les conditions générales d'OpenFlyers donne la possibilité aux clients de choisir eux-mêmes les développements qui leur seront le plus profitable. Le fonctionnement est le suivant :&lt;br /&gt;
*Tout client désireux de voir développer une nouvelle fonctionnalité peut faire '''une unique demande''' de devis développement '''par an'''. Cette demande doit être effectuée par e-mail en précisant le nom de la structure aéronautique cliente.&lt;br /&gt;
*En fonction du coût en heures de développement, ce développement peut être financé par les heures de bonus développement dont bénéficie chaque client. Plusieurs clients peuvent mutualiser leurs heures de bonus de développement. Les développements peuvent être également financés en partie ou en totalité par une facturation spécifique dans le cas où le bonus développement ne permet pas de couvrir l'intégralité du coût en heures.&lt;br /&gt;
*A l'issue d'une demande de devis, un client peut demander un nouveau devis à condition qu'il ait accepté le 1er devis. Le but est de limiter le temps consacré par l'équipe OpenFlyers à effectuer des devis.&lt;br /&gt;
Nous mutualisons les développements : tous nos développements sont intégrés au sein de l'unique version en cours de développement. Ainsi, tous les clients bénéficient des demandes de chacun d'entre-eux.&lt;br /&gt;
*Les développements &amp;quot;votés&amp;quot; sont triés par ordre d'arrivé sauf pour ceux dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
Enfin, les clients peuvent, avant d'effectuer une demande de devis par e-mail, faire part de leur demande sur le [http://support-fr.openflyers.com/ forum] dans la partie '''Evolutions et Adaptations''' en vérifiant qu'elle n'existe pas déjà. C'est aussi un moyen pour le demandeur d'inviter d'autres clients à s'associer à leur demande en mutualisant leurs heures de bonus développement.&lt;br /&gt;
&lt;br /&gt;
==Bonus assistance/développement==&lt;br /&gt;
Chaque client dispose en fonction de son abonnement d'un quota d'heures de bonus qui peuvent être utilisées comme assistance ou comme développement (cf. [[#Arbitrage_des_demandes_de_d.C3.A9veloppements|Arbitrage des demandes de développements]]).&lt;br /&gt;
&lt;br /&gt;
L'assistance permet de couvrir une demande de support téléphonique ou une demande d'intervention sur la plateforme.&lt;br /&gt;
&lt;br /&gt;
Pour utiliser les heures de bonus, il faut :&lt;br /&gt;
*Faire une demande par e-mail d'intervention ou de support.&lt;br /&gt;
''Nous répondons en indiquant le temps à prévoir/déduire des heures de bonus''&lt;br /&gt;
*Confirmer sa demande par retour d'e-mail&lt;br /&gt;
&lt;br /&gt;
Les demandes sont triées par ordre d'arrivé sauf pour celles dont une partie est financée en somme &amp;quot;sonnante et trébuchante&amp;quot; qui passent en priorité.&lt;br /&gt;
&lt;br /&gt;
A noter que les heures non utilisées dans l'année sont perdues (cf. les [https://openflyers.com/fr/entreprise/conditions-generales conditions générales de vente]).&lt;br /&gt;
&lt;br /&gt;
Il n'existe pas à ce jour d'interface permettant de suivre les heures déjà utilisées. Il est néanmoins possible d'en obtenir le suivi sur simple demande par e-mail.&lt;br /&gt;
&lt;br /&gt;
=Compte client OpenFlyers=&lt;br /&gt;
Attention, il ne faut pas confondre son compte client OpenFlyers qui permet d'accéder à sa fiche client OpenFlyers et qui permet de renouveler son abonnement OpenFlyers avec son identifiant personnel permettant d'accéder à sa plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
==Accéder à son compte client OpenFlyers==&lt;br /&gt;
Aller sur [https://client.openflyers.com l'espace client] OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'identifiant permettant d'accéder à votre compte client correspond au sous-domaine de votre plateforme.&lt;br /&gt;
&lt;br /&gt;
Par exemple, si votre plateforme est référencée par l'adresse :&lt;br /&gt;
 http://mermoz.openflyers.fr&lt;br /&gt;
&lt;br /&gt;
Alors le sous-domaine est '''mermoz'''.&lt;br /&gt;
&lt;br /&gt;
C'est donc '''mermoz''' qu'il faut utiliser comme identifiant pour vous connecter au .&lt;br /&gt;
&lt;br /&gt;
Si vous n'avez pas le mot de passe, vous pouvez le réactiver avec la fonction '''Mot de passe oublié ?''' qui est sur la page d'identification.&lt;br /&gt;
&lt;br /&gt;
Une adresse e-mail vous sera demandée. Vous pourrez saisir l'adresse e-mail de la structure aéronautique ou celle du contact qui ont été saisies dans la fiche client (il s'agit des adresses e-mails sur lesquelles sont envoyées nos e-mails d'alerte de renouvellement ou d'information).&lt;br /&gt;
&lt;br /&gt;
Dans le but de ne pas être submergés par les demandes, nous facturons la ré-initialisation manuelle, par nos soins, du mot de passe ou la mise à jour des adresses e-mails présentes sur la fiche client pour les abonnement First Price (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
&lt;br /&gt;
==Changer de responsable en charge d'OpenFlyers==&lt;br /&gt;
Lorsqu'il y a un changement de responsable en charge d'OpenFlyers, pour que la passation se passe dans les meilleures conditions, il faut penser à effectuer les 3 changements suivants :&lt;br /&gt;
*Attribuer un profil d'administrateur de la plateforme OpenFlyers au niveau de la plateforme (procédure pour intervenir sur la fiche utilisateur pour la [[User-management3#Modifier_un_utilisateur|version 3]] ou la [[User-management4#Acc.C3.A9der_.C3.A0_l.27interface_de_gestion_des_utilisateurs|version 4]])&lt;br /&gt;
*Mettre à jour le champ du responsable OpenFlyers au niveau de la plateforme (procédure pour la [[AdminDoc3#Responsable_OpenFlyers|version 3]] et la [[AdminDoc4#Responsable_OpenFlyers|version 4]]).&lt;br /&gt;
*Mettre à jour le nom du responsable OpenFlyers au niveau de la fiche client en effectuant la procédure suivante :&lt;br /&gt;
**[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client OpenFlyers]]&lt;br /&gt;
**Aller dans '''Fiche contact'''&lt;br /&gt;
**Mettre à jour la fiche&lt;br /&gt;
**Cliquer sur le bouton '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Dans le cas où la passation ne peut pas se faire ainsi car l'ancien responsable OpenFlyers ne peut pas effectuer ces opérations ou transmettre les couples (identifiants, mots de passe) au nouveau responsable pour qu'il effectue ces opérations, vous pouvez nous demandez, uniquement par e-mail, d'effectuer ces changements de responsable OpenFlyers, en joignant à l'e-mail :&lt;br /&gt;
*Un courrier signé du responsable de la structure (gérant, président, etc.) contenant la demande de mise à jour du responsable OpenFlyers désigné et indiquant explicitement le nom du nouveau responsable avec son adresse e-mail&lt;br /&gt;
*Une copie d'un document officiel (extrait K-BIS, procès-verbal d'assemblée générale, etc.) permettant de prouver la qualité du responsable de la structure.&lt;br /&gt;
Le courrier scanné n'est pas nécessaire dans le cas où le nouveau responsable OpenFlyers apparait sur l'extrait K-BIS.&lt;br /&gt;
&lt;br /&gt;
'''Attention :''' dans le cas d'une société, le responsable de la structure doit détenir plus de la moitié des parts dans la société. Dans le cas où il y a cogérance, alors il faut que le courrier soit signé de l'ensemble des responsables de sorte à représenter plus de la moitié des parts de la société.&lt;br /&gt;
&lt;br /&gt;
==Mettre à jour sa fiche client==&lt;br /&gt;
*[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter à l'espace client]]&lt;br /&gt;
*Cliquer sur le menu '''Fiche contact'''&lt;br /&gt;
*Mettre à jour le contenu des champs concernés&lt;br /&gt;
*Cliquer sur le bouton valider&lt;br /&gt;
''Conseil OpenFlyers :'' Il est fortement recommandé d'avoir 2 adresses e-mails différentes pour les champs '''E-mail client''' et '''E-mail contact'''&lt;br /&gt;
&lt;br /&gt;
==Migrer vers une nouvelle version OpenFlyers==&lt;br /&gt;
Chez OpenFlyers, nous parlons de migration vers une nouvelle version lorsqu'il s'agit de mettre à jour une plateforme d'une version X vers une version Y incluant des changements majeurs.&lt;br /&gt;
&lt;br /&gt;
Par contre, il existe les mises à jours. Les mises à jour ne changent pas le numéro de version principal (exemple : 3.2 ou 3.5 correspondent à la même version principale). OpenFlyers effectue ces mises à jour automatiquement. Leur objectif est de corriger des bugs ou de rajouter de nouvelles fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
Hormis pour les abonnements Première, qui disposent d'une plateforme avec une version gelée et indépendante d'OpenFlyers, toutes les autres plateformes OpenFlyers sont sur un moteur commun qui est mis à jour de façon transparente plusieurs fois par semaine, voir même par jour.&lt;br /&gt;
&lt;br /&gt;
Nous ne présentons ci-dessous que les migrations &amp;quot;majeurs&amp;quot; qui peuvent impliquer des opérations de nettoyage manuel post-migration.&lt;br /&gt;
&lt;br /&gt;
===Coût d'une migration===&lt;br /&gt;
Lorsque vous êtes en production sur une version X d'OpenFlyers, vous pouvez demander à migrer vers la dernière version stable proposée aux nouveaux clients ou même vers la dernière version en développement dénommée &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; (par exemple &amp;quot;version 3.0alpha&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Les migrations sont incluses dans le support des abonnement Business, Première et Corporate.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un abonnement First Price, la migration est facturée 50 € HT sauf dans le cas d'une migration vers une version alpha ou beta ou depuis vers une version alpha ou beta vers la version stable suivante. Exemple de migrations offertes en abonnement First Price :&lt;br /&gt;
*Migration depuis la version 3.0alpha vers la version 3&lt;br /&gt;
*Migration depuis la version 3.5 vers la version 4.0alpha&lt;br /&gt;
*Migration depuis la version 4.0alpha vers la version 4&lt;br /&gt;
&lt;br /&gt;
Certaines migrations peuvent induire des opérations de nettoyage à effectuer manuellement. Ces opérations sont prises en charge dans le cas des abonnements Business, Première et Corporate. Elles sont facturées dans le cas de l'abonnement First Price. La structure peut également effectuer elle-même les opérations de nettoyage dans le cas d'un abonnement First Price en suivant la [[Accueil#Proc.C3.A9dures_de_mont.C3.A9e_de_version|procédure de montée de version]] publiée par OpenFlyers. Exemple de procédure de nettoyage : [[Upgrade3|nettoyage suite à migration vers une version 3]].&lt;br /&gt;
&lt;br /&gt;
Enfin, dans le cas où la plateforme bénéficiait d'un ancien tarif, le fait de migrer implique le passage au tarif en vigueur au moment de la migration et à l'acquittement de la différence de tarif par rapport à l'ancien tarif.&lt;br /&gt;
&lt;br /&gt;
===Déroulement d'une migration===&lt;br /&gt;
#Il faut avoir pris connaissance des [[#Cons.C3.A9quences_d.27une_migration|conséquences d'une migration]] et accepter le fait qu'elle est irréversible&lt;br /&gt;
#Il faut éventuellement créer la ou les factures selon l'abonnement déjà souscrit et l'abonnement souhaité (cf. [[#Co.C3.BBt_d.27une_migration|Coût d'une migration]] en [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|se connectant sur l'espace client]].&lt;br /&gt;
#Il faut payer les factures correspondantes ainsi créées.&lt;br /&gt;
#Il faut en faire la demande par e-mail et précisant la date avant laquelle vous ne souhaitez pas qu'on effectue de migration. Il n'est pas possible de programmer une date pour une migration : cela se fait en fonction de la synchronisation des disponibilités des différents collaborateurs d'OpenFlyers qui doivent intervenir à tour de rôle.&lt;br /&gt;
#Nous créons alors les factures liées à la migration, à la différence de tarif et au forfait paramétrage selon votre abonnement et les options souscrites (cf. le [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire]).&lt;br /&gt;
#Vous payez.&lt;br /&gt;
#Nous procédons alors à cette migration et nous fournissons une URL de substitution pendant une semaine pour palier les problèmes de cache DNS. Lors de la migration l'interruption de service est seulement de quelques minutes. Elle est donc transparente pour la quasi totalité des utilisateurs.&lt;br /&gt;
#Selon ce qui a été convenu nous effectuons ou le client effectue [[Upgrade3|le nettoyage lié au passage à la version 3]].&lt;br /&gt;
#Si vous avez souscrit au forfait paramétrage ou qu'il est inclut dans votre abonnement, nous vous envoyons un questionnaire pour le paramétrage. Cf. [[#Comment_fonctionne_le_forfait_param.C3.A9trage_.3F|Forfait paramétrage]]&lt;br /&gt;
&lt;br /&gt;
===Conséquences d'une migration===&lt;br /&gt;
*Toute migration est irréversible : nous ne créons pas de script permettant de revenir vers une version antérieure. En effet, nous effectuons des migrations &amp;quot;cachées&amp;quot; plusieurs fois par semaine qui constituent des corrections de bugs ou l'ajout de nouvelles fonctionnalités. De ce fait, notre exploitation est organisée pour pouvoir palier à un défaut apparaissant à l'issue d'une migration tout comme elle est organisée pour faire face à l'apparition d'un nouveau bug lors d'une mise à jour transparente.&lt;br /&gt;
*Attention notamment à une migration vers une version &amp;quot;alpha&amp;quot; ou &amp;quot;beta&amp;quot; : en effet, une migration vers cette version implique que vous acceptiez de fonctionner sur une version qui évolue sans cesse. Outre les corrections de bugs, nous rajoutons sur la version beta régulièrement des fonctionnalités qui peuvent créer de nouvelles anomalies. Bien entendu, nous faisons le nécessaire dès que nous avons connaissance d'un problème (notamment par le [http://bts.openflyers.org BTS] pour résoudre les défauts. C'est d'ailleurs grâce aux clients volontaires pour fonctionner sur la version beta que nous pouvons faire évoluer le produit.&lt;br /&gt;
*Après une migration, il peut être nécessaire de forcer le rafraichissement du &amp;quot;cache&amp;quot; du navigateur en appuyant sur CTRL+R (ou icône &amp;quot;Actualiser&amp;quot; ou &amp;quot;Rafraichir&amp;quot; suivant les navigateurs) afin d'obliger le navigateur à charger en mémoire les scripts qui correspondent à la nouvelle version.&lt;br /&gt;
*De même, l'accès à la plateforme via son URL peut ne pas fonctionner pendant 1 ou 2 jours du fait des serveurs disposant de &amp;quot;caches DNS&amp;quot;. Afin de palier à ce défaut, nous fournissons une URL de substitution pendant une semaine qui permet quand même d'accéder à la plateforme.&lt;br /&gt;
*Le temps d'indisponibilité d'accès à la plateforme est de l'ordre de quelques minutes en général. Il est donc transparent pour la plupart des utilisateurs. Par contre, s'il y a un travail de nettoyage post-migration à effectuer par OpenFlyers, ce nettoyage peut durer plusieurs heures. Il n'empêche pas l'utilisation de la plateforme.&lt;br /&gt;
&lt;br /&gt;
==Ajouter une ressource à son abonnement OpenFlyers==&lt;br /&gt;
L'abonnement OpenFlyers est calculé en fonction du nombre de ressources. Le nombre est déterminé pour l'année civile complète.&lt;br /&gt;
&lt;br /&gt;
Si vous voulez rajouter une ressource en cours d'année, alors vous devez [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|vous connecter sur l'espace client OpenFlyers]] et créer une facture d'ajout de ressource en indiquant le nombre de ressources supplémentaires. Le tarif appliqué sera alors celui de l'année complète.&lt;br /&gt;
&lt;br /&gt;
Une fois le paiement de la facture correspondante acquitté, il sera possible d'intervenir sur la plateforme concernée pour rajouter la ressource. Il y alors 2 cas possible :&lt;br /&gt;
*C'est une ressource dont les tarifs correspondent à un type de ressource déjà présent sur la plateforme concernée. Dans ce cas, l'opération est relativement simple et nous conseillons de suivre soi-même la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]].&lt;br /&gt;
*C'est une ressource qui nécessite la création d'un nouveau type de ressource avec de nouveaux tarifs : dans ce cas, l'opération est plus complexe. Elle peut être effectuée de façon autonome en suivant la [[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|procédure de création ci-dessous]] et en procédant par comparaison avec les types de ressources existantes. Cependant, si vous souhaitez éviter tout risque d'erreur, nous recommandons de nous confier cette tâche en nous communiquant les éléments comme lors de la mise en place du paramétrage par nos soins à l'aide du questionnaire. Nous décomptons notre intervention des heures de bonus assistance/développement à hauteur d'une heure.&lt;br /&gt;
&lt;br /&gt;
===Créer une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#Ajouter_un_avion|Ajouter un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#Ajouter_un_a.C3.A9ronef|Ajouter un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#Ajouter_une_ressource|Ajouter une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#Ajouter_une_ressource|Ajouter une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Enlever une ressource à son abonnement OpenFlyers==&lt;br /&gt;
Si vous enlevez une ressource en cours d'année, il n'y a aucun changement d'abonnement puisque les ressources sont souscrites pour toute l'année.&lt;br /&gt;
&lt;br /&gt;
===Désactiver une ressource sur sa plateforme OpenFlyers===&lt;br /&gt;
*[[AdminDoc1.2#D.C3.A9sactiver_un_avion|Désactiver un avion avec la version 1.3 d'OpenFlyers]]&lt;br /&gt;
*[[AdminDoc2.1#D.C3.A9sactiver_un_a.C3.A9ronef|Désactiver un aéronef avec la version 2.1 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management3#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 3 d'OpenFlyers]]&lt;br /&gt;
*[[Resource-management4#D.C3.A9sactiver_une_ressource|Désactiver une ressource avec la version 4 d'OpenFlyers]]&lt;br /&gt;
&lt;br /&gt;
==Remplacer une ressource par une autre dans son abonnement OpenFlyers==&lt;br /&gt;
S'il y a un remplacement de ressource, alors il n'y a pas besoin d'acquitter un nouvel abonnement pour la nouvelle ressource : il suffit de [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver l'ancienne ressource]] avant d'[[#Cr.C3.A9er_une_ressource_sur_sa_plateforme_OpenFlyers|activer la nouvelle]].&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'un remplacement temporaire, il peut être aussi simple de simplement renommer la ressource concernée (immatriculation par exemple). A noter que dans ce cas, les statistiques totaliseront l'activité des 2 ressources en 1 seule.&lt;br /&gt;
&lt;br /&gt;
Si vous ne souhaitez pas désactiver cette ressource, alors vous pouvez [[#Ajouter_une_ressource_.C3.A0_son_abonnement_OpenFlyers|créer une facture complémentaire d'abonnement pour une ressource supplémentaire]].&lt;br /&gt;
&lt;br /&gt;
==Renouveler son abonnement OpenFlyers==&lt;br /&gt;
Pour renouveler l'abonnement, il faut :&lt;br /&gt;
#[[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|Se connecter]] sur le compte client OpenFlyers&lt;br /&gt;
#Créer la facture en fonction du choix d'abonnement (vous trouverez plus d'informations dans notre [http://www.openflyers.com/doc/catalogue-tarifaire.pdf catalogue tarifaire])&lt;br /&gt;
#Ensuite, payer soit :&lt;br /&gt;
#*par carte bancaire en cliquant sur le lien &amp;quot;paiement par carte bancaire&amp;quot; (le choix le plus pratique pour une prise en compte immédiate)&lt;br /&gt;
#*par transfert bancaire (dans ce cas, vous devez prendre en charge tous les frais liés à la transaction). Les coordonnées bancaires sont indiquées sur la facture.&lt;br /&gt;
#*par chèque (attention au délai d'acheminement du courrier)&lt;br /&gt;
&lt;br /&gt;
===Variation du nombre de ressources lors du renouvellement===&lt;br /&gt;
Lors du renouvellement, le nombre minimum de ressources proposées, dans l'interface de renouvellement de l'abonnement, correspond au nombre de ressources activées dans la plateforme OpenFlyers.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez augmenter le nombre de ressources pour l'année suivante, il suffit de modifier la valeur proposée par défaut.&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez diminuer le nombre de ressources pour l'année suivante, il faut [[#D.C3.A9sactiver_une_ressource_sur_sa_plateforme_OpenFlyers|désactiver des ressources dans la plateforme OpenFlyers]] afin que le nombre proposé par défaut diminue avant de créer la facture de renouvellement d'abonnement.&lt;br /&gt;
&lt;br /&gt;
==Plateforme supplémentaire de test==&lt;br /&gt;
Cette fonctionnalité disponible que pour les clients étant au moins sous la version 3.5 d'OpenFlyers, est utile dans le cas où vous souhaitez :&lt;br /&gt;
*effectuer des tests sur une recopie de la plateforme de démonstration.&lt;br /&gt;
*effectuer des tests sur une recopie de votre propre plateforme et ainsi modifier son paramétrage sur une version [[Wikipedia-fr:Sandbox_(sécurité_informatique)|sandbox]] sans impacter la version de production.&lt;br /&gt;
*essayer la version 4 d'OpenFlyers&lt;br /&gt;
&lt;br /&gt;
Pour cela, il faut :&lt;br /&gt;
*Se connecter sur son [[#Acc.C3.A9der_.C3.A0_son_compte_client_OpenFlyers|compte client]]&lt;br /&gt;
*Aller dans le menu '''Plateforme'''&lt;br /&gt;
* Plusieurs choix sont proposés :&lt;br /&gt;
** Si vous êtes sous la version 3.5 :&lt;br /&gt;
*** '''De demo.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de la plateforme démo avec suppression du message d'accueil &amp;quot;La base de données cette plateforme de démonstration est réinitialisée toutes les heures, vers XX:45&amp;quot;.&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.of4.openflyers.fr''' : Permet de créer une plateforme d'essai sous la version 4 d'OpenFlyers en effectuant une recopie de votre plateforme existante puis en faisant une montée de version sur cette recopie&lt;br /&gt;
** Si vous êtes sous la version 3.5 ou supérieure :&lt;br /&gt;
*** '''De acbd.openflyers.fr vers acbd.test.openflyers.fr''' : Permet de créer une plateforme de test en effectuant une recopie de votre plateforme existante&lt;br /&gt;
* Cliquer sur '''Valider'''&lt;br /&gt;
&lt;br /&gt;
Si votre plateforme est référencée par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme de test se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.test.openflyers.fr&amp;lt;/pre&amp;gt;&lt;br /&gt;
L'accès à la plateforme d'essai de la version 4 d'OpenFlyers se fait par l'adresse :&lt;br /&gt;
&amp;lt;pre&amp;gt;http://acbd.of4.openflyers.fr&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Claratte</name></author>	</entry>

	</feed>