openCimetière 4.0 documentation¶
Note
Cette création est mise à disposition selon le Contrat Paternité-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-sa/2.0/fr/ ou par courrier postal à Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
Créé dans un groupe de l’ADULLACT en 2005, openCimetière se place dans un contexte de gestion difficile, dans ce secteur d’activité considéré comme peu stratégique par les décideurs et pourtant combien important pour le service public de proximité. Logiciel libre opérationnel depuis des années, openCimetière a été en septembre 2006 élu « projet du mois » sur la forge. http://www.openmairie.org/catalogue/opencimetiere
openCimetière est un outil souple et adaptable à toute collectivité quelle que soit sa taille. Les principales fonctions de l’application sont les suivantes :
- la gestion de la place (défunt) dans les concessions,
- la gestion des autorisations : concessionnaire et ayant droit,
- la gestion du terme de la concession : transfert de défunt, transfert à l’ossuaire,
- la gestion des concessions libres,
- la gestion des opérations funéraires,
- l’archivage systématique de l’ensemble des données pour constituer une mémoire commune.
Ce document a pour but de guider les utilisateurs et les développeurs dans la prise en main du projet. Bonne lecture et n’hésitez pas à venir discuter du projet avec la communauté à l’adresse suivante : https://communaute.openmairie.org/c/opencimetiere
Manuel de l’utilisateur¶
Manuel de l’utilisateur¶
Ergonomie¶
Ergonomie générale¶
L’application, sur la grande majorité des écrans, conserve ses composants disposés exactement au même endroit. Nous allons décrire ici le fonctionnement et l’objectif de chacun de ces composants. Cette structuration de l’application permet donc à l’utilisateur de toujours trouver les outils au même endroit et de se repérer rapidement.

Ergonomie générale
Note
Les actions et affichages de l’application diffèrent en fonction du profil de l’utilisateur. Il se peut donc que dans les paragraphes qui suivent des actions soient décrites et n’apparaissent pas sur votre interface ou inversement que des actions ne soient pas décrites mais apparaissent sur votre interface.
Le logo¶
C’est le logo de l’application, il vous permet en un seul clic de revenir rapidement au tableau de bord.

Logo
Les actions personnelles¶
Cet élément affiche plusieurs informations importantes.
La première information est l’identifiant de l’utilisateur actuellement connecté ce qui permet de savoir à tout moment si nous sommes bien connectés et avec quel utilisateur. Ensuite est noté le nom de la collectivité sur laquelle nous sommes en train de travailler. En mode multi, une action est disponible sur cette information pour permettre de changer de collectivité. Ensuite la liste sur laquelle nous sommes en train de travailler, une action est disponible sur cette information pour permettre de changer de liste. Enfin l’action pour permettre de changer de mot de passe et pour se déconnecter sont disponibles en permanence.

Actions personnelles
Les raccourcis¶
Cet élément permet d’afficher des raccourcis vers des écrans auxquels nous avons besoin d’accéder très souvent. Par exemple, ici nous avons un raccourci direct vers le tableau de bord.

Raccourcis
Les actions globales¶
Cet élément permet d’afficher en permanence le numéro de version du logiciel. Ensuite les différentes actions sont des liens vers le site officiel du logiciel ou vers la doucmentation.

Actions globales
Ergonomie des formulaires¶
De manière générale, il y a une règle simple dans les applicatifs openMairie : on accède d’abord à un listing d’éléments puis depuis ce listing on peut ajouter un nouvel élément ou modifier un élément existant en accédant au formulaire dédié à cet élément.
Les listings¶
Un listing est un tableau qui liste des éléments récapitulant des informations permettant d’identifier un élément parmi les autres.

Ajouter : cette action représentée par un plus permet d’accéder au formulaire de création d’un élément.
Autre : il peut y avoir d’autres actions positionnées ici qui représentent des actions que l’on peut faire sur un lot d’éléments par exemple.
Visualiser : cette action permet d’accéder au formulaire de visualisation d’un élément.
Autre : il peut y avoir d’autres actions positionnées ici qui permettent d’effectuer des actions rapides sans avoir besoin d’accéder au formulaire de l’élément en visualisation puis de cliquer sur une action parmi les actions contextuelles de l’élément.
- Visualiser : cette action permet d’accéder au formulaire de visualisation d’un élément.
Afficher les éléments expirés : sur les élements qui possèdent une date de validité, par défaut les éléments qui sont dans le passé n’apparaissent pas, il est nécessaire de cliquer sur cette action pour les faire apparaître. L’action se situe au dessus du tableau.
Imprimer le listing en PDF : sur les éléments pour lesquels l’édition existe une action représentée par une imprimante permet de télécharger un pdf qui reflète le contenu du listing sans aucun filtre de recherche. L’action se situe au dessus du tableau.
Les formulaires¶
Un formulaire dans cet applicatif peut soit être de visualisation soit d’action (ajout, modification, suppression, …). La différence est que le premier contient un portlet d’actions contextuelles et que le deuxième contient un bouton qui permet de valider le formulaire en question.
Voici l’exemple d’un formulaire en mode visualisation.

Voici l’exemple d’un formulaire en mode modification.

Le portlet d’actions contextuelles se trouve sur le formulaire d’un élément en mode visualisation. Il contient normalement toutes les actions possibles sur cet élément par l’utilisateur. Il est situé en haut à droite du formulaire.
- Modifier : cette action permet de transformer le mode visualisation de l’élément en mode modification. Une fois le formulaire de modification validé alors un bouton retour nous permet de revenir au formulaire en mode visualisation.
- Supprimer : cette action permet de transformer le mode visualisation de l’élément en mode suppression. Une fois le formulaire de suppression validé alors un bouton retour nous permet de revenir au listing des éléments.
- Le portlet d’acctions contextuelles peut contenir toutes les actions disponibles sur l’élément. Par exemple : il peut y avoir une action qui permet d’imprimer une édition PDF de l’élément, une autre action permettant de changer une valeur spécifique de l’élément comme « Marquer comme lu », …
Sur le formulaire d’un élément, il peut apparaître plusieurs onglets qui correspondent à des éléments liés à l’élément en cours. Un onglet présente un listing de ces éléments liés avec des actions qui permettent également d’accéder à des formulaires sur ces éléments liés.
Par exemple sur l’image suivante, on peut voir sur le « profil » un onglet « tableau de bord » qui liste les tableaux de bord liés au profil utilisateur.

Connexion, déconnexion et permissions¶
Connexion¶
Note
Pour réaliser cette étape, votre administrateur doit vous fournir une adresse Web pour accéder à l’application, un identifiant utilisateur ainsi qu’un mot de passe. Ces éléments auront été préalablement configuré dans le logiciel.
Cet écran de connexion est composé de deux zones de texte et d’un bouton.

Formulaire de connexion
La figure 2 présente l’écran d’identification, il faut saisir son identifiant et son mot de passe puis cliquer sur le bouton « Se connecter ».
Note
L’identifiant et le mot de passe doivent être saisis en respectant la casse, c’est-à-dire les minuscules et majuscules.
Si les identifiants saisis sont incorrects, un message d’erreur apparaît et il faut ressaisir les informations de connexion.

