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.

_images/a_ergonomie_generale_detail.png

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.

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.

_images/a_ergonomie_actions_personnelles.png

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.

_images/a_ergonomie_raccourcis.png

Raccourcis

Le menu

Cet élément permet de classer les différents écrans de l’application en rubriques. En cliquant sur l’entête de rubrique, nous accédons à la liste des écrans auxquels nous avons accès dans cette rubrique.

Le nombre de rubriques disponibles dans le menu peut varier en fonction du profil des utilisateurs. Un utilisateur ayant le profil Consultation n’aura probablement pas accès aux six rubriques présentes sur cette capture.

_images/a_ergonomie_menu.png

Menu

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.

_images/a_ergonomie_actions_globales.png

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.

_images/a_ergonomie-exemple-listing.png
Les actions
En haut à gauche
  • Ajouter : cette action représentée par un plus permet d’accéder au formulaire de création d’un élément.

    icone-ajouter

  • 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.

A gauche devant chaque élément
  • Visualiser : cette action permet d’accéder au formulaire de visualisation d’un élément.

    icone-visualiser

  • 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.

Sur l’élément
  • Visualiser : cette action permet d’accéder au formulaire de visualisation d’un élément.
Divers
  • 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.

    icone-edition-pdf

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.

_images/a_ergonomie-exemple-fiche-visualisation.png

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

_images/a_ergonomie-exemple-formulaire-modification.png
Les actions

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.

Actions de formulaires
  • 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.
Autres actions
  • 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 », …
Les onglets

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.

_images/a_ergonomie-exemple-onglet-exemple-listing.png
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.

Saisie des informations de connexion

Cet écran de connexion est composé de deux zones de texte et d’un bouton.

_images/a_connexion_formulaire.png

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.

Connexion échouée

Si les identifiants saisis sont incorrects, un message d’erreur apparaît et il faut ressaisir les informations de connexion.

_images/a_connexion_message_erreur.png

Message de connexion échouée

Connexion réussie

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

_images/a_connexion_message_ok.png

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.

_images/a_deconnexion_action.png

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.

_images/a_deconnexion_message_ok.png

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 :

  1. Consultation,
  2. Utilisateur limité,
  3. Utilisateur,
  4. Super utilisateur,
  5. 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.

_images/a_tableau-de-bord-exemple.png

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
Le widget Recherche globale

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.

_images/a_widget_recherche_globale.png
Le widget Localisation

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.

Option Plan

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).

_images/a_widget_localisation_plan.png
Option SIG
  • 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

Le widget Supervision

L’objectif de ce widget est de présenter le nombre d’emplacements par type et par cimetière dans l’applicatif.

_images/a_widget_supervision.png
Le widget Concession à terme

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.

_images/a_widget_concession_a_terme.png

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 (Emplacements).

_images/a_emplacement-menu-rubrik-emplacement.png

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 (Emplacements ‣ Concession).

La concession est une place dans un cimetière. http://fr.wiktionary.org/wiki/concession

_images/a_emplacement-emplacement_concession-listing.png

Le formulaire est identique en mode ajout et modification.

_images/a_emplacement-emplacement_concession-formulaire-modification.png

Les informations à saisir sont :

  • numéro dans la voie
  • voie
  • famille
Le colombarium

Cet élément est accessible via (Emplacements ‣ Colombarium).

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 (Emplacements ‣ Enfeu).

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 (Emplacements ‣ Ossuaire).

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 (Emplacements ‣ Dépositoire).

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 (Emplacements ‣ Terrain Communal).

Appelé aussi « terrain commun », le terrain communal est …

Deux valeurs sont présentes par défaut au chargement du formulaire :

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.

    _images/a_emplacement-emplacement_concession-formulaire-modification-bloc-localisation-plan.png

    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.

    _images/a_emplacement-emplacement_concession-fiche-visualisation-bloc-localisation-plan.png
Option SIG
SIG interne _images/a_emplacement-emplacement_concession-fiche-visualisation-bloc-localisation-sig_interne.png

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 :

_images/geo_localisation1.png

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.

_images/geo_localisation2.png

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

_images/geo_localisation3.png

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

