*** Settings ***
Resource  resources/resources.robot
Suite Setup  For Suite Setup
Suite Teardown  For Suite Teardown
Documentation  ...


*** Test Cases ***
Constitution du jeu de données
    [Documentation]  ...
    #
    Depuis la page d'accueil  admin  admin
    #
    Set Suite Variable  ${testid}  400
    #
    &{cimetiere01} =  Create Dictionary
    ...  cimetierelib=CIMETIERE${testid}-01
    ...  adresse1=RUE DE LA REPUBLIQUE
    ...  adresse2=
    ...  cp=99607
    ...  ville=LIBREVILLE
    ...  observations=
    Ajouter le cimetière  ${cimetiere01}
    Set Suite Variable  ${cimetiere01}
    #
    &{cimetiere02} =  Create Dictionary
    ...  cimetierelib=CIMETIERE${testid}-02
    ...  adresse1=RUE DE LA REPUBLIQUE
    ...  adresse2=
    ...  cp=99607
    ...  ville=LIBREVILLE
    ...  observations=
    Ajouter le cimetière  ${cimetiere02}
    Set Suite Variable  ${cimetiere02}
    #
    &{zone01_cim01} =  Create Dictionary
    ...  cimetiere=${cimetiere01.cimetierelib}
    ...  zonetype=CARRE
    ...  zonelib=Z${testid}-01
    Ajouter la zone  ${zone01_cim01}
    Set Suite Variable  ${zone01_cim01}
    #
    &{zone01_cim02} =  Create Dictionary
    ...  cimetiere=${cimetiere02.cimetierelib}
    ...  zonetype=CARRE
    ...  zonelib=Z${testid}-02
    Ajouter la zone  ${zone01_cim02}
    Set Suite Variable  ${zone01_cim02}
    #
    &{voie01_zone01_cim01} =  Create Dictionary
    ...  zone=${zone01_cim01.zonetype} ${zone01_cim01.zonelib} (${zone01_cim01.cimetiere})
    ...  voietype=ALLEE
    ...  voielib=V${testid}-01
    Ajouter la voie  ${voie01_zone01_cim01}
    Set Suite Variable  ${voie01_zone01_cim01}
    #
    &{voie02_zone01_cim01} =  Create Dictionary
    ...  zone=${zone01_cim01.zonetype} ${zone01_cim01.zonelib} (${zone01_cim01.cimetiere})
    ...  voietype=DIVISION
    ...  voielib=V${testid}-02
    Ajouter la voie  ${voie02_zone01_cim01}
    Set Suite Variable  ${voie02_zone01_cim01}
    #
    &{voie01_zone01_cim02} =  Create Dictionary
    ...  zone=${zone01_cim02.zonetype} ${zone01_cim02.zonelib} (${zone01_cim02.cimetiere})
    ...  voietype=DIVISION
    ...  voielib=V${testid}-01CIM2
    Ajouter la voie  ${voie01_zone01_cim02}
    Set Suite Variable  ${voie01_zone01_cim02}
    #
    &{concession03} =  Create Dictionary
    ...  famille=DUPONT${testid}
    ...  numero=21
    ...  voie_autocomplete_search=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib} ${zone01_cim01.zonetype} ${zone01_cim01.zonelib} ${cimetiere01.cimetierelib}
    ...  voie_autocomplete=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib} [${zone01_cim01.zonetype} ${zone01_cim01.zonelib}][${cimetiere01.cimetierelib}]
    ${concession03_id} =  Ajouter la concession  ${concession03}
    Set Suite Variable  ${concession03}
    Set Suite Variable  ${concession03_id}
    #
    &{concession_histo_04} =  Create Dictionary
    ...  famille=HISTO${testid}
    ...  numero=22
    ...  voie_autocomplete_search=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib} ${zone01_cim01.zonetype} ${zone01_cim01.zonelib} ${cimetiere01.cimetierelib}
    ...  voie_autocomplete=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib} [${zone01_cim01.zonetype} ${zone01_cim01.zonelib}][${cimetiere01.cimetierelib}]
    ${concession_histo_04_id} =  Ajouter la concession  ${concession_histo_04}
    Set Suite Variable  ${concession_histo_04}
    Set Suite Variable  ${concession_histo_04_id}
    #
    &{concession_histo_05} =  Create Dictionary
    ...  famille=HISTO2${testid}
    ...  numero=23
    ...  voie_autocomplete_search=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib} ${zone01_cim01.zonetype} ${zone01_cim01.zonelib} ${cimetiere01.cimetierelib}
    ...  voie_autocomplete=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib} [${zone01_cim01.zonetype} ${zone01_cim01.zonelib}][${cimetiere01.cimetierelib}]
    ${concession_histo_05_id} =  Ajouter la concession  ${concession_histo_05}
    Set Suite Variable  ${concession_histo_05}
    Set Suite Variable  ${concession_histo_05_id}
    #
    &{concession_histo_06} =  Create Dictionary
    ...  famille=HISTO3${testid}
    ...  numero=24
    ...  voie_autocomplete_search=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib} ${zone01_cim01.zonetype} ${zone01_cim01.zonelib} ${cimetiere01.cimetierelib}
    ...  voie_autocomplete=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib} [${zone01_cim01.zonetype} ${zone01_cim01.zonelib}][${cimetiere01.cimetierelib}]
    ${concession_histo_06_id} =  Ajouter la concession  ${concession_histo_06}
    Set Suite Variable  ${concession_histo_06}
    Set Suite Variable  ${concession_histo_06_id}
    #
    &{concession01} =  Create Dictionary
    ...  famille=DURAND${testid}
    ...  numero=12
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie02_zone01_cim01.voietype} ${voie02_zone01_cim01.voielib}
    ${concession01_id} =  Ajouter la concession  ${concession01}
    Set Suite Variable  ${concession01}
    Set Suite Variable  ${concession01_id}
    # Ajout d'un contact pour vérifier les champs de fusion associés au demandeur
    &{concessionnaire_concession01} =  Create Dictionary
    ...  nature=concessionnaire
    ...  titre=Monsieur
    ...  nom=MERGEFIELDSDEMANDEURNOM
    ...  marital=MERGEFIELDSDEMANDEURMARITAL
    ...  prenom=MERGEFIELDSDEMANDEURPRENOM
    ...  datenaissance=10/01/1980
    ...  dcd=oui
    ...  adresse1=25 RUE DE LA RÉPUBLIQUE
    ...  adresse2=PLOP2
    ...  cp=99678
    ...  ville=LIBREVILLE
    ...  telephone1=4856484560
    ...  telephone2=4856487120
    ...  courriel=plop@plop.fr
    ...  observation=MERGEFIELDSDEMANDEURDESC
    ${concessionnaire_concession01.id} =  Ajouter le concessionnaire dans le contexte de la concession  ${concessionnaire_concession01}  ${concession01_id}
    Set Suite Variable  ${concessionnaire_concession01}
    #
    &{concession02} =  Create Dictionary
    ...  famille=DUPONT${testid}
    ...  numero=14
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib}
    ${concession02_id} =  Ajouter la concession  ${concession02}
    Set Suite Variable  ${concession02}
    Set Suite Variable  ${concession02_id}
    #
    &{entreprise01} =  Create Dictionary
    ...  nomentreprise=ENTREPRISE${testid}-01
    ...  pf=Non
    ...  adresse1=12 rue de la République
    ...  adresse2=Parc de la Durance
    ...  cp=99678
    ...  ville=LIBREVILLE
    ...  telephone=00999999999
    Ajouter l'entreprise  ${entreprise01}
    Set Suite Variable  ${entreprise01}
    #
    &{entreprise02} =  Create Dictionary
    ...  nomentreprise=ENTREPRISE${testid}-02
    ...  pf=Oui
    ...  adresse1=14 rue de la République
    ...  adresse2=Parc de la Durance
    ...  cp=99678
    ...  ville=LIBREVILLE
    ...  telephone=00888888888
    Ajouter l'entreprise  ${entreprise02}
    Set Suite Variable  ${entreprise02}

    # PARTIE CHAMP DEMANDEUR

    &{concession_demandeur} =  Create Dictionary
    ...  famille=DEMANDEUR${testid}
    ...  numero=50
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib}
    ${concession_demandeur.id} =  Ajouter la concession  ${concession_demandeur}
    Set Suite Variable  ${concession_demandeur}

    &{concession_sans_demandeur} =  Create Dictionary
    ...  famille=SANSDEMANDEUR${testid}
    ...  numero=51
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib}
    ${concession_sans_demandeur.id} =  Ajouter la concession  ${concession_sans_demandeur}
    Set Suite Variable  ${concession_sans_demandeur}

    # Ajout du concessionnaire
    &{concessionnaire} =  Create Dictionary
    ...  nature=concessionnaire
    ...  titre=Madame
    ...  nom=MIOUMI
    ...  marital=POLIE
    ...  prenom=HENRI
    ...  datenaissance=10/01/1980
    ...  adresse1=12 rue de la République
    ...  adresse2=
    ...  cp=99678
    ...  ville=LIBREVILLE
    ...  dcd=true
    ...  observation=
    ${concessionnaire.id} =  Ajouter le concessionnaire dans le contexte de la concession  ${concessionnaire}  ${concession_demandeur.id}
    Set Suite Variable  ${concessionnaire}

    &{ayantdroit} =  Create Dictionary
    ...  nature=ayant-droit
    ...  titre=Monsieur
    ...  nom=MICHOU
    ...  marital=TESTITOU
    ...  prenom=PAUL
    ...  datenaissance=10/02/1980
    ...  adresse1=22 rue de la République
    ...  cp=99678
    ...  ville=LIBREVILLE
    ...  dcd=true
    ...  observation=
    ${ayantdroit.id} =  Ajouter l'ayant-droit dans le contexte de la concession  ${ayantdroit}  ${concession_demandeur.id}
    Set Suite Variable  ${ayantdroit}

    &{autre_contact} =  Create Dictionary
    ...  nature=autre
    ...  titre=Monsieur
    ...  nom=MAGFI
    ...  prenom=PAULIO
    ...  datenaissance=10/02/1980
    ...  adresse1=22 rue de la République
    ...  cp=99678
    ...  ville=LIBREVILLE
    ...  dcd=true
    ...  observation=
    ${autre_contact.id} =  Ajouter un contact autre dans le contexte de la concession  ${autre_contact}  ${concession_demandeur.id}
    Set Suite Variable  ${autre_contact}

    # PARTIE TRI COLONNE "DATE"
    # Données utiles pour le test de vérification du bon fonctionnement du tri sur la colonne 'date'

    ${date_future} =  Add Time To Date  ${DATE_FORMAT_YYYY-MM-DD}  53 days  result_format=%Y-%m-%d
    ${date_future_formated} =  Convert Date  ${date_future}  result_format=%d/%m/%Y

    # Ajout ossuaire 1
    &{ossuaire01} =  Create Dictionary
    ...  famille=TETARD${testid}
    ...  numero=37
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib}
    ${ossuaire01.id} =  Ajouter l'ossuaire  ${ossuaire01}
    Set Suite Variable  ${ossuaire01}

    # Création de deux concessions
    # Ajout de concession 1
    &{concession04} =  Create Dictionary
    ...  famille=TOTO${testid}
    ...  numero=53
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie02_zone01_cim01.voietype} ${voie02_zone01_cim01.voielib}
    ${concession04.id} =  Ajouter la concession  ${concession04}
    Set Suite Variable  ${concession04}
    # Ajout de concession 2
    &{concession05} =  Create Dictionary
    ...  famille=TATA${testid}
    ...  numero=153
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib}
    ${concession05.id} =  Ajouter la concession  ${concession05}
    Set Suite Variable  ${concession05}

    # Création de deux defunts
    # Ajout de defunt dans cette concession 1
    &{defunt_operation} =  Create Dictionary
    ...  titre=Monsieur
    ...  nom=PIERREBIENTOTMICHEL
    ...  nature=cercueil
    ${defunt_operation.id} =  Ajouter le defunt dans le contexte de la concession  ${defunt_operation}  ${concession04.id}
    # Ajout de defunt dans cette concession 2
    &{defunt_operation} =  Create Dictionary
    ...  titre=Madame
    ...  nom=ANNEBIENTOTMICHELLE
    ...  nature=cercueil
    ${defunt_operation.id} =  Ajouter le defunt dans le contexte de la concession  ${defunt_operation}  ${concession05.id}

    # Création de deux réductions sur concession
    # Ajout opération 1
    &{operation_01} =  Create Dictionary
    ...  date=${DATE_FORMAT_DD/MM/YYYY}
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession04.id})
    ...  emplacement_autocomplete_id=${concession04.id}
    ${operation_01.id} =  Ajouter l'opération de réduction sur concession  ${operation_01}
    Set Suite Variable  ${operation_01}
    # Ajout opération 2
    &{operation_02} =  Create Dictionary
    ...  date=${date_future_formated}
    ...  heure=13:00:00
    ...  emplacement_autocomplete_search=(${concession05.id})
    ...  emplacement_autocomplete_id=${concession05.id}
    ${operation_02.id} =  Ajouter l'opération de réduction sur concession  ${operation_02}
    Set Suite Variable  ${operation_02}

    # Création de deux transfert emplacement
    # Ajout opération 3
    &{operation_03} =  Create Dictionary
    ...  date=${DATE_FORMAT_DD/MM/YYYY}
    ...  heure=09:00:00
    ...  emplacement_autocomplete_search=(${concession04.id})
    ...  emplacement_autocomplete_id=${concession04.id}
    ...  emplacement_transfert_autocomplete_search=(${concession05.id})
    ...  emplacement_transfert_autocomplete_id=${concession05.id}
    ${operation_03.id} =  Ajouter l'opération de transfert  ${operation_03}
    Set Suite Variable  ${operation_03}
    # Ajout opération 4
    &{operation_04} =  Create Dictionary
    ...  date=${date_future_formated}
    ...  heure=15:00:00
    ...  emplacement_autocomplete_search=(${concession05.id})
    ...  emplacement_autocomplete_id=${concession05.id}
    ...  emplacement_transfert_autocomplete_search=(${concession04.id})
    ...  emplacement_transfert_autocomplete_id=${concession04.id}
    ${operation_04.id} =  Ajouter l'opération de transfert  ${operation_04}
    Set Suite Variable  ${operation_04}

    # Concession permettant de vérifier les champs de fusion sur les opérations de transfert
    &{concession_transfert01} =  Create Dictionary
    ...  famille=${testid}CONCESSIONTRANSFERT1
    ...  numero=533
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie02_zone01_cim01.voietype} ${voie02_zone01_cim01.voielib}
    ...  datevente=${DATE_FORMAT_DD/MM/YYYY}
    ${concession_transfert01.id} =  Ajouter la concession  ${concession_transfert01}
    # Je rajoute la voie après l'ajout de la concession pour pas que ça rentre en conflit lors de l'ajout de la concession
    # Ce champ sert juste à vérifier le champ de fusion associé.
    ${concession_transfert01.voie} =  Set Variable  ${concession_transfert01.voielib} [${concession_transfert01.zonelib}][${concession_transfert01.cimetierelib}]
    Set Suite Variable  ${concession_transfert01}
    # Ajout de concession 2
    &{concession_transfert02} =  Create Dictionary
    ...  famille=${testid}CONCESSIONTRANSFERT2
    ...  numero=1456
    ...  cimetierelib=${cimetiere02.cimetierelib}
    ...  zonelib=${zone01_cim02.zonetype} ${zone01_cim02.zonelib}
    ...  voielib=${voie01_zone01_cim02.voietype} ${voie01_zone01_cim02.voielib}
    ...  datevente=31/05/2017
    ${concession_transfert02.id} =  Ajouter la concession  ${concession_transfert02}
    ${concession_transfert02.voie} =  Set Variable  ${concession_transfert02.voielib} [${concession_transfert02.zonelib}][${concession_transfert02.cimetierelib}]
    Set Suite Variable  ${concession_transfert02}