Message de connexion échouée
Si les identifiants sont corrects, vous êtes redirigé vers la page demandée sur laquelle le message suivant doit d’afficher.

Message de connexion réussie
Déconnexion¶
Pour une question de sécurité évidente, il est important de se déconnecter de l’application pour qu’aucun autre utilisateur ne puisse pas accéder au logiciel via votre compte utilisateur.
L’action « Déconnexion » est disponible à tout moment dans les actions personnelles en haut à droite de l’écran.

Action « Déconnexion » dans la barre d’actions personnelles
Une fois déconnecté, c’est le formulaire de connexion qui s’affiche avec un message expliquant la réussite de la déconnexion.

Message de déconnexion réussie
Les droits et profils des utilisateurs¶
Les droits et profils des utilisateurs permettent de limiter l’accès aux informations et aux actions uniquement aux personnes autorisées. Chaque utilisateur est associé à un profil. Le profil correspond à un ensemble de permissions de l’utilisateur, par défaut il existe cinq profils :
- Consultation,
- Utilisateur limité,
- Utilisateur,
- Super utilisateur,
- Administrateur.
Chaque page de l’application est associée à un profil. Pour chaque accès à une page, l’application vérifie si l’utilisateur a un profil supérieur ou égal au profil de la page consultée, si c’est le cas l’utilisateur à donc le droit d’accéder aux informations.
Tableau de bord¶
Le tableau de bord est composé de plusieurs blocs d’informations appelés widget qui permettent à l’utilisateur de visualiser rapidement des informations transverses.

La disposition des widgets est propre à chaque profil et peut être modifiée très facilement par l’administrateur. Il est donc possible pour les services de modifier la disposition (suppression de widget / déplacement de widget).
Widgets¶
Cet widget a pour objectif de permettre d’effecteur une recherche directement depuis le tableau de bord. Les critères de recherche sont identiques à ceux de l’écran La recherche globale. C’est d’ailleurs sur cet écran que les résultats vont s’affichés lors de la validation du formulaire du widget.

Ce widget a pour objectif de donner des accès rapides aux fonctions de localisation en fonction de l’option de localisation paramétrée. Le paramètre « option_localisation » (paramétrage général) change le contenu de ce widget.
Si aucun plan n’est configuré alors le widget affiche un message prévenant l’utilisateur qu’aucun plan n’est configuré.
Si au moins un plan est configuré alors ce widget affiche la liste des plans avec un lien vers l’action « Visualiser un plan » (Voir Option Plan).

- SIG interne
Si il y a au moins un cimetiere saisi avec sa géométrie, ce widget affiche le plan du cimetiere avec l’ensemble des emplacements accessibles
L’objectif de ce widget est de présenter le nombre d’emplacements par type et par cimetière dans l’applicatif.

Ce widget a pour objectif d’afficher les quinze concessions à terme et de donner un accès direct à l’écran Concession à terme (s’y référer pour connaître le filtre appliqué aux résultats de ce widget). Chaque lien présent dans ce widget redirige vers cet écran.

Gestion des emplacements¶
Dans ce chapitre, il est proposé de décrire l’objet principal de l’application : l’emplacement.
Les emplacements¶
Il existe six types d’emplacements différents dans l’applicatif :
On accède à ces différents emplacements depuis le menu (
).
Seul le type d’emplacement concession est décrit ici car c’est le plus exhaustif. Les autres types possèdent moins d’éléments.
La concession¶
Cet élément est accessible via (
).La concession est une place dans un cimetière. http://fr.wiktionary.org/wiki/concession

Le formulaire est identique en mode ajout et modification.

Les informations à saisir sont :
- numéro dans la voie
- voie
- famille
Le colombarium¶
Cet élément est accessible via (
).Aussi appelé columbarium, le colombarium est un édifice destiné à recevoir des urnes mortuaires dans les cimetières où l’on pratique l’incinération. http://fr.wiktionary.org/wiki/columbarium
L’enfeu¶
Cet élément est accessible via (
).L’enfeu est une niche dans un édifice religieux abritant un tombeau, un sarcophage ou une scène funéraire. http://fr.wiktionary.org/wiki/enfeu
L’ossuaire¶
Cet élément est accessible via (
).L’ossuaire est un endroit couvert où l’on met des ossements humains. http://fr.wiktionary.org/wiki/ossuaire
Le dépositoire¶
Cet élément est accessible via (
).Le dépositoire est le nom donné, dans quelques localités, au lieu où l’on dépose les corps des morts, avant de les enterrer, et jusqu’à ce que la décomposition putride commence à se manifester. http://fr.wiktionary.org/wiki/d%C3%A9positoire
Le terrain communal¶
Cet élément est accessible via (
).Appelé aussi « terrain commun », le terrain communal est …
Deux valeurs sont présentes par défaut au chargement du formulaire :
- superficie_terraincommunal : valeur par défaut 2 (paramétrage général)
- duree_terraincommunal : valeur par défaut 5 (paramétrage général)
La localisation de l’emplacement¶
Option Plan¶
La localisation d’un emplacement sur un plan possède deux modes :
le positionnement de l’emplacement : depuis le formulaire de modification de l’emplacement, il est possible de cliquer sur l’action « Positionner l’élément » pour obtenir un écran de positionnement sur le plan.
Au clic sur la punaise, une fenêtre s’ouvre avec le plan et l’emplacement positionné en fonction des coordonnées X et Y présentes dans les champs. Il suffit de déplacer le point bleu avec la souris pour le positionner à l’endroit souhaité. Un double clic sur ce point bleu fermera le plan et positionnera les nouvelles coordonnées dans le formulaire. Il faut enregistrer le formulaire de l’emplacement pour que les modifications soient prises en compte.
- la visualisation de l’emplacement : depuis le tableau ou depuis le formulaire
il est possible de visualiser ou mettre à jour le positionnement de l’emplacement sur la carte.
Option SIG¶

Il est possible de géolocaliser l’emplacement sur une carte.
Nous proposons de géolocaliser la concession 2 dans le cimetière de Moulès (exemple dans data/pgsql/init_data.sql) Par défaut, il nous est présenté un polygone qui est l’espace le plus précis concernant la localisation de la concession : soit la voie si il est géolocalisée, soit la zone, soit enfin le cimetière.
Dans notre cas, la voie de la concession 2 est géolocalisée dans la table voie :

Nous allons d’abord positionner un point :
Nous cliquons dans le cartouche sig (fenêtre de droite) sur outil (en haut) puis sur « éditer », nous choisissons « dessiner un point », nous cliquons sur la carte et un point bleu est visible. Nous appuyons sur « selectionner une géométrie », nous sélectionnons le point bleu en cliquant dessus, il devient rouge.

En appuyant sur « Enregistrer », une fenêtre s’ouvre nous proposant de valider la géométrie point.

En validant, un point et une bulle apparaisse sur l’écran :

Nous proposons maintenant de créer une géométrie polygone associé à la concession 2. Nous retournons dans l’onglet « outils » du cartouche sig (a droite) et nous cliquons sur « editer » Nous choisissons la géométrie polygone (emplacement) et nous choisissons le pannier « plan » Un plan des emplacements apparait sur la carte

Nous choisissons l emplacement sous notre point qui devient plus foncé