_images/geo_localisation4.png

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

_images/geo_localisation5.png

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

_images/geo_localisation6.png

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

_images/geo_localisation7.png

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

_images/geo_localisation8.png

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

_images/geo_localisation9.png

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.

_images/a_emplacement-emplacement_concession-onglet-defunt-listing.png

Le formulaire est identique en mode ajout et modification.

Saisir un défunt

Le formulaire est identique en mode ajout et modification.

_images/a_emplacement-emplacement_concession-onglet-defunt-formulaire-ajout.png

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 :

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.

_images/a_emplacement-emplacement_concession-onglet-concessionnaire-listing.png

Le formulaire est identique en mode ajout et modification.

_images/a_emplacement-emplacement_concession-onglet-concessionnaire-formulaire-ajout.png

Les informations à saisir sont :

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.

_images/a_emplacement-emplacement_concession-onglet-courrier-listing.png

Le formulaire est identique en mode ajout et modification.

_images/a_emplacement-emplacement_concession-onglet-courrier-formulaire-ajout.png

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.

_images/a_emplacement-emplacement_concession-onglet-travaux-listing.png

Le formulaire est identique en mode ajout et modification.

_images/a_emplacement-emplacement_concession-onglet-travaux-formulaire-ajout.png

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.

_images/a_emplacement-emplacement_concession-onglet-dossier-listing.png

Le formulaire est identique en mode ajout et modification.

_images/a_emplacement-emplacement_concession-onglet-dossier-formulaire-ajout.png

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

_images/a_emplacement-emplacement_concession-onglet-dossier-visualisation-fichier.png

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.

_images/a_recherche-menu-rubrik-recherche.png
La recherche globale

Cet élément est accessible via (Recherche ‣ Recherche globale) ainsi que directement depuis le tableau de bord Le widget Recherche globale.

La 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.

_images/a_recherche-resultats-de-recherche-globale.png
Concession à terme

Cet élément est accessible via (Recherche ‣ Concession à terme) ainsi que directement depuis le tableau de bord Le widget Concession à terme.

Ne 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 (Recherche ‣ Concession libre).

Cet écran liste les emplacements de type concession qui sont notés comme libres.

Colombarium libre

Cet élément est accessible via (Recherche ‣ Colombarium libre).

Cet écran liste les emplacements de type colombarium qui sont notés comme libres.

Terrain Communal libre

Cet élément est accessible via (Recherche ‣ Terrain Communal libre).

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).

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
_images/a_operation-inhumation-listing.png

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

_images/a_operation-inhumation-formulaire-ajout.png

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
_images/a_operation-reduction-listing.png

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

_images/a_operation-reduction-formulaire-ajout.png

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.

_images/a_operation-reduction-onglet-defunt-listing.png

Mise à jour d’un defunt

_images/a_operation-reduction-onglet-defunt-formulaire-ajout.png

Le defunt est alors verrouillé dans l’emplacement

_images/a_operation-reduction-concession-onglet-defunt-listing-verrou.png
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

_images/a_operation-transfert-listing.png

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

_images/a_operation-transfert-formulaire-ajout.png

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.

_images/a_operation-transfert-onglet-defunt-listing.png

Mise à jour d’un defunt

_images/a_operation-transfert-onglet-defunt-formulaire-ajout.png

Le defunt est alors verrouillé dans l’emplacement

_images/a_operation-transfert-concession-onglet-defunt-listing-verrou.png
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.

_images/a_operation-traitement-reinitialisation-seq-numdossier.png

Archivage

Le menu Archives 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 (Archives).

_images/a_archives-menu-rubrik-archives.png

Les éléments des différents listings ne sont ni modifiables, ni supprimables.

Emplacement

Cet élément est accessible via (Archives ‣ Emplacement).

Liste de tous les emplacements archivés.

Défunt

Cet élément est accessible via (Archives ‣ Défunt).

Liste de tous les défunts exhumés dont l’emplacement a été archivé.

Concessionnaire

Cet élément est accessible via (Archives ‣ Concessionnaire).

Liste de tous les concessionnaires des emplacements archivés.

Ayant-droit