Vérification des historiques d'opération du défunt
   [Documentation]  Scénario : après inhumation, un défunt est transféré de sa concession d'origine à une autre.
   ...  La concession de destination est réduite. Ainsi, l'historique doit posséder une ligne d'inhumation, 2 de transfert, 2 de réduction.
   ...  Au moment de l'archivage, si le défunt n'est pas coché pour l'exhumation, 
   ...  son archive doit être vérifiée dans le menu ossuaire et le cas échéant dans l'archive d'emplacement. 
   ...  Le second défunt ajouté permet cette vérification.
 # concession_histo_04 concession_histo_04_id concession_histo_05 concession_histo_05_id concession_histo_06 concession_histo_06_id
   Depuis la page d'accueil  admin  admin
   ## Premier défunt
   # Inhumation
   &{operation_histo_01} =  Create Dictionary
   ...  date=31/05/2017
   ...  heure=12:00:00
   ...  emplacement_autocomplete_search=(${concession_histo_04_id})
   ...  emplacement_autocomplete_id=${concession_histo_04_id}
   ...  societe_coordonnee=...
   ...  pf_coordonnee=...
   ...  observation=...
   ...  defunt_titre=Monsieur
   ...  defunt_nom=HISTOMAN${testid}
   ...  defunt_prenom=Guy
   ...  defunt_marital=
   ...  defunt_datenaissance=01/01/1970
   ...  defunt_datedeces=25/05/2017
   ...  defunt_lieudeces=LIBREVILLE
   ...  defunt_nature=cercueil
   ${operation_histo_01_id} =  Ajouter l'opération d'inhumation sur concession  ${operation_histo_01}
   Valider l'opération d'inhumation sur concession  ${operation_histo_01_id}
   # Transfert
   &{operation_histo_02} =  Create Dictionary
   ...  date=31/05/2017
   ...  heure=12:00:00
   ...  emplacement_autocomplete_search=(${concession_histo_04_id})
   ...  emplacement_autocomplete_id=${concession_histo_04_id}
   ...  emplacement_transfert_autocomplete_search=(${concession_histo_05_id})
   ...  emplacement_transfert_autocomplete_id=${concession_histo_05_id}
   ...  societe_coordonnee=...
   ...  pf_coordonnee=...
   ...  observation=...
   ${operation_histo_02_id} =  Ajouter l'opération de transfert  ${operation_histo_02}
   ${nom_prenom_defunt_to_transfert} =  Convert To Upper Case  ${operation_histo_01.defunt_nom} ${operation_histo_01.defunt_prenom}
   Ajouter un défunt sur l'opération de transfert  ${operation_histo_02_id}  ${nom_prenom_defunt_to_transfert}
   Valider l'opération de transfert  ${operation_histo_02_id}
   # Réduction
   &{operation_histo_03} =  Create Dictionary
   ...  date=31/05/2017
   ...  heure=12:00:00
   ...  emplacement_autocomplete_search=(${concession_histo_05_id})
   ...  emplacement_autocomplete_id=${concession_histo_05_id}
   ${operation_histo_03_id} =  Ajouter l'opération de réduction sur concession  ${operation_histo_03}
   ${nom_prenom_defunt_to_reduce} =  Convert To Upper Case  ${operation_histo_01.defunt_nom} ${operation_histo_01.defunt_prenom}
   Ajouter un défunt sur l'opération de réduction sur concession  ${operation_histo_03_id}  ${nom_prenom_defunt_to_reduce}
   Valider l'opération de réduction sur concession  ${operation_histo_03_id}

   # Vérification du tableau d'historique du défunt depuis la concession
   Depuis le contexte du défunt dans la concession  ${concession_histo_05_id}  ${operation_histo_01.defunt_nom}
   ${headers}  Create List  id  catégorie  type  dossier  date  heure  emplacement source  emplacement destination
   ${elements}  Create List  1  2  3  4  5  inhumation  exhumation  transfert  reduction  ${operation_histo_01.date}  ${operation_histo_01.heure}  ${concession_histo_04_id}  ${concession_histo_05_id}
   Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Vérifier un tableau jsontotab  ${headers}  ${elements}

   # Archivage d'un défunt sans exhumation cochée
   Depuis l'archivage de la fin de concession  ${concession_histo_05_id}
   Input Text  css=input.datepicker  ${DATE_FORMAT_DD/MM/YYYY}
   Click On Submit Button

   # Vérification du tableau d'historique du défunt depuis l'achivage
   Depuis l'onglet 'défunt' de l'ossuaire  11
   Click Element  css=#sousform-defunt .tab-tab tbody tr td.col-1 a
   Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Vérifier un tableau jsontotab  ${headers}  ${elements}

   ## Deuxième défunt
   # Inhumation
   &{operation_histo_04} =  Create Dictionary
   ...  date=31/05/2017
   ...  heure=12:00:00
   ...  emplacement_autocomplete_search=(${concession_histo_04_id})
   ...  emplacement_autocomplete_id=${concession_histo_04_id}
   ...  societe_coordonnee=...
   ...  pf_coordonnee=...
   ...  observation=...
   ...  defunt_titre=Monsieur
   ...  defunt_nom=HISTOMAN_2${testid}
   ...  defunt_prenom=Guy
   ...  defunt_marital=
   ...  defunt_datenaissance=01/01/1970
   ...  defunt_datedeces=25/05/2017
   ...  defunt_lieudeces=LIBREVILLE
   ...  defunt_nature=cercueil
   ${operation_histo_04_id} =  Ajouter l'opération d'inhumation sur concession  ${operation_histo_04}
   Valider l'opération d'inhumation sur concession  ${operation_histo_04_id}
   # Transfert
   &{operation_histo_05} =  Create Dictionary
   ...  date=31/05/2017
   ...  heure=12:00:00
   ...  emplacement_autocomplete_search=(${concession_histo_04_id})
   ...  emplacement_autocomplete_id=${concession_histo_04_id}
   ...  emplacement_transfert_autocomplete_search=(${concession_histo_06_id})
   ...  emplacement_transfert_autocomplete_id=${concession_histo_06_id}
   ...  societe_coordonnee=...
   ...  pf_coordonnee=...
   ...  observation=...
   ${operation_histo_05_id} =  Ajouter l'opération de transfert  ${operation_histo_05}
   ${nom_prenom_defunt} =  Convert To Upper Case  ${operation_histo_04.defunt_nom} ${operation_histo_04.defunt_prenom}
   Ajouter un défunt sur l'opération de transfert  ${operation_histo_05_id}  ${nom_prenom_defunt}
   Valider l'opération de transfert  ${operation_histo_05_id}
   # Réduction
   &{operation_histo_06} =  Create Dictionary
   ...  date=31/05/2017
   ...  heure=12:00:00
   ...  emplacement_autocomplete_search=(${concession_histo_06_id})
   ...  emplacement_autocomplete_id=${concession_histo_06_id}
   ${operation_histo_06_id} =  Ajouter l'opération de réduction sur concession  ${operation_histo_06}
   Ajouter un défunt sur l'opération de réduction sur concession  ${operation_histo_06_id}  ${nom_prenom_defunt}
   Valider l'opération de réduction sur concession  ${operation_histo_06_id}
   
   # Archivage d'un défunt avec exhumation cochée
   # On active l'exhumation, avec une date de réduction cohérente
   Depuis le contexte du défunt dans la concession  ${concession_histo_06_id}  ${operation_histo_04.defunt_nom}
   Click On SubForm Portlet Action  defunt  modifier
   Input Text  datereduction  31/05/2037
   Select From List By Label  css=#exhumation  Oui
   Click On Submit Button
   # On demande l'archivage
   Depuis l'archivage de la fin de concession  ${concession_histo_06_id}
   Input Text  css=input.datepicker  ${DATE_FORMAT_DD/MM/YYYY}
   Click On Submit Button
   # Vérification du tableau d'historique du défunt depuis l'achivage
   Depuis le contexte de l'emplacement archivé  ${concession_histo_06_id}
   On clique sur l'onglet  defunt_archive  Défunt Archivé
   Click Element  css=#sousform-defunt_archive .tab-tab tbody tr td.col-1 a
   ${elements}  Create List  1  2  3  4  5  inhumation  exhumation  transfert  reduction  ${operation_histo_01.date}  ${operation_histo_01.heure}  ${concession_histo_04_id}  ${concession_histo_06_id}
   Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Vérifier un tableau jsontotab  ${headers}  ${elements}