Nous appuyons sur « récupération pannier », le polygone devient bleu

Nous appuyons sur « selection géométrie » et nous cliquons sur le polygone : il devient rouge

En appuyant sur enregistrer, il est proposé une fenêtre de validation.

Notre concession a un point d’emplacement et un polygone d’emplacement.
Le polygone peut aussi être dessiné s’il n’y a pas d’emplacement déjà dessiné.
Une concession peut avoir plusieurs polygones.
Les défunts¶
Il est proposé de décrire dans ce paragraphela saisie des défunts dans l’onglet « défunt » d’un emplacement.
On accède à cet élément depuis l’onglet « Défunt » de l’emplacement. Tous les courriers liés à l’emplacement sont listés dans cet onglet.

Le formulaire est identique en mode ajout et modification.
Saisir un défunt¶
Le formulaire est identique en mode ajout et modification.

Les informations à saisir sont :
- le titre (Le titre de civilité)
- le nom du défunt (obligatoire)
- le prénon
- le nom d’usage
- la date de naissance
- la date de décés
- le lieu du décès
- la date d’inhumation
- les opérations funéraires : exhumation, inhumation
Calcul de l’occupation¶
Le calcul de la taille d’occupation se fait à partir des paramères suivants :
- taille_cercueil : valeur par défaut 1 (paramétrage général)
- taille_urne : valeur par défaut 0,1 (paramétrage général)
- taille_reduction : valeur par défaut 0,5 (paramétrage général)
- temps_reduction : valeur par défaut 5 (paramétrage général)
C’est sur cette base que se fait le calcul de la taille et le calcul de place dans l’emplacement.
Les autorisations (concessionaires et ayants droit)¶
Il est proposé de décrire dans ce paragraphe la saisie des autorisations dans l’onglet « concessionnaire » ou « ayant-droit » de l’emplacement.
Concessionaire¶
On accède à cet élément depuis l’onglet « Concessionnaire » de l’emplacement. Tous les concessionaires liés à l’emplacement sont listés dans cet onglet.

Le formulaire est identique en mode ajout et modification.

Les informations à saisir sont :
- le titre (Le titre de civilité)
- le nom
- le prénon
- le nom d’usage
Ayant-droit¶
On accède à cet élément depuis l’onglet « Ayant-droit » de l’emplacement. Tous les ayants-droit liés à l’emplacement sont listés dans cet onglet.
Le formulaire est identique à celui du concessionnaire avec une information supplémentaire : le lien de parenté.
Les courriers¶
Il est proposé de décrire dans ce paragraphe la saisie de courrier dans l’onglet « courrier » de l’emplacement.
On accède à cet élément depuis l’onglet « Courrier » de l’emplacement. Tous les courriers liés à l’emplacement sont listés dans cet onglet.

Le formulaire est identique en mode ajout et modification.

Les informations à saisir sont :
- le destinataire (concessionnaire ou ayant droit)
- la date d envoi (par défaut la date du jour)
- la lettre type (le courrier type à envoyer)
- le complément : texte inséré dans la lettre type (suivant le paramétrage)
Les travaux¶
On accède à cet élément depuis l’onglet « Travaux » de l’emplacement. Tous les travaux liés à l’emplacement sont listés dans cet onglet.

Le formulaire est identique en mode ajout et modification.

Les informations à saisir sont :
- l’entreprise (L’entreprise)
- la date de début d’intervention
- la date de fin d’intervention
- la nature du demandeur : (« concesionnaire », « ayant droit » ou « autre »)
- la nature des travaux (La nature des travaux)
Les dossiers (photos ou documents)¶
Il est proposé de décrire dans ce paragraphe l’upload de document dans les dossiers dans l’onglet « dossier » de l’emplacement.
On accède à cet élément depuis l’onglet « Dossier » de l’emplacement. Tous les dossiers liés à l’emplacement sont listés dans cet onglet.

Le formulaire est identique en mode ajout et modification.

En mode visualisation il est possible de visualiser le fichier en cliquant sur le lien « Visualiser » ou « Télécharger ».

Les informations à saisir sont :
- le fichier à télécharger (obligatoire)
- la date
- le type de document: photo ou dossier (pdf)
- une observation
Recherche¶
La rubrique Recherche permet de rechercher des emplacements, des défunts ou des autorisations selon différents critères. Ce sont ces différents outils de recherche que nous allons décrire ici.

La recherche globale¶
Cet élément est accessible via (Le widget Recherche globale.
) ainsi que directement depuis le tableau de bordLa recherche globale a pour but de retrouver tous les enregistrements d’openCimetière liés à un nom dans les tables de l application avec :
- possibilité d’étendre la recherche sur une partie de mot (recherche élagie cochée)
- possibilité de restreindre la recherche a un cimetière
- possibilité de restreindre la recherche a un champ en particulier
Les résultats sont affichés par type d’élément. Le tri sur les colonnes des tableaux résultats permettent de trier les résultats. Il suffit de cliquer sur un élément de tableau pour accéder à l’emplacement en question.

Concession à terme¶
Cet élément est accessible via (Le widget Concession à terme.
) ainsi que directement depuis le tableau de bordNe sont affichées que les concessions temporaires dont l’année de la date de terme est inférieure ou égale à celle en cours.
Concession libre¶
Cet élément est accessible via (
).Cet écran liste les emplacements de type concession qui sont notés comme libres.
Colombarium libre¶
Cet élément est accessible via (
).Cet écran liste les emplacements de type colombarium qui sont notés comme libres.
Terrain Communal libre¶
Cet élément est accessible via (
).Cet écran liste les emplacements de type terrain communal qui sont notés comme libres.
Opération¶
Nous vous proposons dans ce chapitre d’utiliser les opérations.
Les opérations ont été implémentées par la version 2.02 d’openCimetière à l’initiative de la ville d’Albi.
Ce module est facultatif et les opérations funéraires peuvent être saisies dans les emplacements directement (surtout lorsqu on est en phase d’initialisation du projet et de saisie en masse).
Elles concernent :
- l’inhumation
- la réduction d’un ou plusieurs défunts
- le transfert d’un ou plusieurs défunt d’un emplacement à un autre
Les transferts ont intégré ce module avec la version 3.0.0.
Les opérations peuvent avoir 2 états :
- actif
- trt (opération traitée)
Lorsqu’elle concerne un défunt d’un emplacement, il est alors impossible de modifier un défunt lorsqu’une opération est dans l’état actif.
Pour traiter une opération ou la valider, il faut appuyer sur le bouton « v » de l’opération considérée.
Il est alors lancé le traitement de validation (app/valid_operation.php) Les tables défunt, emplacement sont alors mises à jour et l’accès au defunt via l’onglet de l’emplacement est permis
ATTENTION, CE TRAITEMENT EST DEFINITIF et on ne peut pas retourner en arrière.
Les opérations « traitées » sont visualisables dans l’onglet « opération-trt » de l’emplacement. En appuyant sur l’icone pdf, on accéde à la liste des courriers automatiques a générer pour l’opération (si elles sont actives).
Sommaire
Saisir une inhumation¶
Il est proposé de décrire dans ce paragraphe la saisie d’une inhumation dans le module operation
Choisir l’option :
- inhumation concession
- inhumation colombarium
- inhumation terrain communal
- inhumation enfeu

