Module pour importation : Différence entre versions

Aller à : navigation, rechercher
(Formule de rapprochement)
(Import des utilisateurs)
Ligne 283 : Ligne 283 :
 
#Dans le champ '''Séparateur de texte''', vider le contenu en laissant le focus sur l'ensemble des données et en utilisant la touche Suppr
 
#Dans le champ '''Séparateur de texte''', vider le contenu en laissant le focus sur l'ensemble des données et en utilisant la touche Suppr
 
#Cliquer sur le bouton '''OK'''.
 
#Cliquer sur le bouton '''OK'''.
 +
 +
==Import des dates de naissance==
 +
L'import suivant nécessite la construction d'un fichier csv avec les numéros d'identifiants OpenFlyers des utilisateurs obtenus grâce à l'export de la liste des utilisateurs.
 +
 +
On part sur la base d'un fichier CSV ayant cette structure :
 +
<pre>idopenflyers;naissance
 +
251;1956-12-07</pre>
 +
 +
===Création de l'import des dates de naissance===
 +
Dans '''Admin > Utilisateurs > Imports > Créer/Modifier''' :
 +
*Cliquer sur '''Ajouter'''
 +
*Mettre comme intitulé "Import des dates de naissance"
 +
*Mettre comme [[#Formule_de_rapprochement|formule de rapprochement]] :
 +
<sql>person::#idopenflyers=person.id</sql>
 +
*Mettre comme [[#Formule_de_test_de_mise_.C3.A0_jour|formule de test de mise à jour]] :
 +
<sql>SELECT person.id, 1
 +
FROM person</sql>
 +
*Mettre comme [[#Formule_de_mise_.C3.A0_jour|formule de mise à jour]] :
 +
<sql>UPDATE person SET birthdate="#naissance" WHERE person.id=$person_id;</sql>
 +
*Valider
 +
  
 
==Import des utilisateurs==
 
==Import des utilisateurs==

Version du 11 novembre 2014 à 18:59

Sommaire

Présentation

Cette fonction est disponible à partir de la version 3.0.

Le module d'import permet d'importer et de synchroniser de manière automatique la table des utilisateurs OpenFlyers ainsi que leurs validités à partir d'un fichier externe.

/!\ : Le module d'import n'est pas fonctionnel sous le navigateur Internet Explorer. Il est recommandé d'utiliser un autre navigateur pour utiliser ce module.

Ce module trouve notamment son application pour la synchronisation avec le fichier SMILE de la Fédération Française Aéronautique.

Ce module est décomposé en 3 étapes :

  1. Le rapprochement qui permet de faire correspondre les lignes d'un fichier à importer avec la base de données OpenFlyers
  2. Le test de mise à jour qui permet de déterminer, pour les lignes rapprochées, si une mise à jour de la ligne correspondante dans la base OpenFlyers est préconisée ou non
  3. La mise à jour qui effectue des requêtes déterminées dans la base OpenFlyers pour les lignes qui ont été déterminées comme devant être mises à jour

Le processus d'import peut fonctionner de façon complétement automatique (via une synchronisation journalière à partir d'une source de données extérieure accessible via internet), de façon semi-automatique (la récupération des données est transparente et déclenchée par une simple validation sur un bouton, puis un tableau liste les lignes à synchroniser et une nouvelle validation permet de déclencher la mise à jour) ou de façon complétement manuellement (la récupération des données se fait alors par upload manuel et les lignes à mettre à jour peuvent être sélectionner ou dé-sélectionner manuellement).

Il est vivement conseiller d'éditer son fichier d'import pour remplacer tous les caractères accentués et les apostrophes présents dans les noms des colonnes.

Formule de rapprochement

Le but est de trouver les utilisateurs se trouvant dans la base de données ayant des données semblables à ceux se trouvant dans le fichier. Nous allons donc compléter une formule de rapprochement pour effectuer cela.

Nous allons faire un rapprochement sur le nom et le prénom par une égalité. La formule de rapprochement est donc :

person::stripChars(CONCAT(#nom,#prenom)) = stripChars(CONCAT(person.last_name,person.first_name))
  • #nom correspond au champ "Nom" du fichier.
    1. prenom correspond au champ "Prénom" du fichier.

Ces variables sont affichées sur le tableau, en seconde ligne d'entête.

stripChars est une fonction permettant de retirer tout ce qui est tiret et espace d'un nom afin de faire un meilleur rapprochement entre le fichier et la base de données.

Lors d'un import, des lignes rouges du tableau généré passeront en orange. Les lignes oranges représenteront les utilisateurs rapprochés.

Formule de test de mise à jour

Une fois que nous avons les utilisateurs rapprochés, nous allons appliquer un autre filtrage : nous voulons les utilisateurs ayant une validité X qui a expiré. Il est possible d'utiliser des variables comme $validityId (en supposant que la variable $validityId a été précédemment créée et qu'une valeur lui a été affecté).

La requête de filtrage, appelée formule de test de mise à jour, est ainsi :

SELECT person.id, IF(validity.expire_date > '2010-12-31',1,0)
FROM person
LEFT JOIN validity
ON validity.person_id=person.id
WHERE validity.validity_type_id=$validityId

Le résultat fera rafraîchir le tableau généré. Des lignes oranges passeront en couleur verte et seront automatiquement cochées. Ces lignes vertes représentent les utilisateurs dont leur validité a expirée.

Ainsi, nous nous retrouvons avec 3 couleurs possibles qui correspondent à un code couleur.

Formule de mise à jour

Ensuite, nous allons mettre à jour les validités de ces utilisateurs. Nous laissons le tableau comme tel, nous ne cocherons ou décocherons aucune ligne. Seules les lignes vertes seront mises à jour (si une ligne orange est cochée manuellement, elle passera en verte pour indiquer quelle sera affectée par la mise à jour).

Nous supposons que la variable $validityId a déjà été créée et qu'elle correspond à la validité "FFA". La variable $person_id prendra l'id de l'utilisateur en base (c'est une variable prédéfinie dans notre moteur). La formule de mise à jour qui va être utilisée est :

INSERT INTO `validity` (`person_id`, `validity_type_id`, `expire_date`, `ident_value`)
VALUES ('$person_id', '$validityId', '2011-12-31', '#nlicence')
ON DUPLICATE KEY UPDATE `expire_date` = '2011-12-31', `ident_value` = #nlicence;

Cette requête va mettre à jour la date d'expiration de la validité X choisie des utilisateurs (représentés en ligne verte sur le tableau). Si un utilisateur ne possédait pas de validité X, celle-ci lui sera créée en lui complétant le numéro de licence (variable #nlicence, la valeur est récupérée depuis le tableau généré).

Un retour de message alertera du nombre de validités mises à jour : ce nombre sera de 0 au minimum et du nombre de lignes vertes cochées au maximum. S'il y avait 5 lignes vertes et que l'alerte nous indique que 4 validités seulement ont été mises à jour, cela signifie que la validité d'un utilisateur n'avait pas besoin d'être remise à jour.

Tableau de synchronisation

Code couleur

Les lignes du tableau de synchronisation peuvent avoir 3 couleurs :

  • vert-sélectionnée par défaut : rapprochement effectué, mise à jour recommandée
  • rouge-non sélectionnable : rapprochement impossible : impossible d'associer la ligne du fichier importé avec une entrée utilisateur en base de données
  • orange-sélectionnable mais non sélectionnée par défaut : rapprochement effectué, mais mise à jour non préconisée (l'utilisateur est déjà à jour)

Mise en place de requêtes d'import pour SMILE

Nous partons sur la base d'un fichier CSV à importer qui a cette structure :

"N° licence";"Date de saisie";"Code renouvellement";"Date renouvellement";"Nom";"Prénom";"Date de naissance";"Sexe";
417965;02/01/10;"OK-RAC";02/01/10;"DUPONT";"CHRISTOPHE";26/02/70;"M";

Le but est de mettre à jour la validité "Licence FFA" que nous allons créer pour chacun des utilisateurs renseignés dans ce fichier.

La synchronisation peut s'opérer de 2 façons possibles selon le processus défini au sein de la structure aéronautique :

  1. Si les adhérents paient directement la FFA (chèque à l'ordre de la FFA), alors aucun mouvement comptable n'est à enregistrer dans OpenFlyers. Il en est de même, si OpenFlyers ne gère pas la comptabilité de la structure aéronautique. Dans ces cas de figure, la synchronisation consiste simplement à mettre à jour la validité FFA.
  2. Si les adhérents paient leur cotisation FFA à la structure aéronautique (chèque à l'ordre de la structure aéronautique) et que la gestion des comptes pilotes est faite dans OpenFlyers, alors il faut enregistrer en comptabilité les mouvements permettant de suivre les flux financiers.

Dans les 2 cas, certaine opération ne change pas : la "prise de licence FFA" devra être saisie dans SMILE. Cette opération peut être soit réalisée par l'adhérent lui-même soit centralisée par la structure aéronautique (auquel cas, les adhérents doivent remplir un formulaire papier).

De plus, afin de mieux sécuriser le rapprochement des bases de données, nous préconisons d'effectuer un premier rapprochement sur les couples (nom, prénom) afin de générer les validités "licence FFA" puis d'effectuer les opérations de mise à jour non plus sur ces couples mais sur le numéro de licence FFA.

Actions communes

Création de la validité "licence FFA"

Dans Admin > Types de validités :

  • En bas de la page, dans le champ texte à gauche du bouton Ajouter un type de validité, renseigner "Licence FFA"
  • Cliquer sur le bouton Ajouter un type de validité
  • Activer pour ce type de validité l'option Soumise à échéance (permet de renseigner la date butoir de cette validité)
  • Activer pour ce type de validité l'option Gestion du code identifiant (permet de renseigner le numéro de licence FFA)
  • Éventuellement activer Validité bloquante pour la saisie des vols (intéressant uniquement en mode ouverture+fermeture de vols)

Création des autres "validités FFA"

Dans le cas où le but est uniquement de contrôler que l'adhérent est à jour de sa cotisation, il n'est pas indispensable de créer les autres "validités FFA". C'est néanmoins recommandé car cela permet d'avoir une visibilité aussi bien pour l'adhérent que pour les gestionnaires sur ces éléments.

Donc, dans le cas où on crée les autres "validités FFA", il faut répéter l'opération de création de "licence FFA" pour les validités suivantes mais sans activer la Gestion du code identifiant :

  • Assurance IA FFA de base
  • Abonnement INFO-PILOTE
  • Assurance FFA Plus option A
  • Assurance FFA Plus option B
  • RC Instructeurs FI-FE
  • Assurance individuelle FI-FE

Création du champ additionnel "licenceFFAId"

Dans Admin > Utilisateurs > Imports > Champ(s) additionnel(s) :

  • Renseigner Nom (le champ précédé d'un $) avec "licenceFFAId"
  • Renseigner Intitulé avec "licence FFA"
  • Renseigner Type de valeur avec dbObject::ValidityType
  • Cliquer sur Ajouter

Création des autres champs additionnels "FFA"

Dans le cas où les autres types de validités FFA ont été créées, il faut alors également créer les autre champs additionnels suivants sur le modèle du champ additionnel "licenceFFAId" :

  • AssuranceIAFFAId
  • AbonnementIPId
  • AssuranceFFAAId
  • AssuranceFFABId
  • RCInstructeurId
  • AIInstructeurId

Paramétrage des imports des numéros de licence FFA

Dans Admin > Utilisateurs > Imports > Créer/Modifier :

  • Cliquer sur Ajouter
  • Mettre comme intitulé "Import des numéros de licence FFA"
  • Mettre comme formule de rapprochement :
person::stripChars(CONCAT(#nom,#prenom)) = stripChars(CONCAT(person.last_name,person.first_name))
SELECT person.id, 1
FROM person
LEFT JOIN merge_data ON person.id=merge_data.person_id
LEFT JOIN validity ON merge_data.person_id=validity.person_id AND validity.validity_type_id=$licenceFFAId
WHERE merge_data.person_id IS NOT NULL
INSERT INTO validity (person_id, validity_type_id, ident_value, expire_date )
VALUES ('$person_id', '$licenceFFAId', '#nlicence', '2010-12-31')
ON DUPLICATE KEY UPDATE `ident_value` = '#nlicence';
  • Sélectionner Licence FFA pour $licenceFFAId (licence FFA)
  • Répéter cette mise en correspondance pour les autres champs
  • Valider

Import des numéros de licence FFA

  • Exporter côté SMILE l'exercice de l'année.
  • Retourner dans OpenFlyers
  • Aller dans Admin > Utilisateurs > Imports > Import des numéros de licence FFA
  • Sélectionner ISO-8859-1 dans le champ Jeu de caractère CSV par défaut
  • Cliquer sur l'icône Importer à droite du champ
  • Sélectionner le fichier précédemment exporté depuis SMILE

ImportFFASelect.png

  • Patienter une quinzaine de secondes (une icône animée aide à cela)
  • Lorsque le tableau s'affiche (avec normalement quasiment que des lignes vertes), noter les noms des personnes sur les lignes rouges (il s'agit de personnes qui n'ont pas pu être rapprochées: écriture du nom ou du prénom différemment) et pour lesquelles il faudra justement créer à la main la validité "licence FFA" pour les rapprochements ultérieurs

LicenceFFAList.png

  • Aller tout en bas du tableau et cliquer sur le bouton Mettre à jour
  • Il ne reste plus qu'à aller dans Utilisateurs > Types de validités, cliquer sur l'icône Liste du type de validité "Licence FFA" pour vérifier que tout c'est bien passé : chaque adhérent doit disposer maintenant d'une validité "licence FFA" avec son numéro de licence FFA et une date d'échéance au 31/12/2010.

Exporter depuis SMILE

  • Se connecter à SMILE en tant que "club"
  • Aller dans Exportation de données > liste complète des licenciés
  • Cocher Licenciés récents
  • Cliquer sur l'icône Excel
  • Puis, depuis OpenOffice ou Excel, enregistrer l'export excel sous csv avec comme séparateur ";"

Mise à jour simple de la validité "licence FFA"

Les actions communes doivent avoir été réalisées au préalable.

Synchronisation de la validité "licence FFA" et génération des écritures comptables associées

Le but est de facturer l'achat et/ou le renouvellement de la validité "Licence FFA" pour chacun des adhérents concernés en plus de la mise à jour de leur validité "licence FFA".

Les actions communes doivent avoir été réalisées au préalable.

Procédure de création de tarification

Création du compte fournisseur "FFA"

Dans Admin > Comptes > Lister les comptes > Comptes fournisseur :

  • Renseigner Nom avec "FFA"
  • Renseigner Compte d'export avec "401FFA"
  • Cliquer sur Ajouter

Création des types de vente

Dans Admin > Ventes > Types de vente, créer le type de vente "Licence FFA" :

  • Renseigner Nom avec "Licence FFA"
  • Laisser Unité sur Sans unité
  • Laisser Echelle de précision sur 0
  • Ne pas activer l'option Vente libre : cela donnerait la possibilité aux adhérents d'acheter directement la validité "licence FFA" par le biais d'OpenFlyers alors qu'il faut forcément faire une saisie dans SMILE pour que celle-ci soit prise en compte par la FFA.
  • Cliquer sur Ajouter
  • Répéter cette opération de création avec les types de vente suivant :
    • Abonnement INFO-PILOTE
    • Assurance FFA Plus option A
    • Assurance FFA Plus option B
    • Assurance IA FFA de base
    • Assurance individuelle FI-FE
    • RC Instructeurs FI-FE

Création des ventes

  • Si cela n'est pas fait, activer le droit vente pour tous pour le profil utilisé pour cette mise en place

Dans Admin > Ventes > Tarification des ventes, créer la vente "Licence FFA" :

  • Cliquer sur Ajouter une ligne de tarification
  • Renseigner Nom par "Licence"
  • Renseigner Formule par le prix tarifaire. Par exemple, 1 (la valeur ne sera pas prise en compte dans l'import : c'est le tarif indiqué dans le fichier csv qui sera utilisé)
  • Sélectionner "Licence FFA" dans Type de vente
  • Sélectionner Compte membre en Type de compte à débiter
  • Sélectionner Compte fournisseur en Type de compte à créditer puis choisir "FFA" en Compte fournisseur à créditer
  • Cliquer sur Valider
  • Répéter cette opération pour les ventes :
    • Assurance IA FFA
    • Abonnement INFO-PILOTE
    • Assurance FFA Option A
    • Assurance FFA Option B
    • RC Instructeurs FI-FE
    • Assurance Individuelle Instructeur

Création des ventes de validités

Dans Admin > Ventes > Validités à vendre, créer la vente de validité "Licence FFA" :

  • Renseigner Tarification avec "Licence"
  • Renseigner Validité avec "Licence FFA"
  • Renseigner Formule de création avec la date d'échéance à mettre par défaut lors de l'achat de la validité. Par exemple "2011-12-31" (format anglo-saxon)
  • Renseigner Formule de mise à jour avec la date d'échéance à mettre par défaut lors du renouvellement de validité. Par exemple "2011-12-31" (format anglo-saxon)
  • Cliquer sur Ajouter
  • Répéter cette opération pour les ventes de validités :
    • Assurance IA FFA
    • Abonnement INFO-PILOTE
    • Assurance FFA Option A
    • Assurance FFA Option B
    • RC Instructeurs FI-FE
    • Assurance Individuelle Instructeur

Une validité ne peut être associée qu'à une seule règle de tarification.

Création de l'import SMILE avec tarification

Dans Admin > Utilisateurs > Imports > Créer/Modifier :

  • Cliquer sur Ajouter
  • Mettre comme intitulé Import SMILE avec écritures comptables
  • Mettre comme formule de rapprochement :
validity::TRIM(LEADING '0' FROM #nlicence) = validity.ident_value 
SELECT person.id, IF(validity.expire_date < '2011-01-01' OR validity.expire_date IS NULL,1,0)
FROM person
LEFT JOIN validity ON validity.person_id=person.id
WHERE validity.validity_type_id=$licenceFFAId
UNION ALL
SELECT person.id, 1
FROM person
LEFT JOIN  validity ON validity.person_id=person.id AND validity_type_id=$licenceFFAId
WHERE validity_type_id IS NULL
CALL saleValidity($licenceFFAId, $person_id, '#lic');
CALL saleValidity($AssuranceIAFFAId, $person_id, '#assuranceiadebase');
CALL saleValidity($AbonnementIPId, $person_id, '#abonnementinfopilote');
CALL saleValidity($AssuranceFFAAId, $person_id, '#ffaplusoptionacapitalde50000');
CALL saleValidity($AssuranceFFABId, $person_id, '#ffaplusoptionbcapitalde100000');
CALL saleValidity($RCInstructeurId, $person_id, '#rcinstructeursfife');
CALL saleValidity($AIInstructeurId, $person_id, '#assuranceindividuellefife');
  • Sélectionner "Licence FFA" pour "$licenceFFAId (licence FFA)"
  • Répéter cette mise en correspondance pour les autres champs
  • Valider

Import de données

Mise au propre du fichier de données

Mettre au propre les données à importer avec un des logiciels suivant, LibreOffice, OpenOffice ou Excel :

  1. Supprimer les accents des titres de toutes les colonnes.
  2. Supprimer les colonnes vides.
  3. Remplacer les majuscules par des minuscules dans les titres.
  4. Dans toutes les cellules, supprimer les espaces malencontreusement ajoutés avant ou après les mots
  5. Rajouter un anti-slash "\" devant tous les apostrophes avec l'outil "rechercher/remplacer" du logiciel utilisé. Supprimer les apostrophes des titres.
    • Exemple de correction du format d'un titre : "Date d'expiration licence privée" devient "date expiration licence privee".
  6. Mettre les données de la colonne "nationalite" au format FR pour française, EN pour anglaise, etc.
  7. Mettre les données de la colonne "sexe" au format M pour masculin et F pour féminin.
  8. Ajouter les colonnes "etat" et "pays" si elles n'existent pas.
  9. Modifier les dates au format anglo-saxon "yyyy-MM-dd" en modifiant le format des cellules.
  10. Pour les colonnes correspondant à des validités, remplacer les données "Oui/Non" par des dates, dans la mesure du possible.
    • Pour une colonne "cotisation a jour", remplacer les "Oui" par la date d'échéance des cotisation de l'année en cours c'est à dire le 31 décembre de l'année N.
    • Remplacer les "Non" par le 31 décembre de l'année précédente N-1.
  11. Pour la colonne du solde des comptes pilotes, passer les cellules au format "Texte" puis rechercher et remplacer les virgules "," en points "."
  12. Enregistrer le fichier sous le format CSV et le dupliquer.
  13. Supprimer le caractère spécial & présent dans le document importé

Export du fichier de données avec OpenOffice

Une fois que l'onglet contenant les données à exporter est mis au propre :

  1. Garder l'onglet à exporter de visible
  2. Fichier > Enregistrer sous...
  3. Choisir le répertoire et le nom de fichier
  4. Sélectionner dans le champ Type "Texte CSV (.csv)"
  5. Cocher le champ Éditer les paramètres du filtre
  6. Cliquer sur le bouton Enregistrer
  7. Dans le champ Jeu de caractères, sélectionner "Unicode (UTF-8)"
  8. Dans le champ Séparateur de champs, sélectionner ";"
  9. Dans le champ Séparateur de texte, vider le contenu en laissant le focus sur l'ensemble des données et en utilisant la touche Suppr
  10. Cliquer sur le bouton OK.

Import des dates de naissance

L'import suivant nécessite la construction d'un fichier csv avec les numéros d'identifiants OpenFlyers des utilisateurs obtenus grâce à l'export de la liste des utilisateurs.

On part sur la base d'un fichier CSV ayant cette structure :

idopenflyers;naissance
251;1956-12-07

Création de l'import des dates de naissance

Dans Admin > Utilisateurs > Imports > Créer/Modifier :

person::#idopenflyers=person.id
SELECT person.id, 1
FROM person
UPDATE person SET birthdate="#naissance" WHERE person.id=$person_id;
  • Valider


Import des utilisateurs

/!\ Les soldes doivent être importés après validation. Les écritures effectuées en période de test seront par la suite supprimées. Il est donc inutile d'importer les soldes deux fois.

On part sur la base d'un fichier CSV ayant cette structure :

nom;prenom;email;adresse postale;code postal;ville;etat;pays;telephone personnel;telephone portable;telephone professionnel;sexe;date naissance;nationalite
Dupont;Jean;jean.dupont@test.fr;1 rue Qui Vive;33000;Bordeaux;;France;0102030406;0606060606;;M;1960-05-14;FR
Durand;Pierre;pierre.durand@test.fr;;;;;;;;;;;FR

Remarques :

  • Les utilisateurs qui vont s'afficher en vert sont ceux qui n'existaient pas. Ceux en orange représentent ceux déjà existant.
  • Lors de l'ajout d'un nouvel utilisateur, l'identifiant créé automatiquement correspondra à la première lettre du prénom suivi du nom. Tout élément non alphanumérique sera éliminé de l'identifiant.
  • Le mot de passe par défaut sera l'identifiant
  • Lors de la mise à jour d'un utilisateur, seulement les données de leur fiche personnelle seront mis à jour (e-mail, adresse, numéro de téléphone, sexe, date de naissance, nationalité). Puis le profil à affecter sera ajouté en plus de ceux déjà existant.
  • Dans le fichier d'import :
    • Le format du sexe doit correspondre à "M" pour un homme et "F" pour une femme.
    • La date de naissance doit être au format "AAAA-MM-JJ".

Création de l'import des utilisateurs

Dans Admin > Utilisateurs > Imports > Créer/Modifier :

person::stripChars(CONCAT(#nom,#prenom)) = stripChars(CONCAT(person.last_name,person.first_name))
SELECT id, 0
FROM person
UNION
SELECT null, 1
createOrUpdateUser($person_id, '#prenom', '#nom', '#email', '#adressepostale', '#codepostal', '#ville', '#etat', '#pays', '#telephonepersonnel', '#telephoneportable', '#telephoneprofessionnel', '#sexe', '#datenaissance', '#nationalite');
  • Valider

Utilisation de l'import des utilisateurs

Dans Admin > Utilisateurs > Imports > Import des utilisateurs :

  • Sélectionner UTF-8 dans le champ Jeu de caractère CSV par défaut
  • Importer le fichier CSV pour détecter qui doit être remis à jour
  • Sélectionner les utilisateurs désirés
  • Cliquer sur Mettre à jour pour déclencher l'ajout ou la mise à jour des utilisateurs désirés

Import des validités

  • Dans l'autre fichier CSV, laisser les colonnes correspondant aux validités et supprimer toutes les autres sauf "nom", "prenom" et "numero licence ffa". Ces colonnes servent de repère pour affecter les validités aux bonnes personnes.
  • Aller dans Utilisateurs > Import > Créer/Modifier et ajouter "Import des validités". Cet import sera modifié pour chaque validité importée.
  • Pour ajouter les formules, se reporter au paragraphe d'import de la licence FFA.
  • Sélectionner le Type de validité correspondant à la colonne importée, à la fin du formulaire.
  • Valider puis aller dans le menu Utilisateurs > Import > Import des validités précédemment créé.
  • Importer le fichier CSV et vérifier que toutes les lignes soient de couleur verte.

Mise à jour des soldes des comptes Clients par écritures comptables

L'objectif de cet import est de permettre la mise à jour des soldes des comptes "Clients" en y générant des écritures comptables :

  • Un mouvement va débiter le compte "Clients" si le solde est négatif ou va créditer le compte "Clients" si le solde est positif
  • Une écriture de contre-partie va s'effectuer sur un autre compte qui sera à définir. On prendra comme exemple un compte bilan "Report à nouveau"

On part sur la base d'un fichier CSV ayant cette structure :

ID Openflyers;nom;prenom;solde
4;Dupont;Jean;100
5;Durand;Pierre;-150

Création du compte de bilan "Report à nouveau"

Dans Admin > Comptes > Lister les comptes > Comptes bilan. Sur la dernière ligne vide :

  • Renseigner Nom avec "Report à nouveau"
  • Renseigner Compte d'export avec "110000"
  • Cliquer sur le bouton Ajouter

Création du champ additionnel "Type de compte à mettre à jour"

Dans Admin > Utilisateurs> Imports > Champ(s) additionnel(s) :

  • Renseigner Nom (le champ précédé d'un $) avec "accountTypeId"
  • Renseigner Intitulé avec "Type de compte à mettre à jour"
  • Renseigner Type de valeur avec dbObject::AccountType
  • Cliquer sur Ajouter

Création du champ additionnel "Compte de contre-partie"

Dans Admin > Utilisateurs> Imports > Champ(s) additionnel(s) :

  • Renseigner Nom (le champ précédé d'un $) avec "compensationAccountId"
  • Renseigner Intitulé avec "Compte de contre-partie"
  • Renseigner Type de valeur avec dbObject::Account
  • Cliquer sur Ajouter

Création du champ additionnel "Date de flux"

Dans Admin > Utilisateurs> Imports > Champ(s) additionnel(s) :

  • Renseigner Nom (le champ précédé d'un $) avec "flowDate"
  • Renseigner Intitulé avec "Date de flux"
  • Renseigner Type de valeur avec date
  • Cliquer sur Ajouter

Création de l'import de mise à jour des soldes des comptes Clients via écritures comptable

Il faut créer ou avoir créé au préalable :

Dans Admin > Utilisateurs > Imports > Créer/Modifier :

  • Cliquer sur Ajouter
  • Mettre comme intitulé "Mise à jour des soldes des comptes Clients"
  • Mettre comme formule de rapprochement :
  • Dans le cas où on rapproche par le nom et le prénom :
person::stripChars(CONCAT(#nom,#prenom)) = stripChars(CONCAT(person.last_name,person.first_name))
person::#idopenflyers=person.id
SELECT person.id, 1
FROM person
LEFT JOIN account ON (account.owner_id=person.id AND account.category=2)
WHERE account.account_type=$accountTypeId
createAccountEntries($person_id, $accountTypeId, $compensationAccountId, '#balance', '$flowDate');
  • Sélectionner le type de compte Clients pour le champ $accountTypeId (Type de compte à mettre à jour)
  • Sélectionner le compte bilan "Report à nouveau" pour le champ $compensationAccountId (Compte de contre-partie)
  • Sélectionner la date des écritures pour le champ $flowDate (Date de flux)
  • Valider

Génération du fichier des utilisateurs dont le solde est à importer

Le fichier créé ci-dessous permet d'effectuer un import par numéro d'id OpenFlyers. Cette méthode garantie l'absence d'erreur d'import qui serait causée par une homonymie.

  • Créer le rapport Liste des utilisateurs pour import du solde suivant :
SELECT person.id AS idopenflyers, person.last_name, person.first_name, account_type.name AS account_type_name,
sumAccountEntry(account.id, '$endDateAccount') AS balance
FROM account
LEFT JOIN account_type ON (account.account_type=account_type.id)
LEFT JOIN person ON (account.owner_id=person.id)
WHERE account.category=2 AND account.activated=1
ORDER BY last_name, first_name
  • Exporter le rapport au format CSV

Il faut alors remplacer la colonne balance par les à nouveaux à importer en gardant le même format.

Utilisation de l'import de mise à jour des soldes des comptes Clients via écritures comptable

Attention : si les utilisateurs disposent de plusieurs comptes, il faut travailler sur un seul type de compte à la fois en filtrant la colonne des types de compte. Attention bis : l'import génère des écritures comptables à une date données qui vont venir s'ajouter aux écritures (et donc au solde existant). Dans le cas où les soldes initiaux sont à 0, il n'y a pas de difficulté : la valeur à importer de chaque compte doit correspondre au solde souhaité. Par contre, si les soldes initiaux ne sont pas à 0 ou s'il faut utiliser l'import pour corriger les effets de mauvaises écritures comptables qui ont été générées dans OpenFlyers, alors les valeurs à importer doivent être calculées de sorte à être la différence de la valeur entre le solde souhaité et le solde constaté.

  • Sauvegarder le fichier sous format csv avec la mise en forme adaptée pour OpenFlyers.
  • Vérifier avec un éditeur de texte (notepad par exemple) que le fichier ne contient que les lignes d'un type de compte donné
  • Aller dans Admin > Utilisateurs > Imports > Créer/Modifier
  • Cliquer sur l'icône d'édition symbolisant un crayon de la ligne Mise à jour des soldes des comptes CLIENTS par écritures comptables
  • Modifier le contenu du champ $accountTypeId (Type de compte à mettre à jour) pour qu'il corresponde au type de compte que l'on souhaite importer
  • Modifier le contenu du champ $compensationAccountId (Compte de contre-partie) pour qu'il corresponde au compte de contre-partie correspondant
  • Modifier le contenu du champ $flowDate (Date de flux) pour qu'il corresponde à la date comptable souhaitée
  • Cliquer sur le bouton Valider
  • Aller dans Admin > Utilisateurs > Imports > Mise à jour des soldes des comptes Clients via écritures comptable
  • Sélectionner UTF-8 dans le champ Jeu de caractère CSV par défaut
  • Importer le fichier CSV

Toutes les lignes doivent apparaitre en vert

  • Désélectionner les lignes que vous ne souhaitez pas importer
  • Cliquer sur Mettre à jour pour déclencher la mise à jour des comptes Clients des utilisateurs désirés

Attention : cette mise à jour est longue et peut prendre 2 à 3 minutes. Il se peut également qu'un bug de rafraichissement ne vous permette pas de constater que l'import est terminé. Il faut donc patienter au moins 2 minutes et ensuite tenter d'afficher la liste des comptes utilisateurs dans Comptes > Utilisateurs ou encore d'aller voir le compte de contre-partie.

Vérification finale

  • Dans le fichier Excel, faire la somme des soldes de tous les comptes importés et vérifier que cela correspond avec le solde du compte "Report à nouveau" dans Comptes > Lister les comptes > Bilan.