Ajout d'une opération d'inhumation concession
    [Documentation]  Ce test permet de créer une opération et de vérifier la
    ...  génération de l'édition liée à cette opération.
    #
    Depuis la page d'accueil  admin  admin
    #
    &{operation01} =  Create Dictionary
    ...  date=31/05/2017
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession01_id})
    ...  emplacement_autocomplete_id=${concession01_id}
    ...  societe_coordonnee=...
    ...  pf_coordonnee=...
    ...  observation=...
    ...  defunt_titre=Monsieur
    ...  defunt_nom=SUPONT${testid}
    ...  defunt_prenom=Marcel
    ...  defunt_marital=
    ...  defunt_datenaissance=01/01/1970
    ...  defunt_datedeces=25/05/2017
    ...  defunt_lieudeces=LIBREVILLE
    ...  defunt_nature=cercueil
    ${operation01_id} =  Ajouter l'opération d'inhumation sur concession  ${operation01}
    #
    Ouvrir l'édition PDF de l'opération d'inhumation sur concession  ${operation01_id}
    PDF Page Number Should Contain  1  AUTORISATION D'INHUMATION
    PDF Page Number Should Contain  2  CONVOCATION DE POLICE
    Close PDF
    #
    Valider l'opération d'inhumation sur concession  ${operation01_id}
    #
    Depuis l'onglet 'opérations' de la concession  ${concession01_id}
    Element Should Contain  css=#sousform-operation_trt  inhumation
    Element Should Contain  css=#sousform-operation_trt  ${operation01.defunt_nom}
    #
    Depuis l'onglet 'défunt' de la concession  ${concession01_id}
    Element Should Contain  css=#sousform-defunt  ${operation01.defunt_nom}

    # À utiliser dans le test case vérifiant le fonctionnement du transfert
    Set Suite Variable  ${operation01.defunt_nom}
    Set Suite Variable  ${operation01.defunt_prenom}