Il est possible de creer ou modifier une opération dans le formulaire ci dessous

Il est saisie :
- la date et heure de l’opération
- l’emplacement concerné
- l’entreprise effectuant letravail
- le nom du défunt (et autres renseignements)
Saisir une reduction¶
Il est proposé de décrire dans ce paragraphe de decrire la saisie d’une reduction dans le module operation
Choisir l’option :
- reduction concession
- reduction enfeu

Il est possible de creer ou modifier une opération dans le formulaire ci dessous

Il est saisie :
- la date et heure de l’opération
- l’emplacement concerné
- l’entreprise effectuant le travail
Les défunts concernés sont saisis dans l’onglet operation_defunt
Ils doivent appartenir à l’emplacement considérée.

Mise à jour d’un defunt

Le defunt est alors verrouillé dans l’emplacement

Saisir un transfert¶
Il est proposé de décrire dans ce paragraphe la saisie d’un transfert dans le module operation
Choisir l’option transfert emplacement

Il est possible de creer ou modifier l’opération dans le formulaire ci dessous

Il est saisie :
- la date et heure de l’opération
- l’emplacement concerné
- l’entreprise effectuant le travail
- l’emplacement de transfert
Les défunts concernés sont saisis dans l’onglet operation_defunt
Ils doivent appartenir à l’emplacement de départ.

Mise à jour d’un defunt

Le defunt est alors verrouillé dans l’emplacement

Calcul de la place occupée¶
Ce traitement recalcule la place occupée sous la base des paramètres de om_parametre (paramétrage général)
Ce traitement est interessant :
- suite a un import en masse de données (par script d import)
- suite a une modification des paramètres de calcul
remise à zéro du numéro de dossier¶
Ce traitement permet de remettre à 0 la numérotation des dossiers dans la saisie des opérations.
Il est à faire en début d’année.

Archivage¶
Le menu
contient le listing de tous les éléments archivés dans l’application. Ces éléments sont classés en cinq types :On accède à ce listing depuis le menu (
).
Les éléments des différents listings ne sont ni modifiables, ni supprimables.
Défunt¶
Cet élément est accessible via (
).Liste de tous les défunts exhumés dont l’emplacement a été archivé.
Concessionnaire¶
Cet élément est accessible via (
).Liste de tous les concessionnaires des emplacements archivés.
Ayant-droit¶
Cet élément est accessible via (
).Listes de tous les ayants-droit des emplacements archivés.
Opération¶
Cet élément est accessible via (
).Liste de toutes les opérations des emplacements archivés.
Traitement d’archivage¶
Il existe quatre types d’archivage correspondant à quatre natures d’emplacements différentes.
On accède à ces traitements d’archivage depuis le menu (
).Seule la fin de concession sera détaillée car le traitement est similaire pour les trois autres natures d’emplacements listées.
Fin de concession¶
Cet élément est accessible via (
).La fin de concession est disponible pour les concessions à terme. Elle permet d’archiver la concession choisie afin d’en récupérer la place.
Le traitement de fin de concession consiste à :
- terminer la concession
- transférer les défunts de la concession marqués comme non exhumés à l’ossuaire
- conserver la trace des défunts de la concession marqués comme exhumés dans la liste des défunts archivés
- transférer les courriers dans la liste des courriers archivés
- transférer les travaux dans la liste des travaux archivés
- transférer le dossier numerisé dans la liste des dossiers archivés
- transférer les concessionnaires et ayants droit dans la listes des concessionnaires archivés et la liste des ayants droit archivés
Ceci permet d’avoir une traçabilité des concessions.
Les opérations traitées sur cette concession sont supprimées lors du traitement d’archivage.
Attention : Les opérations en cours doivent être traitées.
Il est créé un emplacement vide reprenant tous les éléments de localisation.
Le lancement du traitement se fait avec le formulaire suivant :

Il faut saisir ensuite l’ossuaire et la date.

Avertissement
Le traitement est irréversible.
Fin de colombarium¶
Cet élément est accessible via (
).Le traitement est identique à celui de la partie : Fin de concession.
Fin d’enfeu¶
Cet élément est accessible via (
).Le traitement est identique à celui de la partie : Fin de concession.
Fin de terrain communal¶
Cet élément est accessible via (
).Le traitement est identique à celui de la partie : Fin de concession.
Administration & Paramétrage¶
Une section dédiée à l’administration et au pamétrage permet de configurer l’application : saisir les données des tables de références, gérer les utilisateurs, paramétrer les éditions PDF, … Pour y accéder, les rubriques “Administration” et “Paramétrage” permettent d’accéder aux différents écrans.


Dans ce paragraphe il est décrit les principaux éléments pour le manuel utilisateur, si un élément n’est pas décrit ici, il faut se référer au guide du développeur du framework openMairie : https://docs.openmairie.org/?project=framework&version=4.9&format=html&path=usage/administration
Les tables de référence¶
Une table de référence (ou de codification) permet de limiter volontairement les valeurs possibles pour une information saisie. Cela évite que cette valeur ne soit décrite de deux manières différentes. Dans cet applicatif, les tables de référence sont composées d’un identifiant, d’un libellé et de dates de validité.
La date de validité permet de contrôler les éléments qui apparaissent dans les listes à choix des formulaires. Si la date de fin de validité est dépassée alors cet élément n’est plus sélectionnable comme référence cependant il reste sélectionné là où il l’a déjà été.
Nous allons décrire dans ce paragraphe comment paramétrer les tables de référence qui sont utilisés dans les formulaires de l’applicatif :
- L’entreprise,
- Le titre de civilité,
- Le type de sépulture,
- La nature des travaux,
- Le type de zone,
- Le type de voie.
Le paramétrage de ces éléments se fait dans le menu (
).L’entreprise¶
Cet élément est accessible via (
).Une entreprise dans cet applicatif correspond à une entreprise habilité à venir effectuer des travaux à l’intérieur du cimetière. Elles sont identifiées par leur nom.
Les informations à saisir sont :
- le nom de l’entreprise (obligatoire)
- s’il s’agit d’une entreprise de pompe funèbre
- l’adresse (sur deux lignes)
- le code postal
- la ville
- le téléphone
Cette table est référencée par le(s) élément(s) suivant(s) :
Le titre de civilité¶
Cet élément est accessible via (
).Le titre de civilité est le plus fréquemment utilisé pour identifier la civilité d’une personne (Monsieur, Madame ou Mademoiselle). Il est également utilisé pour le titre ou le rang d’une personne.
Cette table est référencée par le(s) élément(s) suivant(s) :
Le type de sépulture¶
Cet élément est accessible via (
).Le type de sépulture est utilisé pour décrire une concession. Exemples : “Fosse maçonnée haute”, “Cavurne”, “Pierre tombale”, “Caveau T2 haut”, “Caveau T2 bas”, …
Cette table est référencée par le(s) élément(s) suivant(s) :
La nature des travaux¶
Cet élément est accessible via (
).La nature des travaux est utilisée pour décrire les travaux sur un emplacement. Exemples : “Enlèvement porte”, “Démolition-Reconstruction à l’identique”, “Creusement”, “Surélévation”, …
Cette table est référencée par le(s) élément(s) suivant(s) :
Le type de zone¶
Cet élément est accessible via (
).Le type de zone est utilisé pour catégoriser une zone dans le système de localisation. Exemples : “Carré”, “Extension”, “Section”, … Un cimetière peut être composé de plusieurs sections ou de plusieurs carrés.
Cette table est référencée par le(s) élément(s) suivant(s) :
Le type de voie¶
Cet élément est accessible via (
).Le type de voie est utilisé pour catégoriser une voie dans le système de localisation. Exemples : “Allée”, “Place”, “Rangée”, … Une zone peut être composé de plusieurs allées ou de plusieurs rangées.
Cette table est référencée par le(s) élément(s) suivant(s) :
Les tables de localisation¶
La localisation permet de donner une adresse précise à un emplacement. Cette localisation est divisée en plusieurs niveaux. D’abord le cimetière qui peut contenir plusieurs zones. Puis chaque zone peut contenir plusieurs voies. Enfin dans une voie l’emplacement est identifié par un numéro.
Nous allons décrire dans ce paragraphe comment paramétrer les tables qui composent la localisation d’un emplacement :
Le paramétrage de ces éléments se fait dans le menu (
).Le cimetière¶
Cet élément est accessible via (
).
Le formulaire est identique en mode ajout et modification.