Cet élément est accessible via (Archives ‣ Ayant-droit).

Listes de tous les ayants-droit des emplacements archivés.

Opération

Cet élément est accessible via (Archives ‣ Opération).

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 (Archives).

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 (Archives ‣ Fin De Concession).

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 :

_images/a_archivage-fin_concession-listing.png

Il faut saisir ensuite l’ossuaire et la date.

_images/a_archivage-fin_concession-formulaire-validation.png

Avertissement

Le traitement est irréversible.

Fin de colombarium

Cet élément est accessible via (Archives ‣ Fin De Colombarium).

Le traitement est identique à celui de la partie : Fin de concession.

Fin d’enfeu

Cet élément est accessible via (Archives ‣ Fin D’enfeu).

Le traitement est identique à celui de la partie : Fin de concession.

Fin de terrain communal

Cet élément est accessible via (Archives ‣ Fin De Terrain Communal).

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.

_images/a_administration-menu-administration.png _images/a_administration-menu-parametrage.png

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 :

Le paramétrage de ces éléments se fait dans le menu (Paramétrage ‣ Divers).

L’entreprise

Cet élément est accessible via (Paramétrage ‣ Divers ‣ Entreprise).

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 (Paramétrage ‣ Divers ‣ Titre de civilité).

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 (Paramétrage ‣ Divers ‣ Type de sépulture).

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 (Paramétrage ‣ Divers ‣ Nature des travaux).

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 (Paramétrage ‣ Divers ‣ Type de zone).

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 (Paramétrage ‣ Divers ‣ Type de voie).

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 (Paramétrage ‣ Localisation).

Le cimetière

Cet élément est accessible via (Paramétrage ‣ Localisation ‣ Cimetière).

_images/a_administration-cimetiere-listing.png
Saisir un cimetière

Le formulaire est identique en mode ajout et modification.

_images/a_administration-cimetiere-formulaire-ajout.png

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.

Localiser un cimetière (option SIG interne)

icone-localiser

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 :

_images/a_administration-cimetiere-geolocaliser.png
La zone

Cet élément est accessible via (Paramétrage ‣ Localisation ‣ Zone).

_images/a_administration-zone-listing.png
Saisir une zone

Le formulaire est identique en mode ajout et modification.

_images/a_administration-zone-formulaire-ajout.png

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.

Localiser une zone (option SIG interne)

icone-localiser

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 :

_images/a_administration-zone-geolocaliser.png
La voie

Cet élément est accessible via (Paramétrage ‣ Localisation ‣ Voie).

_images/a_administration-voie-listing.png
Imprimer un état de la voie

icone-edition-pdfetat-voie

Imprimer un état de la voie par concession

icone-edition-pdfetat-voieconcession

Saisir une voie

Le formulaire est identique en mode ajout et modification.

_images/a_administration-voie-formulaire-ajout.png

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.

Localiser une voie (option SIG interne)

icone-localiser

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.

_images/a_administration-voie-geolocaliser.png
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 (Paramétrage ‣ Localisation ‣ Plans).

_images/a_administration-plans-listing.png
Saisir un plan

Il est possible de créer ou modifier un plan dans le formulaire ci-dessous :

_images/a_administration-plans-formulaire-ajout.png

Les informations à saisir sont :

  • le fichier à télécharger
  • le libéllé du plan
Visualiser un plan

icone-localiser

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é.
_images/a_administration-plans-visualisation-globale-exemple-1.png _images/a_administration-plans-visualisation-globale-exemple-2.png
Option SIG
SIG interne

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 (Administration ‣ Paramètre).

C’est le listing de tous les paramètres généraux utilisés à divers endroits de l’applicatif.

_images/a_administration-parametres-listing.png

Voici le descriptif des paramètres :

paramètre description

« option_localisation »

Système de géolocalisation. Les valeurs possibles sont :

  • plan,
  • sig_interne,

« 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 :
_images/casutilisation.png
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.

_images/uml_class.png

Diagramme de generalisation :

_images/emplacement_classe.png

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

Contributeurs

(par ordre alphabétique)

  • atReal
  • Florent Michon
  • François Raynaud