Ajout d'une opération de transfert
    [Documentation]  Ce test permet de créer une opération et de vérifier la
    ...  génération de l'édition liée à cette opération.
    #
    Depuis la page d'accueil  admin  admin
    #
    &{operation02} =  Create Dictionary
    ...  date=31/05/2017
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession01_id})
    ...  emplacement_autocomplete_id=${concession01_id}
    ...  emplacement_transfert_autocomplete_search=(${concession02_id})
    ...  emplacement_transfert_autocomplete_id=${concession02_id}
    ...  societe_coordonnee=...
    ...  pf_coordonnee=...
    ...  observation=...
    ${operation02_id} =  Ajouter l'opération de transfert  ${operation02}
    #
    Ouvrir l'édition PDF de l'opération de transfert  ${operation02_id}
    PDF Page Number Should Contain  1  AUTORISATION DE TRANSFERT
    PDF Page Number Should Contain  2  CONVOCATION DE POLICE
    Close PDF
    # On ajoute l'opération défunt
    ${nom_prenom_defunt_to_transfert} =  Convert To Upper Case  ${operation01.defunt_nom} ${operation01.defunt_prenom}
    Ajouter un défunt sur l'opération de transfert  ${operation02_id}  ${nom_prenom_defunt_to_transfert}
    #
    Valider l'opération de transfert  ${operation02_id}
    #
    Depuis l'onglet 'opérations' de la concession  ${concession01_id}
    Element Should Contain  css=#sousform-operation_trt  transfert
    Depuis l'onglet 'défunt' de la concession  ${concession02_id}
    Element Should Contain  css=#sousform-defunt  ${operation01.defunt_nom}

    # Vérification des champs de fusion pour emplacement et emplacement_transfert d'opération
    &{operation_transfert} =  Create Dictionary
    ...  date=${DATE_FORMAT_DD/MM/YYYY}
    ...  heure=15:00:00
    ...  emplacement_autocomplete_search=(${concession_transfert01.id})
    ...  emplacement_autocomplete_id=${concession_transfert01.id}
    ...  emplacement_transfert_autocomplete_search=(${concession_transfert02.id})
    ...  emplacement_transfert_autocomplete_id=${concession_transfert02.id}
    ${operation_transfert.id} =  Ajouter l'opération de transfert  ${operation_transfert}

    @{champs_fusion_emplacement_et_emplacement_transfert} =  Create List
    ...  Champs de fusion emplacement : ${concession_transfert01.id} ${concession_transfert01.datevente} ${concession_transfert01.numero}
    ...  ${concession_transfert01.voie} ${concession_transfert01.cimetierelib} ${zone01_cim01.zonelib}
    ...  Champs de fusion emplacement_transfert : ${concession_transfert02.id} ${concession_transfert02.datevente} ${concession_transfert02.numero}
    ...  ${concession_transfert02.voie} ${concession_transfert02.cimetierelib} ${zone01_cim02.zonelib}
    Ouvrir l'édition PDF de l'opération de transfert  ${operation_transfert.id}
    Vérifier Que Le PDF Contient Des Strings  ${OM_PDF_TITLE}  ${champs_fusion_emplacement_et_emplacement_transfert}

Calcul de la place
    [Documentation]  ...
    #
    Depuis la page d'accueil  admin  admin
    #
    Go To Dashboard
    Depuis l'écran de traitement 'Calcul de la place occupée'
    #
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=input[type="submit"]
    Alert Should Be Present  Etes-vous sur de vouloir confirmer cette action ?
    #
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Submenu In Menu Should Be Selected  operation  concessionplace
    Le titre de la page doit être  Opérations > Calcul De La Place
    First Tab Title Should Be  Emplacement
    La page ne doit pas contenir d'erreur
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Page Should Contain  calcul de la place occupée
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Page Should Contain  Télécharger le fichier traces


Gestion des champs de défunt lors d'une inhumation
    [Documentation]  Ce test permet de vérifier que tous les champs sont bien
    ...  pris en compte lors d'une validation d'opération
    #
    Depuis la page d'accueil  admin  admin
    #
    # On ajoute une concession
    &{concession03} =  Create Dictionary
    ...  famille=DUPONT${testid}MANAGEFIELDS
    ...  numero=14
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib}
    ${concession03_id} =  Ajouter la concession  ${concession03}

    Depuis l'onglet 'défunt' de la concession  ${concession03_id}
    Click On Add Button

    &{defunt01} =  Create Dictionary
    ...  titre=Monsieur
    ...  nom=SUPONT${testid}MANAGEFIELDS
    ...  prenom=MARCELMANAGEFIELDS
    ...  datenaissance=01/01/1970
    ...  lieunaissance=ARLES
    ...  datedeces=25/05/2017
    ...  lieudeces=LIBREVILLE
    ...  parente=LOLO
    ...  nature=cercueil
    Saisir les valeurs dans le formulaire du defunt  ${defunt01}

    Click On Submit Button

    # On vérifie que tous les champs sont bien remplis
    Element Should Contain  css=#titre  ${defunt01.titre}
    Element Should Contain  css=#nom  ${defunt01.nom}
    Element Should Contain  css=#prenom  ${defunt01.prenom}
    Element Should Contain  css=#datenaissance  ${defunt01.datenaissance}
    Element Should Contain  css=#lieunaissance  ${defunt01.lieunaissance}
    Element Should Contain  css=#datedeces  ${defunt01.datedeces}
    Element Should Contain  css=#lieudeces  ${defunt01.lieudeces}
    Element Should Contain  css=#parente  ${defunt01.parente}

    Depuis le formulaire d'ajout d'une opération d'inhumation sur concession
    &{operation03} =  Create Dictionary
    ...  date=31/05/2017
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession03_id})
    ...  emplacement_autocomplete_id=${concession03_id}
    ...  societe_coordonnee=...
    ...  pf_coordonnee=...
    ...  observation=...
    ...  defunt_titre=Monsieur
    ...  defunt_nom=SUPONT${testid}
    ...  defunt_prenom=MARCEL
    ...  defunt_marital=
    ...  defunt_datenaissance=01/01/1970
    ...  defunt_lieunaissance=ARLES
    ...  defunt_datedeces=25/05/2017
    ...  defunt_lieudeces=LIBREVILLE
    ...  defunt_parente=LOLO
    ...  defunt_nature=cercueil
    Saisir les valeurs dans le formulaire de l'opération  ${operation03}

    Click On Submit Button

    # On vérifie que tous les champs sont bien remplis
    Element Should Contain  css=#defunt_titre  ${operation03.defunt_titre}
    Form Value Should Be  css=#defunt_nom  ${operation03.defunt_nom}
    Form Value Should Be  css=#defunt_prenom  ${operation03.defunt_prenom}
    Form Value Should Be  css=#defunt_datenaissance  ${operation03.defunt_datenaissance}
    Form Value Should Be  css=#defunt_lieunaissance  ${operation03.defunt_lieunaissance}
    Form Value Should Be  css=#defunt_datedeces  ${operation03.defunt_datedeces}
    Form Value Should Be  css=#defunt_lieudeces  ${operation03.defunt_lieudeces}
    Form Value Should Be  css=#defunt_parente  ${operation03.defunt_parente}

    ${operation03_id} =  Get Text  css=#form-content #operation

    Click On Form Portlet Action  inhumation_concession  modifier

    &{operation03_edit} =  Create Dictionary
    ...  defunt_lieunaissance=HERVILLE
    ...  defunt_parente=MOMO

    Saisir les valeurs dans le formulaire de l'opération  ${operation03_edit}
    Click On Submit Button

    # On vérifie que tous les champs sont bien remplis
    Element Should Contain  css=#defunt_titre  ${operation03.defunt_titre}
    Form Value Should Be  css=#defunt_nom  ${operation03.defunt_nom}
    Form Value Should Be  css=#defunt_prenom  ${operation03.defunt_prenom}
    Form Value Should Be  css=#defunt_datenaissance  ${operation03.defunt_datenaissance}
    Form Value Should Be  css=#defunt_lieunaissance  ${operation03_edit.defunt_lieunaissance}
    Form Value Should Be  css=#defunt_datedeces  ${operation03.defunt_datedeces}
    Form Value Should Be  css=#defunt_lieudeces  ${operation03.defunt_lieudeces}
    Form Value Should Be  css=#defunt_parente  ${operation03_edit.defunt_parente}
    #
    Valider l'opération d'inhumation sur concession  ${operation03_id}
    #
    Depuis l'onglet 'opérations' de la concession  ${concession03_id}
    Element Should Contain  css=#sousform-operation_trt  inhumation
    Element Should Contain  css=#sousform-operation_trt  ${operation03.defunt_nom}
    #
    Depuis l'onglet 'défunt' de la concession  ${concession03_id}
    Element Should Contain  css=#sousform-defunt  ${operation03.defunt_nom}
    Click Element  link:${operation03.defunt_nom}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  css=#lieunaissance  ${operation03_edit.defunt_lieunaissance}
    Element Should Contain  css=#parente  ${operation03_edit.defunt_parente}