Les informations à saisir sont :
- le libellé
- l’adresse (sur deux lignes)
- le code postal
- la ville
- des observations
Astuce
Il est possible de saisir une zone depuis l’onglet zone du formulaire d’un cimetière. Cela permet d’éviter d’avoir à sélectionner le cimetière concerné à chaque ajout de zone.
Cette action n’est disponible que si le paramètre « option_localisation » (paramétrage général) est positionné sur « sig_interne ».
Il est possible de géolocaliser le périmètre du cimetière :

La zone¶
Cet élément est accessible via (
).
Le formulaire est identique en mode ajout et modification.

Les informations à saisir sont :
- le cimetière dans lequel se trouve la zone
- le type de zone (Le type de zone)
- le libellé de la zone
Astuce
Il est possible de saisir une voie depuis l’onglet voie du formulaire d’une zone. Cela permet d’éviter d’avoir à sélectionner la zone concernée à chaque ajout de voie.
Astuce
Il est possible de saisir une zone depuis l’onglet zone du formulaire d’un cimetière. Cela permet d’éviter d’avoir à sélectionner le cimetière concerné à chaque ajout de zone.
Cette action n’est disponible que si le paramètre « option_localisation » (paramétrage général) est positionné sur « sig_interne ».
Il est possible de géolocaliser le périmètre d’une zone :

La voie¶
Cet élément est accessible via (
).
Le formulaire est identique en mode ajout et modification.

Les informations à saisir sont :
- le zone dans laquelle se trouve la voie
- le type de voie (Le type de voie)
- le libellé de la voie
Astuce
Il est possible de saisir une voie depuis l’onglet voie du formulaire d’une zone. Cela permet d’éviter d’avoir à sélectionner la zone concernée à chaque ajout de voie.
Cette action n’est disponible que si le paramètre « option_localisation » (paramétrage général) est positionné sur « sig_interne ».
Il est possible de géolocaliser le polygone d’une voie :
Dans la version 3.0.0, la voie est un polygone et non plus une ligne.

La géolocalisation¶
La géolocalisation est un procédé permettant de positionner un objet (une personne, un bâtiment, …) sur un plan ou une carte à l’aide de ses coordonnées géographiques.
Dans cet applicatif, il existe trois possibilités pour géolocaliser les emplacements. C’est le paramètre « option_localisation » (paramétrage général) qui doit être positionné sur une des options disponibles :
Option Plan¶
Un plan correspond à un croquis d’un cimetière ou d’une partie d’un cimetière. Un emplacement se localise sur un plan grâce à un point.
Note
Cette option est conservée pour des raisons de compatibilité avec l’ancienne version mais il est important de signaler qu’elle ne constitue pas un véritable système de géolocalisation même si elle apparait comme simple et pratique.
Cet élément est accessible via (
).
Il est possible de créer ou modifier un plan dans le formulaire ci-dessous :

Les informations à saisir sont :
- le fichier à télécharger
- le libéllé du plan
Cette action permet de visualiser le plan avec tous les emplacements positionnés sur ce dernier. Au survol d’un emplacement, le nom de famille de l’emplacement apparaît et en cliquant sur le point on accède à la fiche de l’emplacement en visualisation.
Code couleur des points :
- Un point jaune représente un emplacement temporaire.
- Un point vert représente un emplacement libre.
- Un point rouge représente un emplacement à perpétuité.