Champ 'numdossier' automatique en fonction de l'année
    [Documentation]  Le champ 'numdossier' de l'opération est composé de
    ...  l'année et d'un numéro de registre annuel stockée dans une séquence
    ...  par année. Exemple : 2010-123 représente la 123ème opération de
    ...  l'année 2010.
    ...
    ...  Ce *Test Case* vérifie que les séquences annuelles de ce champ
    ...  fonctionnent correctement. Le scénario est le suivant :
    ...  - on ajoute une opération avec une date positionnée dans un an et on vérifie que le champ 'numdossier' est composé correctement [ANNEE N+1]-1.
    ...  - on ajoute une opération avec une date positionnée dans deux ans et on vérifie que le champ 'numdossier' est composé correctement [ANNEE N+2]-1.
    ...  - on ajoute une opération avec une date positionnée dans un an et on vérifie que le champ 'numdossier' est composé correctement [ANNEE N+1]-2.
    ...
    ...  Attention : si des opérations sont créées pour l'année N+1 ou N+2 dans
    ...  les tests précédents, ce 'Test Case' va échouer.

    Depuis la page d'accueil  admin  admin
    # Année N+1
    ${date_jour_add_db_one_year} =  Add Time To Date  ${DATE_FORMAT_YYYY-MM-DD}  734 days  result_format=%Y-%m-%d
    ${date_jour_add_form_one_year} =  Convert Date  ${date_jour_add_db_one_year}  result_format=%d/%m/%Y
    ${date_time_one_year} =  Convert Date  ${date_jour_add_db_one_year}  result_format=datetime
    # Année N+2
    ${date_jour_add_db_two_year} =  Add Time To Date  ${DATE_FORMAT_YYYY-MM-DD}  1468 days  result_format=%Y-%m-%d
    ${date_jour_add_form_two_year} =  Convert Date  ${date_jour_add_db_two_year}  result_format=%d/%m/%Y
    ${date_time_two_year} =  Convert Date  ${date_jour_add_db_two_year}  result_format=datetime
    # On attend [ANNEE N+1]-1
    &{op_l_01} =  Create Dictionary
    ...  date=${date_jour_add_form_one_year}
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession01_id})
    ...  emplacement_autocomplete_id=${concession01_id}
    ...  emplacement_transfert_autocomplete_search=(${concession02_id})
    ...  emplacement_transfert_autocomplete_id=${concession02_id}
    ...  societe_coordonnee=...
    ...  pf_coordonnee=...
    ...  observation=...
    ${op_l_01.id} =  Ajouter l'opération de transfert  ${op_l_01}
    Depuis le contexte de l'opération de transfert  ${op_l_01.id}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}
    ...  Element Should Contain  css=#numdossier  ${date_time_one_year.year}-1
    # On attend [ANNEE N+2]-1
    &{op_l_02} =  Create Dictionary
    ...  date=${date_jour_add_form_two_year}
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession01_id})
    ...  emplacement_autocomplete_id=${concession01_id}
    ...  societe_coordonnee=...
    ...  pf_coordonnee=...
    ...  observation=...
    ...  defunt_titre=Monsieur
    ...  defunt_nom=SUPONT${testid}
    ...  defunt_prenom=Marcel
    ...  defunt_marital=
    ...  defunt_datenaissance=01/01/1970
    ...  defunt_datedeces=25/05/2017
    ...  defunt_lieudeces=LIBREVILLE
    ...  defunt_nature=cercueil
    ${op_l_02.id} =  Ajouter l'opération d'inhumation sur concession  ${op_l_02}
    Depuis le contexte de l'opération d'inhumation sur concession  ${op_l_02.id}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}
    ...  Element Should Contain  css=#numdossier  ${date_time_two_year.year}-1
    # On attend [ANNEE N+1]-2
    &{op_l_03} =  Create Dictionary
    ...  date=${date_jour_add_form_one_year}
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession01_id})
    ...  emplacement_autocomplete_id=${concession01_id}
    ...  societe_coordonnee=...
    ...  pf_coordonnee=...
    ...  observation=...
    ...  defunt_titre=Monsieur
    ...  defunt_nom=SUPONT${testid}
    ...  defunt_prenom=Marcel
    ...  defunt_marital=
    ...  defunt_datenaissance=01/01/1970
    ...  defunt_datedeces=25/05/2017
    ...  defunt_lieudeces=LIBREVILLE
    ...  defunt_nature=cercueil
    ${op_l_03.id} =  Ajouter l'opération d'inhumation sur concession  ${op_l_03}
    Depuis le contexte de l'opération d'inhumation sur concession  ${op_l_03.id}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}
    ...  Element Should Contain  css=#numdossier  ${date_time_one_year.year}-2


Verification du bon fonctionnement des champs de fusion d'opération
    [Documentation]  ...
    Depuis la page d'accueil  admin  admin
    # On désactive l'état défunt
    Depuis le listing des états
    Use Simple Search  id  operation_10_inhumation
    Click Element  link:operation_10_inhumation
    Click On Form Portlet Action  om_etat  modifier
    Saisir l'état  null  null  null  null  null  false  null
    Click On Submit Button
    # On copie l'état
    Click On Form Portlet Action  om_etat  copier  modale
    Click Element  css=.ui-dialog .ui-dialog-buttonset .ui-button-text-only
    Click On Back Button
    # On accède à la copie de l'état et on saisit les champs de fusion à tester
    Click Element  link:copie du ${DATE_FORMAT_DD/MM/YYYY}
    Click On Form Portlet Action  om_etat  modifier
    ${champs_fusions_operation} =  Set Variable  [operation.date] [operation.heure] [operation.defunt_titre] [operation.defunt_nom] [operation.defunt_marital] [operation.defunt_prenom] [operation.defunt_datenaissance] [operation.defunt_lieunaissance] [operation.defunt_datedeces] [operation.defunt_lieudeces] [operation.defunt_parente] [operation.defunt_nature] [autorisation.nature] [autorisation.titre] [autorisation.nom] [autorisation.marital] [autorisation.prenom] [autorisation.datenaissance] [autorisation.dcd] [autorisation.adresse1] [autorisation.adresse2] [autorisation.cp] [autorisation.ville] [autorisation.telephone1] [autorisation.telephone2] [autorisation.courriel] [autorisation.observation]
    Saisir l'état  null  null  null  ${champs_fusions_operation}  null  true  null
    Click On Submit Button
    Valid Message Should Contain  Vos modifications ont bien été enregistrées.
    # On ajoute un défunt
    &{operation07} =  Create Dictionary
    ...  date=${DATE_FORMAT_DD/MM/YYYY}
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession01_id})
    ...  emplacement_autocomplete_id=${concession01_id}
    ...  demandeur=(${concessionnaire_concession01.nature}) ${concessionnaire_concession01.titre} ${concessionnaire_concession01.marital} ${concessionnaire_concession01.prenom}
    ...  defunt_titre=Monsieur
    ...  defunt_nom=SUPONT${testid}MERGEFIELDS
    ...  defunt_prenom=MARCELMERGEFIELDS
    ...  defunt_marital=LOLO
    ...  defunt_datenaissance=01/01/1970
    ...  defunt_lieunaissance=ARLES
    ...  defunt_datedeces=25/05/2017
    ...  defunt_lieudeces=LIBREVILLE
    ...  defunt_parente=LILI
    ...  defunt_nature=cercueil
    ${operation07_id} =  Ajouter l'opération d'inhumation sur concession  ${operation07}

    Depuis le listing des opérations d'inhumation sur concession
    Use Simple Search  id  ${operation07_id}
    Click Element  css=#action-tab-inhumation_concession-left-edition-operation-${operation07_id}
    Unselect Checkbox  //input[contains(@value, 'operation_20_convocation_police_inhumation')]
    Unselect Checkbox  //input[contains(@value, 'operation_30_travaux_inhumation')]
    Unselect Checkbox  //input[contains(@value, 'operation_40_compte_rendu_inhumation')]
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=input[type="submit"]
    ${contenu_pdf} =  Create List  ${operation07.date}  ${operation07.heure}  ${operation07.defunt_titre}  ${operation07.defunt_nom}  ${operation07.defunt_marital}  ${operation07.defunt_prenom}  ${operation07.defunt_datenaissance}  ${operation07.defunt_lieunaissance}  ${operation07.defunt_datedeces}  ${operation07.defunt_lieudeces}  ${operation07.defunt_parente}  ${operation07.defunt_nature}  ${concessionnaire_concession01.nature}  ${concessionnaire_concession01.titre}  ${concessionnaire_concession01.nom}  ${concessionnaire_concession01.marital}  ${concessionnaire_concession01.prenom}  ${concessionnaire_concession01.datenaissance}  ${concessionnaire_concession01.dcd}  ${concessionnaire_concession01.adresse1}  ${concessionnaire_concession01.adresse2}  ${concessionnaire_concession01.cp}  ${concessionnaire_concession01.ville}  ${concessionnaire_concession01.telephone1}  ${concessionnaire_concession01.telephone2}  ${concessionnaire_concession01.courriel}  ${concessionnaire_concession01.observation}
    Vérifier Que Le PDF Contient Des Strings  ${OM_PDF_TITLE}  ${contenu_pdf}

    # On supprime la copie du titre_de_recettes et on réactive le courrier titre_de_recettes pour revenir à un état cohérent
    Depuis le listing des états
    Use Simple Search  id  operation_10_inhumation
    #
    Click Element  link:copie du ${DATE_FORMAT_DD/MM/YYYY}
    Click On Form Portlet Action  om_etat  supprimer
    Click On Submit Button
    Click Element  link:operation_10_inhumation
    Click On Form Portlet Action  om_etat  modifier
    Saisir l'état  null  null  null  null  null  true  null
    Click On Submit Button
    Valid Message Should Contain  Vos modifications ont bien été enregistrées.


Ajout d'une opération de réduction sur une concession
    [Documentation]  Ce test permet de créer une opération de réduction et de vérifier
    ...  qu'on ne peut choisir que des défunts qui sont présent dans l'emplacement sélectionné
    &{concession04} =  Create Dictionary
    ...  famille=OPERATIONREDUCTION${testid}
    ...  numero=20
    ...  cimetierelib=${cimetiere01.cimetierelib}
    ...  zonelib=${zone01_cim01.zonetype} ${zone01_cim01.zonelib}
    ...  voielib=${voie01_zone01_cim01.voietype} ${voie01_zone01_cim01.voielib}
    ${concession04_id} =  Ajouter la concession  ${concession04}

    &{defunt02} =  Create Dictionary
    ...  titre=Monsieur
    ...  nom=SUPONT${testid}REDUCTION
    ...  prenom=MANUELLI
    ...  datenaissance=01/01/1970
    ...  lieunaissance=ARLES
    ...  datedeces=25/05/2017
    ...  lieudeces=LIBREVILLE
    ...  nature=cercueil
    Ajouter le defunt dans le contexte de la concession  ${defunt02}  ${concession04_id}

    &{defunt03} =  Create Dictionary
    ...  titre=Monsieur
    ...  nom=MALOU${testid}REDUCTION
    ...  prenom=MARCELO
    ...  datenaissance=01/01/1970
    ...  lieunaissance=ARLES
    ...  datedeces=25/05/2017
    ...  lieudeces=LIBREVILLE
    ...  nature=cercueil
    Ajouter le defunt dans le contexte de la concession  ${defunt03}  ${concession04_id}

    &{operation08} =  Create Dictionary
    ...  date=31/05/2017
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession04_id})
    ...  emplacement_autocomplete_id=${concession04_id}
    ${operation08_id} =  Ajouter l'opération de réduction sur concession  ${operation08}

    Depuis le contexte de l'opération de réduction sur concession  ${operation08_id}
    Click Element  css=#operation_defunt
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click On Add Button

    # On vérifie que les défunts de l'emplacement sont présents
    ${defunt_present} =  Create List  MALOU${testid}REDUCTION MARCELO  SUPONT${testid}REDUCTION MANUELLI
    Select List Should Contain List  css=#defunt  ${defunt_present}

    # On vérifie qu'il n'existe pas d'autre défunt
    ${defunt_non_present} =  Create List  SUPONT${testid}MERGEFIELDS MARCELMERGEFIELDS  SUPONT${testid} Marcel
    Select List Should Not Contain List  css=#defunt  ${defunt_non_present}

    Valider l'opération de réduction sur concession  ${operation08_id}


Vérification du bon fonctionnement du widget des opérations en cours
    [Documentation]  Permet de vérifier que le widget des opérations en cours
    ...  affiche correctement les opérations sur le tableau de bord et dans le listing
    ...  dédié.

    Depuis la page d'accueil  admin  admin

    &{operation09} =  Create Dictionary
    ...  date=31/05/2017
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession03_id})
    ...  emplacement_autocomplete_id=${concession03_id}
    ${operation09.id} =  Ajouter l'opération de réduction sur concession  ${operation09}
    ${operation09.num_dossier} =  Get Text  css=#numdossier

    &{operation10} =  Create Dictionary
    ...  date=31/05/2017
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession03_id})
    ...  emplacement_autocomplete_id=${concession03_id}
    ...  defunt_titre=Monsieur
    ...  defunt_nom=SUPONT${testid}WIDGET
    ...  defunt_prenom=MARCELWIDGET
    ...  defunt_marital=LOULOU
    ...  defunt_datenaissance=01/01/1970
    ...  defunt_lieunaissance=ARLES
    ...  defunt_datedeces=25/05/2017
    ...  defunt_lieudeces=LIBREVILLE
    ...  defunt_nature=cercueil
    ${operation10.id} =  Ajouter l'opération d'inhumation sur concession  ${operation10}
    ${operation10.num_dossier} =  Get Text  css=#numdossier

    Depuis la page d'accueil  admin  admin
    Click Element  css=#action-tab-operation-left-consulter-${operation10.id}
    Le titre de la page doit être  Opérations > Inhumation En Concession > Id ${operation10.id} - N° De Dossier ${operation10.num_dossier}
    La page ne doit pas contenir d'erreur

    # On vérifie que le lien vers tout les contrats à valider amène bien vers le listing des contrats avec valider à "Non"
    Depuis la page d'accueil  admin  admin
    Click Element  link:Voir toutes les opérations en cours

    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#action-tab-operation_en_cours-left-consulter-${operation09.id}
    Le titre de la page doit être  Opérations > Réduction En Concession > Id ${operation09.id} - N° De Dossier ${operation09.num_dossier}
    La page ne doit pas contenir d'erreur

    Click On Portlet Action  reduction_concession  modifier
    Click On Submit Button

    Click On Back Button

    Le titre de la page doit être  Recherche > Opération En Cours