Option SIG¶
Dans la rubrique administration du menu, il est possible de paramétrer les cartes (om_sig_map) et de paramétrer les flux (om_sig_flux) si l’option sig_interne est activée. (voir le guide du développeur openMairie : https://docs.openmairie.org/?project=framework&version=4.9&path=usage/administration/index.html#le-sig)
Des exemples de paramétrage SIG interne sont disponibles dans les scripts tests/data/pgsql/init_parametrage_sig_*.sql de l’archive téléchargée.
Paramètres généraux¶
Cet élément est accessible via (
).C’est le listing de tous les paramètres généraux utilisés à divers endroits de l’applicatif.

Voici le descriptif des paramètres :
paramètre | description |
---|---|
« option_localisation » |
Système de géolocalisation. Les valeurs possibles sont :
|
« taille_cercueil » |
Taille d’un cercueil. Par défaut la valeur est égale à 5. |
« taille_urne » |
Taille d’une urne. |
« taille_reduction » |
Taille de la réduction. |
« temps_reduction » |
Temps obligatoire avant la réduction. |
« duree_terraincommunal » |
Durée par défaut pour un terrain communal. |
« superficie_terraincommunal » |
Superficie par défaut pour un terrain communal. |
Il existe d’autres paramètres dont les noms significatifs permettent de savoir de quoi il s’agit.
Guide du développeur¶
Guide du développeur¶
Il est proposé un guide du développeur.
Après quelques éléments de l’analyse UML d’openCimetiere, nous vous proposons les requêtes de la ville d’Arles qui ont permis la migration de la version mysql sur la version postgres.
Elements UML¶
Nous vous proposons dans ce chapitre quelques éléments d’uml.
On peut retrouver l’analyse UML complète au lien suivant :
http://www.openmairie.org/documentation/analyse-uml/opencimetiere/umlopencimetiere.pdf/view
Les cas d’utilisation d’openCimetière :¶

Le diagramme de classe openCimetière¶
Le diagramme de classe permet de modéliser les classes et leurs relations independamment d’un langage de programmation particulier.
Le diagramme des cas d utilisation montre le systeme du point de vue des acteurs.
Le diagramme de classe en montre la structure interne : representation abstraite qui vont interagir ensemble pour réaliser les cas d utilisation.

Diagramme de generalisation :

Migration mysql vers postgresql opencimetiere 2.0.0 en utilisant un schéma temporaire¶
Nous proposons dans ce châpitre de vous exposer les requêtes de migration utilisées par la ville d’Arles pour passer de la version 2.10 mysql à la version 3.0.0. La migration a duré une journée.
Les scripts et requêtes sont données à titre indicatif car il se peut que votre base mysql ait évolué de manière différente (utilisation des champs temp1 à 5, paramétrage différent en var.inc, erreur d’intégrité référentielle, problèmes d’encodage …)
La base postgresql se différencie avec celle de mysql (qui était avec le moteur MyIsam) par les éléments suivants
- une intégrité référentielle sur les clés secondaires qui ne peuvent pas prendre la valeur 0 (valeur par défaut d’un entier) ou vide (alphanumérique)
- la valeur par défaut 0000-00-00 des champs date mysql n’est pas acceptée dans postgresql
- le traitement de protection apostrophe en mysql est “ alors qu en postgres, il est “” donc il est utile de remplacer la protection dans le fichier d’export mysql
La version 3.0.0 se caractérise par de nouvelles tables de paramétrage titre_civilite, zone_type, voie_type … et il est utile de passer par un schema intermédiaire opencimetiere_temp
Vous devez d’abord executer les scripts de constitution de la base openmairie, dans le schema opencimetiere. Ensuite il faut créer le schéma intermédiaire opencimetiere_temp dans la base openmairie.
Création d’un shéma opencimetiere_temp pour modifier les tables importées¶
Les tables sont créés sans clés primaires et sans clés secondaires.
Les champs date sont créés en varchar(10) pour éviter l’intégrité « date » de postgresql plus forte. Tous les champs acceptent le « Null »
script de création
SET search_path = opencimetiere_temp, public, pg_catalog;
-- localisation
CREATE TABLE zone (zone integer, cimetiere integer , zonetype varchar(30),zonelib varchar(40) );
CREATE TABLE voie (voie integer , zone integer, voietype varchar(30), voielib varchar(40) ) ;
-- emplacement
CREATE TABLE emplacement ( emplacement integer, nature varchar(20), numero integer,
complement varchar(6) , voie integer, numerocadastre varchar(15) , famille varchar(40) ,
numeroacte varchar(15) , datevente varchar(10), terme varchar(15) , duree integer,
dateterme varchar(10), nombreplace numeric , placeoccupe numeric, superficie numeric,
placeconstat numeric, dateconstat varchar(10), observation text ,
plans varchar(30) , positionx integer , positiony integer, photo varchar(20) ,
libre char(3) , sepulturetype varchar(30) , temp1 varchar(100), temp2 varchar(100),
temp3 varchar(100), temp4 varchar(100), temp5 varchar(100) );
CREATE TABLE defunt ( defunt integer, nature varchar(15), taille real, emplacement integer,
titre varchar(4), nom varchar(40), prenom varchar(40), marital varchar(40),
datenaissance varchar(10), datedeces varchar(10), lieudeces varchar(40),
dateinhumation varchar(10), exhumation char(3), dateexhumation varchar(10),
observation text, reduction char(3), datereduction varchar(10), historique text);
CREATE TABLE autorisation ( autorisation integer, emplacement integer, nature varchar(15) ,
titre varchar(4) , nom varchar(40) , marital varchar(40) , prenom varchar(40) ,
datenaissance varchar(10), adresse1 varchar(40) , adresse2 varchar(40) , cp varchar(5) ,
ville varchar(40) , telephone varchar(15) , dcd char(3) , parente varchar(15) ,
observation text) ;
CREATE TABLE dossier ( dossier integer, emplacement integer, fichier varchar(40),
datedossier varchar(10), observation text, typedossier varchar(20) );
CREATE TABLE travaux ( idtravaux integer, idintervenant integer, emplacement integer,
datedebinter date, datefininter date , observation text , naturedemandeur varchar(20),
naturetravaux varchar(40));
CREATE TABLE emplacement_archive (emplacement integer, nature varchar(20), numero integer,
complement varchar(6), voie integer, numerocadastre varchar(15), famille varchar(40),
numeroacte varchar(15), datevente varchar(10), terme varchar(20), duree integer,
dateterme varchar(10), nombreplace real, placeoccupe real, superficie real,
placeconstat real, dateconstat varchar(10), observation text, plans varchar(30),
positionx integer, positiony integer, photo varchar(20), libre char(3),
sepulturetype varchar(30));
CREATE TABLE defunt_archive (defunt integer, nature varchar(15), taille real,
emplacement integer, titre varchar(4), nom varchar(40), prenom varchar(40),
marital varchar(40), datenaissance varchar(10), datedeces varchar(10), lieudeces varchar(40),
dateinhumation varchar(10), exhumation char(3),dateexhumation varchar(10), observation text,
reduction char(3), datereduction varchar(10), historique text );
CREATE TABLE autorisation_archive (autorisation integer, emplacement integer, nature varchar(15),
titre varchar(4) , nom varchar(40) , marital varchar(40) , prenom varchar(40) ,
datenaissance varchar(10), adresse1 varchar(40) , adresse2 varchar(40) ,
cp varchar(5) , ville varchar(40) , telephone varchar(15) ,
dcd char(3) , parente varchar(15) , observation text );
Transfert des données de localisation¶
L’insertion de la table cimetiere peut se faire directement dans le schéma opencimetiere suite à un export mysql.
L’insertion de la table zone se fait d’abord en opencimetiere_temp.
Ensuite la requête d’intégration dans opencimetiere suivante tient compte de la table 3.0.0 zone_type
-- verification existence cle secondaire zonetype
select distinct(zonetype) from opencimetiere_temp.zone;
insert into opencimetiere.zone (zone,cimetiere,zonetype,zonelib)
select
a.zone,a.cimetiere,b.zone_type,a.zonelib
from opencimetiere_temp.zone a, opencimetiere.zone_type b
where a.zonetype=b.libelle;
La table des voies a la même difficultée avec voie_type et l’insertion se fait d’abord dans opencimetiere_temp
-- verification des voietype
select distinct(voietype) from opencimetiere_temp.voie;
insert into opencimetiere.voie (voie,zone,voietype,voielib)
select
a.voie,a.zone,b.voie_type,a.voielib
from opencimetiere_temp.voie a, opencimetiere.voie_type b
where a.voietype=b.libelle;
Mettre à jour les séquences cimetiere, zone et voie
SELECT pg_catalog.setval('cimetiere_seq', 10, true);
SELECT pg_catalog.setval('zone_seq', 10, true);
SELECT pg_catalog.setval('voie_seq', 10, true);
Transfert des parametres¶
Utilisateur :
Les noms de champs ont changé : om_utilisateur, om_profil et il y a des champs nouveau obligatoire ! om_collectivité (=1), om_type (=db) et email (peut être égal à “”) Attention, om_profil est inversé 5=1 , 4=2 …1=5
A la fin de la récupération, faire la requête suivante
update opencimetiere.om_utilisateur set om_profil = 6 - om_profil where om_utilisateur > 1
-- admin est dans la base
entreprise : le nom de champ identreprise devient entreprise dans la nouvelle base et ensuite l’export de cette table peut se faire directement dans opencimetiere
Transfert des emplacements¶
On transfere emplacement depuis mysql dans la table emplacement d’opencimetiere_temp
Il s’agit d’éliminer les dates “0000-00-00” dans les champs : datevente, dateterme et dateconstat
update opencimetiere_temp.emplacement set datevente = null where datevente = '0000-00-00';
update opencimetiere_temp.emplacement set dateterme = null where dateterme = '0000-00-00';
update opencimetiere_temp.emplacement set dateconstat = null where dateconstat = '0000-00-00';
On peut aussi remplacer “0000-00-00” par null directement dans le fichier d’export
Il est possible que d’autre dates soient malformées comme “2008-01-00”.
Si c’est le cas la requête d’intégration ne fonctionnera pas et il faudra corriger l’erreur signalée lors des essais de tranfert
Les plans sont dans une table avec un identifiant numérique. Il faut donc les reprendre avec une ou plusieurs requete (une par plan)
update opencimetiere_temp.emplacement set plans = 1 where plans = 'moules.jpg';
Les sépultures type sont aussi dans une table. Il faut donc mettre la cle secondaire numerique dans le champ sepulturetype
update opencimetiere_temp.emplacement set sepulturetype = 4 where sepulturetype like '%pierre%';
update opencimetiere_temp.emplacement set sepulturetype = 2 where sepulturetype like '%basse%';
update opencimetiere_temp.emplacement set sepulturetype = 1 where sepulturetype like '%haute%';
update opencimetiere_temp.emplacement set sepulturetype = null where sepulturetype ='';
Il est alors possible de lancer la requête d’intégration
insert into opencimetiere.emplacement(emplacement, nature, numero, complement, voie,
numerocadastre, famille, numeroacte,datevente, terme, duree, dateterme, nombreplace,
placeoccupe, superficie, placeconstat, dateconstat, observation, plans, positionx,
positiony, photo, libre, sepulturetype )
select
emplacement, nature, numero, complement, voie, numerocadastre, famille,
numeroacte, cast(datevente as date), terme, duree, cast(dateterme as date),
nombreplace, placeoccupe, superficie, placeconstat, cast(dateconstat as date),
observation, cast(plans as integer), positionx, positiony, photo, libre,
cast(sepulturetype as integer) from opencimetiere_temp.emplacement ;
Transfert defunt¶
Les données de défunt sont transmises dans la table temporaire opencimetiere_temp.defunt
Il est proposé de traiter les dates égales à 0000-00-00
update opencimetiere_temp.defunt set datenaissance = null where datenaissance = '0000-00-00';
update opencimetiere_temp.defunt set datedeces = null where datedeces = '0000-00-00';
update opencimetiere_temp.defunt set dateinhumation = null where dateinhumation = '0000-00-00';
update opencimetiere_temp.defunt set dateexhumation = null where dateexhumation = '0000-00-00';
update opencimetiere_temp.defunt set datereduction = null where datereduction = '0000-00-00';
Attention;, il peut subsister des dates non conformes dans un format non accepté par postgres du style 2025-00-00 ou 2030-06-00 Il faut les rechercher et les traiter avant intégration.
Il se peut que certains défunts ne soient plus rattachés à une concession. On trouve ces concessions en lancant la requete suivante
select emplacement.emplacement,defunt.emplacement from opencimetiere_temp.defunt
left join opencimetiere.emplacement on defunt.emplacement = emplacement.emplacement
where emplacement.emplacement is null order by defunt.emplacement;
Il faut ensuite détruire les défunts dans les emplacements inexistants
delete from opencimetiere_temp.defunt where emplacement in
( liste des emplacements séparés par une virgule);
Il faut ensuite reconstitué la clé secondaire titre qui pointe sur la table titre
-- titre
update opencimetiere_temp.defunt set titre = 1 where titre = 'Mr' or titre = 'M' or titre = 'M.';
update opencimetiere_temp.defunt set titre = 2 where titre = 'Mell' or titre = 'Mlle';
update opencimetiere_temp.defunt set titre = 3 where titre = 'Mme';
update opencimetiere_temp.defunt set titre = 4 where titre like 'Enf%' or titre = 'Bébé' or titre='Enfa' or titre = 'enfa';
Vérifier que tous vos champs « titre » sont des clés de la table titre
select titre,count(titre) from opencimetiere_temp.defunt group by titre order by titre;
Vous pouvez intégrer les défunts dans la base opencimetiere
insert into opencimetiere.defunt( defunt, nature, taille, emplacement, titre, nom , prenom ,
marital, datenaissance , datedeces , lieudeces , dateinhumation , exhumation ,
dateexhumation , observation , reduction , datereduction , historique )
select
defunt, nature, taille, emplacement, cast(titre as integer), nom, prenom ,
marital,cast(datenaissance as date), cast(datedeces as date), lieudeces,
cast(dateinhumation as date), exhumation, cast(dateexhumation as date),
observation, reduction, cast(datereduction as date), historique
from opencimetiere_temp.defunt;
-- compteur_defunt est le numero du dernier defunt saisi
SELECT pg_catalog.setval('opencimetiere.defunt_seq', compteur_defunt, true);
Dans openCimetiere, il faut mettre à « Non » le verrou
update opencimetiere.defunt set verrou = 'Non' ;
Transfert des autorisations :¶
Transferer les autorisations de mysql dans la base temporaire opencimetiere_temp, table autoriqation
Remplacer ensuite les dates du format “0000-00-00” en null et traiter les dates malformées.
Ensuite il faut traiter le champ titre
update opencimetiere_temp.autorisation set titre = 1
where titre = 'Mr' or titre = 'M' or titre = 'Mr e';
update opencimetiere_temp.autorisation set titre = 2 where titre = 'Mell' or titre = 'Mlle';
update opencimetiere_temp.autorisation set titre = 3 where titre = 'Mme';
update opencimetiere_temp.autorisation set titre = null where titre = '2 en' or titre='' ;
Vérifier avec la requête suivante
select titre,count(titre) from opencimetiere_temp.autorisation group by titre order by titre;
Il faut changer le champ dcd qui est booléen et non plus en varchar(3)
update opencimetiere_temp.autorisation set dcd = 't' where dcd = 'Oui' ;
update opencimetiere_temp.autorisation set dcd = 'f' where dcd = 'Non' or dcd ='';
Il faut ensuite vérifier que tous les emplacements soient existants
select distinct(autorisation.emplacement)
from opencimetiere_temp.autorisation left join opencimetiere.emplacement
on autorisation.emplacement = emplacement.emplacement
where emplacement.emplacement is null
order by autorisation.emplacement;
et détruire les autorisations non rattachées à un emplacement
delete from opencimetiere_temp.autorisation where emplacement in
(liste d emplacement séparé par une virgule);
On peut ensuite transférer dans opencimetiere
insert into opencimetiere.autorisation(autorisation, emplacement, nature, titre , nom ,
marital, prenom , datenaissance, adresse1 , adresse2 , cp , ville , telephone , dcd ,
parente , observation)
select
autorisation, emplacement, nature, cast(titre as integer) , nom , marital , prenom ,
cast(datenaissance as date), adresse1, adresse2 , cp , ville , telephone ,
cast(dcd as boolean), parente, observation
from opencimetiere_temp.autorisation;
-- on change aussi la sequence avec son compteur autorisation
SELECT pg_catalog.setval('opencimetiere.autorisation_seq', compteur_autorisation, true);
Transfert des travaux¶
Transferer la table de mysql dans la table travaux d’opencimetiere_temp.
Dans les travaux, naturetravaux devient une table et il faut donc changer la clé secondaire
update opencimetiere_temp.travaux set naturetravaux = 6
where naturetravaux = 'Construction caveau T2 haut';
update opencimetiere_temp.travaux set naturetravaux = 13
where naturetravaux = 'Remise en place pierre tombale';
update opencimetiere_temp.travaux set naturetravaux = 2
where naturetravaux = 'Permis de construire';
update opencimetiere_temp.travaux set naturetravaux = 1
where naturetravaux = 'Autorisation de travaux';
update opencimetiere_temp.travaux set naturetravaux = 3
where naturetravaux = 'Autorisation de recouvrement';
update opencimetiere_temp.travaux set naturetravaux = 20
where naturetravaux = 'Nettoyage-Consolidation';
update opencimetiere_temp.travaux set naturetravaux = 11
where naturetravaux = 'Construction pierre tombale';
update opencimetiere_temp.travaux set naturetravaux = Null where naturetravaux = '';
Vérifier si les clés secondaires existent dans la table naturetravaux
select distinct(naturetravaux) from opencimetiere_temp.travaux;
Procéder à l’insertion des données dans le schéma opencimetiere
insert into opencimetiere.travaux(travaux, entreprise, emplacement, datedebinter ,
datefininter , observation , naturedemandeur ,naturetravaux)
select
idtravaux, idintervenant, emplacement, datedebinter , datefininter ,
observation , naturedemandeur ,cast(naturetravaux as integer)
from opencimetiere_temp.travaux;
-- mettre a jour la sequence avec le dernier travaux saisi (compteur_travaux)
SELECT pg_catalog.setval('opencimetiere.travaux_seq', compteur_travaux, true);
Transfert des courriers¶
Le profil de la table a peu changer et le chargement peut se faire directement en opencimetiere.
Vérifier cependant que :
- la date du courrier soit au format postgre (pas de 0000-00-00)
- le modéle du courrier existe en om_lettretype
N’oubliez pas de mettre à jour la séquence avec le dernier numéro de courrier saisi (compteur_courrier):
SELECT pg_catalog.setval('opencimetierecourrier_seq', compteur_courrier, true);
Transfert des dossiers¶
Transférer le dossier en table dossier d’opencimetiere_temp
remplacer les dates “0000-00-00”
Vérifier si les emplacements sont présents
select distinct(dossier.emplacement)
from opencimetiere_temp.dossier left join opencimetiere.emplacement
on dossier.emplacement = emplacement.emplacement
where emplacement.emplacement is null
order by dossier.emplacement;
détruire les dossiers où les emplacements n’existent pas
delete from opencimetiere_temp.dossier where emplacement in
(liste des emplacements qui n existent pas séparés par une virgule);
Insérer les dossiers dans la base opencimetiere
insert into opencimetiere.dossier(dossier, emplacement, fichier, datedossier,
observation, typedossier)
select
dossier, emplacement, fichier, cast(datedossier as date),
observation, typedossier from opencimetiere_temp.dossier;
-- mettre à jour la sequence dossier
SELECT pg_catalog.setval('opencimetiere.dossier_seq', compteur_dossier, true);
Transfert des fichiers du dossier¶
Vous pouvez conserver le file systeme de la version mysql. Dans ce cas la, copier ce qu il y a dans le repertoire trs de votre opencimetiere 2.10 dans le repertoire trs de la version 3.0.0
Vous pouvez utiliser le nouveau filesysteme de la version openmairie 4.4.0
le plus simple est de mettre vos fichiers en trs/1 et de mettre les fichiers dans le nouveau filesystem en trs/2
Il est proposer auparavant de détruire les enregistrements dossiers qui ne correspondent pas à un fichier existant et qui plante la procédure de migration
script delete_dossier.php
<?php
// Conexion à la base de données
require_once('config.php');
$sql = "select * from ".$schema.".".$table;
$res = pg_query($connexion, $sql);
while ($row = pg_fetch_array($res)) {
if (!file_exists("../trs/1/".$row['fichier'])){
echo $row[$table]." ".$row['fichier']."";
$sql="delete from ".$schema.".".$table." where ".$table."=".$row[$table];
$res1 = pg_query($connexion, $sql);
if ($res1)
echo "supprime<br>";
else
echo " erreur ".$sql;
}
}
pg_close($connexion);
?>
script de connexion config.php
<?php
// connexion
// parametres
$user= "postgres";
$pwd = "postgres";
$host= "localhost";
$base= "openmairie";
$schema="opencimetiere";
$table="dossier";
// connexion pgsql
$connexion = pg_connect("host=".$host." port=5432 dbname=".$base." user=".$user.
" password=".$pwd);
if (!$connexion) {
echo "erreur de connexion ".$host." ".$base." ".$user." ".$pwd;
exit;
}
?>
lancer la procédure de migration om_filestorage_migrate.php en paramétrant sans le script
//le repertoire de départ
$source_conf = array(
"storage" => "deprecated",
"path" => "../trs/1/",
);
...
// et celui d arrivée
$destination_conf = array(
"storage" => "filesystem",
"path" => "../trs/2/",
);
refaire les emplacements de stockage en préférant un stockage externe a l’application dans dyn/filestorage.inc.php:
$filestorage["filestorage-default"] = array (
"storage" => "filesystem", // l'attribut storage est obligatoire
"path" => "../../files/opencimetiere/", // le repertoire de stockage
//"path" => "../trs/2", // le repertoire de stockage
"temporary" => array(
"storage" => "filesystem", // l'attribut storage est obligatoire
"path" => "../tmp/", // le repertoire de stockage
),
);
Problème d’encodage sur la base¶
J’ai rencontré sur la base d’arles des problèmes d’encodage sur la base mysql que j’ai résolu de la manière suivante :
Dans les fichiers texte des sauvegardes mysql, j ai remplacé avec l’éditeur
ç en ç
é en é
Ã. en I ?
É en E ?
Ú en è
Ã. en I
Ã. en E
ou j ai lancé des requêtes du type
select emplacement,observation, replace(observation, 'é', 'é') from opencimetiere.emplacement;
Migration de version¶
Dans data/pgsql, il est proposé les scripts de migration de base suivants :
Vers la version 3.x¶
- De la version 2.10 à la version 3.0.0 : v3.0.0.sql
- De la version 3.0.0-a4 à la version 3.0.0-a5 : v3.0.0-a5.sql
- De la version 3.0.0-a5 à la version 3.0.0-a6 : v3.0.0-a6.sql
- De la version 3.0.0-a6 à la version 3.0.0-a7 : v3.0.0-a7.sql
- De la version 3.0.0-a7 à la version 3.0.0-a8 : v3.0.0-a8.sql
- De la version 3.0.0-a8 à la version 3.0.0-a9 : v3.0.0-a9.sql
- De la version 3.0.0-a5 à la version 3.0.0 : v3.0.0-a5_vers_v3.0.0.sql
- De la version 3.0.0-a9 à la version 3.0.0 : v3.0.0-a9_vers_v3.0.0.sql
Vers la version 4.x¶
- De la version 3.0.0 à la version 4.0.0 : v4.0.0.sql