Vérification du bon fonctionnement du tri sur les listings ayant la 'date' comme colonne
    [Documentation]  Permet de vérifier le bon fonctionnement du tri de la colonne "date" sur tous les listings
    ...  suivants : 
    ...  - Opérations en cours (menu "Recherche")
    ...  - Inhumation en concession (menu "Opérations")
    ...  - Réduction en concession (idem)
    ...  - Transfert emplacement (idem)
    ...  - Opération(s) traitée(s) (idem)
    ...  - Opération archivée (menu "Archive")
    ...  - Emplacement archivée (menu "Archive" sous menu "Opération archivée")
    ...  Les opérations nécessaires sont ajoutés dans la constitution de jeu de données.
    ...  On crée au minimum deux éléments pour chaque listing, ce qui nous permettra de vérifier que le tri des listings
    ...  s'effectuent correctement et qu'il n'y a pas d'erreurs.
    Depuis la page d'accueil  admin  admin
     
    #
    # Menu RECHERCHE (1 listing)
    #
    # Listing : opérations en cours
    Depuis le listing  operation_en_cours
    Le titre de la page doit être  Recherche > Opération En Cours
    # On recherche l'enregistrement
    Use Simple Search  Tous  ${concession04.famille},${concession05.famille}
    # On teste le tri sur la colonne 'date'
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-5 span a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-5 span a
    La page ne doit pas contenir d'erreur
    # Vérification du contenu des listings
    # La famille TATA doit passer en 1er dans le listing pour que le tri soit fonctionnelle sur la colonne 'date'
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(1) td.col-5 a  ${operation04.date}
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(3) td.col-5 a  ${operation03.date}

    #
    # Menu OPÉRATIONS (4 listings)
    #
    # Listing : Réduction En Concession
    Depuis le listing des opérations de réduction sur concession
    Le titre de la page doit être  Opérations > Réduction En Concession 
    # On recherche l'enregistrement
    Use Simple Search  Tous  ${concession04.famille},${concession05.famille}
    # On teste le tri sur la colonne 'date'
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-4 span a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-4 span a
    La page ne doit pas contenir d'erreur
    # Vérification du contenu des listings
    # La famille TATA doit passer en 1er dans le listing pour que le tri soit fonctionnelle sur la colonne 'date'
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(1) td.col-4 a  ${operation04.date}
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(2) td.col-4 a  ${operation03.date}
    #
    # Listing : Transfert emplacement
    Depuis le listing des opérations de transfert
    Le titre de la page doit être  Opérations > Transfert
    # On recherche l'enregistrement
    Use Simple Search  Tous  ${concession04.famille},${concession05.famille}
    # On teste le tri sur la colonne 'date'
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-4 span a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-4 span a
    La page ne doit pas contenir d'erreur
    # Vérification du contenu des listings
    # La famille TATA doit passer en 1er dans le listing pour que le tri soit fonctionnelle sur la colonne 'date'
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(1) td.col-4 a  ${operation04.date}
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(2) td.col-4 a  ${operation03.date}
    #
    # Listing : Inhumation concession
    Depuis le listing des opérations d'inhumation sur concession
    Le titre de la page doit être  Opérations > Inhumation En Concession
    # On recherche l'enregistrement
    Use Simple Search  Tous  DURAND400,DUPONT400
    # On teste le tri sur la colonne 'date'
    Click On Link  css=.tab-tab tr th.col-4 span a
    Click On Link  css=.tab-tab tr th.col-4 span a
    La page ne doit pas contenir d'erreur
    # Vérification du contenu des listings
    # La famille DUPONT400 doit passer en 1er dans le listing pour que le tri soit fonctionnelle sur la colonne 'date'
    Element Should Contain  css=table.tab-tab tr:nth-child(1) td.col-2 a  DURAND400
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(4) td.col-2 a  DUPONT400

    # Mise en place du contexte pour l'affichage de données sur le listing des opérations archivées
    #
    # OPÉRATION TRAITÉES (opérations qui seront validés par les tests)
    #
    Depuis le contexte de l'opération de réduction sur concession  ${operation_01.id}
    ${operation_01.numdossier} =  Get Text  css=#numdossier
    # Input Text  css=#date  ${operation03.date}
    Click Element  operation_defunt
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.add-16
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Select From List By Label  defunt  PIERREBIENTOTMICHEL
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=input[type="submit"]
    #
    Valider l'opération de réduction sur concession  ${operation_01.id}

    Depuis le contexte de l'opération de réduction sur concession  ${operation_02.id}
    ${operation_02.numdossier} =  Get Text  css=#numdossier
    # Input Text  css=#date  ${operation04.date}
    Click Element  operation_defunt
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.add-16
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Select From List By Label  defunt  ANNEBIENTOTMICHELLE
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=input[type="submit"]
    #
    Valider l'opération de réduction sur concession  ${operation_02.id}

    Depuis le contexte de l'opération de transfert  ${operation_03.id}
    ${operation_03.numdossier} =  Get Text  css=#numdossier
    # Input Text  css=#date  ${operation03.date}
    Click Element  operation_defunt
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.add-16
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Select From List By Label  defunt  PIERREBIENTOTMICHEL
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=input[type="submit"]
    #
    Valider l'opération de transfert  ${operation_03.id}

    Depuis le contexte de l'opération de transfert  ${operation_04.id}
    ${operation_04.numdossier} =  Get Text  css=#numdossier
    # Input Text  css=#date  ${operation04.date}
    Click Element  operation_defunt
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.add-16
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Select From List By Label  defunt  ANNEBIENTOTMICHELLE
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=input[type="submit"]
    #
    Valider l'opération de transfert  ${operation_04.id}

    # Listing : Opération(s) traitée(s)
    Depuis le listing des opérations traitées
    Le titre de la page doit être  Opérations > Traitées
    # On recherche l'enregistrement
    Use Simple Search  Tous  ${concession04.famille},${concession05.famille}
    # On teste le tri sur la colonne 'date'
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-5 span a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-5 span a
    La page ne doit pas contenir d'erreur
    # Vérification du contenu des listings
    # La famille TATA doit passer en 1er dans le listing pour que le tri soit fonctionnelle sur la colonne 'date'
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(1) td.col-5  ${operation04.date}
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(3) td.col-5  ${operation03.date}

    # OPÉRATIONS ARCHIVÉES (sur lesquelles on aura ajouté un défunt)
    #
    # Archivage
    # Fin de concession pour famille TOTO
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Go To Submenu In Menu  archive  fin_concession
    Le titre de la page doit être  Archives > Fin De Concession
    First Tab Title Should Be  Fin De Concession
    # On recherche l'enregistrement
    Use Simple Search  Tous  ${concession04.famille}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click On Link  ${concession04.id}
    # Archivage
    Input Text  css=input[name="dateexhumation"]  10/05/2018
    Select From List By Label  ossuaire  ${ossuaire01.id} - ${ossuaire01.famille}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=input[type="submit"]
    # Il ne faut pas d'erreur de bdd
    La page ne doit pas contenir d'erreur
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Valid Message Should Be  Le traitement est terminé.
    #
    # Fin de concession pour famille TATA
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Go To Submenu In Menu  archive  fin_concession
    Le titre de la page doit être  Archives > Fin De Concession
    First Tab Title Should Be  Fin De Concession
    # On recherche l'enregistrement
    Use Simple Search  Tous  ${concession05.famille}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click On Link  ${concession05.id}
    # Archivage
    Input Text  css=input[name="dateexhumation"]  10/05/2018
    Select From List By Label  ossuaire  ${ossuaire01.id} - ${ossuaire01.famille}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=input[type="submit"]
    # Il ne faut pas d'erreur de bdd
    La page ne doit pas contenir d'erreur
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Valid Message Should Be  Le traitement est terminé.

    # Affichage des données pour les listings 'emplacement' et 'opération archivé' du menu 'Archive'
    #
    # Menu ARCHIVE (2 listings)
    #
    # Listing : opérations archivées
    Depuis le listing des opérations archivées
    Le titre de la page doit être  Application > Opération Archivée
    # On recherche l'enregistrement
    Use Simple Search  n° de dossier  ${operation_01.numdossier},${operation_02.numdossier} 
    # On teste le tri sur la colonne 'date'
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-8 span a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-8 span a
    La page ne doit pas contenir d'erreur
    # Vérification du contenu des listings
    # La famille TATA doit passer en 1er dans le listing pour que le tri soit fonctionnelle sur la colonne 'date'
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(1) td.col-8 a  ${operation04.date}
    Wait Until Element Contains  css=table.tab-tab tr:nth-child(2) td.col-8 a  ${operation03.date}

    # Listing : emplacements archivées
    Depuis l'onglet 'opérations' de l'emplacement archivé  ${concession04.id}
    Le titre de la page doit être  Application > Emplacement Archivé > ${concession04.id} Concession
    # Les dates étant similaire, on vérifie juste que le tri de génère pas d'erreur
    Wait Until Element Contains  css=table.tab-tab tbody tr:nth-child(1) td.col-2  reduction
    Element Should Contain  css=table.tab-tab tbody tr:nth-child(2) td.col-2  transfert
    # On teste le tri sur la colonne 'date'
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-7 span a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.tab-tab tr th.col-7 span a
    La page ne doit pas contenir d'erreur

Vérification du bon fonctionnement du champ demandeur dans les opérations
    [Documentation]  On vérifie que le champ demandeur affiche bien les contacts de l'emplacement source sélectionné préalablement.
    ...  Il faut aussi vérifier que lorsqu'on choisi un emplacement sans contact, la liste déroulante ne contient pas de valeur.

    Depuis la page d'accueil  admin  admin

    @{operation_forms} =  Create List
    ...  Depuis le formulaire d'ajout d'une opération d'inhumation sur concession
    ...  Depuis le formulaire d'ajout d'une opération de réduction sur concession
    ...  Depuis le formulaire d'ajout d'une opération de transfert

    @{validation_operation} =  Create List
    ...  Valider l'opération d'inhumation sur concession
    ...  Valider l'opération de réduction sur concession
    ...  Valider l'opération de transfert

    ${defunt} =  Create Dictionary
    ...  defunt_titre=Monsieur
    ...  defunt_nom=DEMANDEUR${testid}
    ...  defunt_prenom=DEFUNTDEMANDE
    ...  defunt_marital=LOLITO
    ...  defunt_datenaissance=01/01/1970
    ...  defunt_lieunaissance=ARLES
    ...  defunt_datedeces=25/05/2017
    ...  defunt_lieudeces=LIBREVILLE
    ...  defunt_nature=cercueil

    ${value_search_emplacement_sans_demandeur} =  Create Dictionary
    ...  emplacement_autocomplete_search=(${concession_sans_demandeur.id})
    ...  emplacement_autocomplete_id=${concession_sans_demandeur.id}

    ${value_search_emplacement} =  Create Dictionary
    ...  date=31/05/2017
    ...  heure=12:00:00
    ...  emplacement_autocomplete_search=(${concession_demandeur.id})
    ...  emplacement_autocomplete_id=${concession_demandeur.id}

    ${value_search_emplacement_transfert} =  Create Dictionary
    ...  emplacement_transfert_autocomplete_search=(${concession_sans_demandeur.id})
    ...  emplacement_transfert_autocomplete_id=${concession_sans_demandeur.id}

    ${nb_form} =  Get length  ${operation_forms}
    : FOR  ${form_num}  IN RANGE  ${nb_form}
    \  Run Keyword  @{operation_forms}[${form_num}]
       # Sans emplacement, pas de demandeur
    \  Element Should Be Visible  css=#demandeur
    \  ${list_libelle_demandeur_empty} =  Get List Items  css=#demandeur
    \  ${expected_list_libelle} =  Create List  Choisir demandeur
    \  Should Be Equal  ${expected_list_libelle}  ${list_libelle_demandeur_empty}
       # Concession sans demandeur, le select ne bouge pas
    \  Saisir les valeurs dans le formulaire de l'opération  ${value_search_emplacement_sans_demandeur}
    \  ${list_libelle_demandeur_empty} =  Get List Items  css=#demandeur
    \  Should Be Equal  ${expected_list_libelle}  ${list_libelle_demandeur_empty}
       # On réinitialise l'autocomplete d'emplacement
    \  Click Element  css=#autocomplete-emplacement-empty
       # Un emplacement avec des demandeurs possibles
       # et les champs obligatoires
    \  Saisir les valeurs dans le formulaire de l'opération  ${value_search_emplacement}
    \  Run Keyword If  ${form_num} == 2  Saisir les valeurs dans le formulaire de l'opération  ${value_search_emplacement_transfert}
       # Le nom est conditionné, si marital n'est pas vide alors c'est ce champ qui est utilisé
       # sinon c'est le champ nom
    \  ${index_demandeur_to_select} =  Evaluate  ${form_num}+1
    \  @{list_libelle_demandeur} =  Get List Items  css=#demandeur
    \  @{expected_list_libelle} =  Create List
    \  ...  Choisir demandeur
    \  ...  (${concessionnaire.nature}) ${concessionnaire.titre} ${concessionnaire.marital} ${concessionnaire.prenom}
    \  ...  (${ayantdroit.nature}) ${ayantdroit.titre} ${ayantdroit.marital} ${ayantdroit.prenom}
    \  ...  (${autre_contact.nature}) ${autre_contact.titre} ${autre_contact.nom} ${autre_contact.prenom}
    \  Should Be Equal  ${expected_list_libelle}  ${list_libelle_demandeur}
    \  Select From List By Label  css=#demandeur  @{list_libelle_demandeur}[${index_demandeur_to_select}]
    \  Run Keyword If  ${form_num} == 0  Saisir les valeurs dans le formulaire de l'opération  ${defunt}
    \  Click On Submit Button
    \  ${id_operation} =  Get Text  css=#form-content #operation
    \  Run Keyword If  ${form_num} == 1  Ajouter un défunt sur l'opération de réduction sur concession  ${id_operation}  ${defunt.defunt_nom} ${defunt.defunt_prenom}
    \  Run Keyword If  ${form_num} == 2  Ajouter un défunt sur l'opération de transfert  ${id_operation}  ${defunt.defunt_nom} ${defunt.defunt_prenom}
    \  Click Element  css=#main
       # On vérifie que la valeur est bien la même en mode consulter
    \  Element Text Should Be  css=#demandeur  @{list_libelle_demandeur}[${index_demandeur_to_select}]
       # Vérification de la colonne dans le listing
    \  Click On Back Button
    \  Use Simple Search  demandeur  @{list_libelle_demandeur}[${index_demandeur_to_select}]
    \  Element Should Contain  css=.tab-data.odd  @{list_libelle_demandeur}[${index_demandeur_to_select}]
       # Vérification dans le listing des opérations en cours
    \  Depuis le listing des opérations en cours
    \  Use Simple Search  demandeur  @{list_libelle_demandeur}[${index_demandeur_to_select}]
    \  Element Should Contain  css=.tab-data.odd  @{list_libelle_demandeur}[${index_demandeur_to_select}]
       # On valide l'opération pour vérifier le listing de l'onglet opération de concession
    \  Run Keyword  @{validation_operation}[${form_num}]  ${id_operation}
    \  Depuis l'onglet 'opérations' de la concession  ${concession_demandeur.id}
    \  Input Text  css=#recherchedyn  @{list_libelle_demandeur}[${index_demandeur_to_select}]
    \  Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  css=.tab-data.odd  @{list_libelle_demandeur}[${index_demandeur_to_select}]
       # Vérification dans le listing des opérations traitées
    \  Depuis le listing des opérations traitées
    \  Use Simple Search  demandeur  @{list_libelle_demandeur}[${index_demandeur_to_select}]
    \  Element Should Contain  css=.tab-data.odd  @{list_libelle_demandeur}[${index_demandeur_to_select}]