*** Settings ***
Documentation  Test sur les dossiers d'instruction.

# On inclut les mots-clefs
Resource  resources/resources.robot
# On ouvre/ferme le navigateur au début/à la fin du Test Suite.
Suite Setup  For Suite Setup
Suite Teardown  For Suite Teardown

*** Test Cases ***
Suppression d'un dossier d'instruction
    [Documentation]  Ce test case permet de verifier la suppression d'un dossier
    ...  d'instruction non instruit pour les profils ayant la permission.

    # On désactive l'option de suppression des dossiers d'instruction
    Depuis la page d'accueil  admin  admin
    Ajouter le paramètre depuis le menu  option_suppression_dossier_instruction  false  agglo

    # On ajoute les permissions de supression des dossiers d'instruction du
    # contentieux au profil 'JURISTE'
    Ajouter le droit depuis le menu  dossier_contentieux_mes_recours_supprimer  JURISTE
    Ajouter le droit depuis le menu  dossier_contentieux_tous_recours_supprimer  JURISTE
    Ajouter le droit depuis le menu  dossier_contentieux_mes_infractions_supprimer  JURISTE
    Ajouter le droit depuis le menu  dossier_contentieux_toutes_infractions_supprimer  JURISTE

    # On ajoute les permissions de supression des dossiers d'instruction ADS au
    # profil 'INSTRUCTEUR'
    Ajouter le droit depuis le menu  dossier_instruction_supprimer  INSTRUCTEUR
    Ajouter le droit depuis le menu  dossier_instruction_mes_encours_supprimer  INSTRUCTEUR
    Ajouter le droit depuis le menu  dossier_instruction_tous_encours_supprimer  INSTRUCTEUR
    Ajouter le droit depuis le menu  dossier_instruction_mes_clotures_supprimer  INSTRUCTEUR
    Ajouter le droit depuis le menu  dossier_instruction_tous_clotures_supprimer  INSTRUCTEUR

    # On ajoute la permission de supression des dossiers d'instruction au profil
    # 'GUICHET UNIQUE'
    Ajouter le droit depuis le menu  dossier_instruction_supprimer  GUICHET UNIQUE

    # On vérifie que l'option désactivée ne permet pas la suppression d'un
    # dossier d'instruction
    &{args_dossier} =  Create Dictionary
    ...  om_collectivite=MARSEILLE
    ...  dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
    ...  demande_type=Dépôt Initial
    &{args_petitionnaire1} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM01
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM01
    ...  om_collectivite=MARSEILLE
    ${di1} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire1}
    Depuis la page d'accueil  instr  instr
    Depuis le contexte du dossier d'instruction  ${di1}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer

    # On active l'option de suppression des dossiers d'instruction
    Depuis la page d'accueil  admin  admin
    Modifier le paramètre  option_suppression_dossier_instruction  true

    # On vérifie que l'option activée permet la suppression d'un dossier
    # d'instruction
    Depuis la page d'accueil  instr  instr
    Depuis le contexte du dossier d'instruction  ${di1}
    Portlet Action Should Be In Form  dossier_instruction  supprimer

    # On vérifie qu'un instructeur d'une autre division ne puisse pas supprimer
    # le dossier d'instruction
    Depuis la page d'accueil  instr2  instr
    Depuis le contexte du dossier d'instruction  ${di1}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer

    # On supprime le dossier d'instruction
    Depuis la page d'accueil  instr  instr
    Supprimer le dossier d'instruction  ${di1}
    Valid Message Should Be  La suppression a été correctement effectuée.

    # On vérifie que le dossier d'instruction suivant récupère bien la
    # numérotation du dossier supprimé
    &{args_petitionnaire2} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM02
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM02
    ...  om_collectivite=MARSEILLE
    ${di2} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire2}
    Should Be Equal  ${di1}  ${di2}
    Supprimer le dossier d'instruction  ${di2}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On vérifie que la suppression d'un dossier d'instruction ADS n'est pas
    # possible si celui-ci est l'autorisation contestée d'un recours
    &{args_petitionnaire3} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM03
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM03
    ...  om_collectivite=MARSEILLE
    ${di3} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire3}
    &{args_dossier_contentieux} =  Create Dictionary
    ...  dossier_autorisation_type_detaille=Recours contentieux
    ...  demande_type=Dépôt Initial REC
    ...  autorisation_contestee=${di3}
    ...  om_collectivite=MARSEILLE
    ${di4} =  Ajouter la demande par WS  ${args_dossier_contentieux}

    Depuis le contexte du dossier d'instruction  ${di3}
    Supprimer le dossier d'instruction  ${di3}
    Error Message Should Be  Le dossier d'instruction ne peut pas être supprimé car celui-ci est lié à un contentieux.

    # On supprime le recours
    Depuis la page d'accueil  juriste  juriste
    Supprimer le dossier d'instruction  ${di4}  recours
    Valid Message Should Contain  La suppression a été correctement effectuée.
    # On vérifie que l'autorisation constestée peut être désormais supprimée
    Depuis la page d'accueil  instr  instr
    Supprimer le dossier d'instruction  ${di3}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On vérifie qu'un profil "guichet" peut supprimer un dossier d'instruction
    # non instruit
    &{args_petitionnaire4} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM04
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM04
    ...  om_collectivite=MARSEILLE
    ${di5} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire4}
    Depuis la page d'accueil  guichet  guichet
    Depuis le contexte du dossier d'instruction  ${di5}
    Supprimer le dossier d'instruction  ${di5}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On vérifie qu'un profil "guichet" ne peut pas supprimer un dossier
    # d'instruction déjà instruit
    # On vérifie également l'affichage du dossier d'autorisation à chaque étape
    &{args_petitionnaire5} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM05
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM05
    ...  om_collectivite=MARSEILLE
    ${di6} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire5}
    Depuis la page d'accueil  instr  instr

    ${da} =  Get Substring  ${di6}  0  -2
    Depuis le contexte du dossier d'autorisation  ${da}
    Form Static Value Should Be  id=dit_libelle_0  Initial

    Ajouter une instruction au DI  ${di6}  accepter un dossier sans réserve

    Depuis le contexte du dossier d'autorisation  ${da}
    Element Should Not Be Visible  id=dit_libelle_0

    Depuis la page d'accueil  guichet  guichet
    Depuis le contexte du dossier d'instruction  ${di6}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer

    # On vérifie la suppression d'un dossier d'instruction sur existant
    # On vérifie également l'affichage du dossier d'autorisation à chaque étape
    &{args_dossier_existant} =  Create Dictionary
    ...  demande_type=Demande de modification
    ...  dossier_instruction=${di6}
    ${di_m1} =  Ajouter la demande par WS  ${args_dossier_existant}

    Depuis le contexte du dossier d'autorisation  ${da}
    Form Static Value Should Be  id=dit_libelle_0  Modificatif

    Supprimer le dossier d'instruction  ${di_m1}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On vérifie la numérotation du prochain dossier d'instruction sur existant
    &{args_dossier_existant} =  Create Dictionary
    ...  demande_type=Demande de modification
    ...  dossier_instruction=${di6}
    ${di_m2} =  Ajouter la demande par WS  ${args_dossier_existant}
    Should Be Equal  ${di_m1}  ${di_m2}
    Supprimer le dossier d'instruction  ${di_m2}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On vérifie que le super administrateur peut supprimer un dossier
    # d'instruction non instruit
    # On vérifie également l'affichage du dossier d'autorisation à chaque étape
    Depuis la page d'accueil  admin  admin
    Depuis le contexte du dossier d'instruction  ${di6}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer
    Supprimer l'instruction  ${di6}  accepter un dossier sans réserve
    Depuis le contexte du dossier d'autorisation  ${da}
    Form Static Value Should Be  id=dit_libelle_0  Initial
    Supprimer le dossier d'instruction  ${di6}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On vérifie la suppression de plusieurs dossier d'instruction en cascade
    # ainsi que la condition d'affichage de l'action de suppression précisant
    # qu'il s'agit du dernier dossier de sa numérotation
    &{args_petitionnaire6} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM06
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM06
    ...  om_collectivite=MARSEILLE
    ${di7} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire6}
    &{args_petitionnaire7} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM07
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM07
    ...  om_collectivite=MARSEILLE
    ${di8} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire7}
    &{args_petitionnaire8} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM08
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM08
    ...  om_collectivite=MARSEILLE
    ${di9} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire8}
    &{args_petitionnaire9} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM09
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM09
    ...  om_collectivite=MARSEILLE
    ${di10} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire9}
    Depuis la page d'accueil  instr  instr
    Depuis le contexte du dossier d'instruction  ${di7}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer
    Depuis le contexte du dossier d'instruction  ${di8}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer
    Depuis le contexte du dossier d'instruction  ${di9}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer
    Depuis le contexte du dossier d'instruction  ${di10}
    Portlet Action Should Be In Form  dossier_instruction  supprimer
    Supprimer le dossier d'instruction  ${di10}
    Valid Message Should Contain  La suppression a été correctement effectuée.
    Depuis le contexte du dossier d'instruction  ${di7}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer
    Depuis le contexte du dossier d'instruction  ${di8}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer
    Depuis le contexte du dossier d'instruction  ${di9}
    Portlet Action Should Be In Form  dossier_instruction  supprimer
    Supprimer le dossier d'instruction  ${di9}
    Valid Message Should Contain  La suppression a été correctement effectuée.
    Depuis le contexte du dossier d'instruction  ${di7}
    Portlet Action Should Not Be In Form  dossier_instruction  supprimer
    Depuis le contexte du dossier d'instruction  ${di8}
    Portlet Action Should Be In Form  dossier_instruction  supprimer
    Supprimer le dossier d'instruction  ${di8}
    Valid Message Should Contain  La suppression a été correctement effectuée.
    Depuis le contexte du dossier d'instruction  ${di7}
    Portlet Action Should Be In Form  dossier_instruction  supprimer
    # On ajoute à nouveau un dossier d'instruction et on vérifie sa numérotation
    &{args_petitionnaire10} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM10
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM10
    ...  om_collectivite=MARSEILLE
    ${di11} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire10}
    Should Be Equal  ${di8}  ${di11}

    # Isolation de contexte pour vérifier la suppression d'un dossier
    # d'instruction premier de sa numérotation
    Depuis la page d'accueil  admin  admin
    Ajouter la collectivité depuis le menu  FREECITY050  mono
    Ajouter le paramètre depuis le menu  departement  032  FREECITY050
    Ajouter le paramètre depuis le menu  commune  098  FREECITY050
    Ajouter le paramètre depuis le menu  insee  32098  FREECITY050
    &{args_dossier} =  Create Dictionary
    ...  om_collectivite=FREECITY050
    ...  dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
    ...  demande_type=Dépôt Initial
    &{args_petitionnaire11} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM11
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM11
    ...  om_collectivite=FREECITY050
    ${di12} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire11}
    Supprimer le dossier d'instruction  ${di12}
    Valid Message Should Contain  La suppression a été correctement effectuée.
    &{args_petitionnaire12} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM12
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM12
    ...  om_collectivite=FREECITY050
    ${di13} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire12}
    Should Be Equal  ${di12}  ${di13}
    &{args_petitionnaire13} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM13
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM13
    ...  om_collectivite=FREECITY050
    ${di14} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire13}
    Supprimer le dossier d'instruction  ${di14}
    Valid Message Should Contain  La suppression a été correctement effectuée.
    Supprimer le dossier d'instruction  ${di13}
    Valid Message Should Contain  La suppression a été correctement effectuée.
    &{args_petitionnaire14} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM14
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM14
    ...  om_collectivite=FREECITY050
    ${di15} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire14}
    Should Be Equal  ${di13}  ${di15}

    # On complète l'isolation de contexte pour les prochains cas à vérifier
    ${id_contrainte_1} =  Ajouter la contrainte depuis le menu  TEST035SUPPRDICONTRLIB01  PLU  FREECITY050  TEST035SUPPRDICONTRGROUPE  TEST035SUPPRDICONTRSSGROUPE  TEST035SUPPRDICONTRTEXT01
    ${id_contrainte_2} =  Ajouter la contrainte depuis le menu  TEST035SUPPRDICONTRLIB02  PLU  FREECITY050  TEST035SUPPRDICONTRGROUPE  TEST035SUPPRDICONTRSSGROUPE  TEST035SUPPRDICONTRTEXT02
    ${code_service1} =  Set Variable  77
    ${libelle_service1} =  Set Variable  TEST035SERVIC01
    &{args_service} =  Create Dictionary
    ...  abrege=${code_service1}
    ...  libelle=${libelle_service1}
    ...  edition=Consultation - Demande d'avis
    ...  om_collectivite=FREECITY050
    Ajouter le service depuis le listing  ${args_service}
    ${code_service2} =  Set Variable  77
    ${libelle_service2} =  Set Variable  TEST035SERVIC02
    &{args_service} =  Create Dictionary
    ...  abrege=${code_service2}
    ...  libelle=${libelle_service2}
    ...  edition=Consultation - Demande d'avis
    ...  om_collectivite=FREECITY050
    Ajouter le service depuis le listing  ${args_service}
    ${libelle_type_commission} =  Set Variable  TEST035TCOMM01
    &{args_type_commission} =  Create Dictionary
    ...  code=TC
    ...  libelle=${libelle_type_commission}
    ...  om_collectivite=FREECITY050
    Ajouter type de commission  ${args_type_commission}
    &{args_dossier_cu} =  Create Dictionary
    ...  om_collectivite=FREECITY050
    ...  dossier_autorisation_type_detaille=Certificat d'urbanisme
    ...  demande_type=Dépôt Initial
    &{args_petitionnaire16} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM16
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM16
    ...  om_collectivite=FREECITY050
    ${di16} =  Ajouter la demande par WS  ${args_dossier_cu}  ${args_petitionnaire16}
    &{args_petitionnaire17} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM17
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM17
    ...  om_collectivite=FREECITY050
    ${di17} =  Ajouter la demande par WS  ${args_dossier_cu}  ${args_petitionnaire17}

    # On vérifie la suppression d'un DI initial qui n'est pas le premier de sa
    # numérotation dont chaque table liée à au moins deux enregistrements
    &{args_petitionnaire18} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035SUPPRESSIONDOSSIERNOM18
    ...  particulier_prenom=TEST035SUPPRESSIONDOSSIERPRENOM18
    ...  om_collectivite=FREECITY050
    ${di18} =  Ajouter la demande par WS  ${args_dossier}  ${args_petitionnaire18}
    Should Be Equal  ${di14}  ${di18}
    # On ajoute le rapport d'instruction
    Depuis le contexte du rapport d'instruction  ${di18}
    Click On Submit Button In Subform
    Valid Message Should Contain  Vos modifications ont bien été enregistrées.
    Click On Back Button In Subform
    Depuis le contexte du rapport d'instruction  ${di18}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click On SubForm Portlet Action  rapport_instruction  finalise
    Click On Back Button In Subform
    # On ajoute deux contraintes
    Ajouter une contrainte depuis l'onglet du dossier d'instruction  ${di18}
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > legend.collapsible
    Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > legend.collapsible
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > div.fieldsetContent
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > legend.collapsible
    Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > legend.collapsible
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > div.fieldsetContent
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe input#contrainte_${id_contrainte_1}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe input#contrainte_${id_contrainte_2}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sformulaire div.formControls input[type="submit"]
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  css=#sousform-dossier_contrainte div.message.ui-state-valid p span.text  TEST035SUPPRDICONTRLIB01 a été ajoutée au dossier.
    Element Should Contain  css=#sousform-dossier_contrainte div.message.ui-state-valid p span.text  TEST035SUPPRDICONTRLIB02 a été ajoutée au dossier.
    # On ajoute deux consultations
    Ajouter une consultation depuis un dossier  ${di18}  ${code_service1} - ${libelle_service1}
    Ajouter une consultation depuis un dossier  ${di18}  ${code_service2} - ${libelle_service2}
    # On ajoute deux demandes de commission
    Ajouter la commission depuis le contexte du dossier d'instruction  ${di18}  ${libelle_type_commission}  ${date_ddmmyyyy}
    Ajouter la commission depuis le contexte du dossier d'instruction  ${di18}  ${libelle_type_commission}  ${date_ddmmyyyy}
    # On ajoute deux lots
    ${libelle_lot1} =  Set Variable  TEST035LOT01
    &{args_lot} =  Create Dictionary
    ...  libelle=${libelle_lot1}
    Ajouter le lot  ${di18}  ${args_lot}
    ${libelle_lot2} =  Set Variable  TEST035LOT02
    &{args_lot} =  Create Dictionary
    ...  libelle=${libelle_lot2}
    Ajouter le lot  ${di18}  ${args_lot}
    # On ajoute deux pièces + automatiquement un message
    &{document_numerise_values} =  Create Dictionary
    ...  uid_upload=testImportManuel.pdf
    ...  document_numerise_type=arrêté retour préfecture
    ${dossier_message1} =  Ajouter une pièce depuis le dossier d'instruction  ${di18}  ${document_numerise_values}
    Ajouter une pièce depuis le dossier d'instruction  ${di18}  ${document_numerise_values}
    Depuis le contexte du message dans le dossier d'instruction  ${di18}  ${dossier_message1}
    # On ajoute un message manuellement
    ${message} =  Set Variable  MESSAGETEST035SUPPRDI01
    ${dossier_message2} =  Ajouter un message dans le dossier d'instruction  ${di18}  ${message}
    Depuis le contexte du message dans le dossier d'instruction  ${di18}  ${dossier_message2}
    # On ajoute deux blocnotes
    &{args_blocnote} =  Create Dictionary
    ...  note=TEST035BLOCNOTE01
    Ajouter le bloc-note depuis le contexte du dossier d'instruction  ${di18}  ${args_blocnote}
    &{args_blocnote} =  Create Dictionary
    ...  note=TEST035BLOCNOTE02
    Ajouter le bloc-note depuis le contexte du dossier d'instruction  ${di18}  ${args_blocnote}
    # On ajoute deux liaisons
    Ajouter la liaison entre le dossier d'instruction source et le dossier d'instruction cible  ${di18}  ${di16}
    Ajouter la liaison entre le dossier d'instruction source et le dossier d'instruction cible  ${di18}  ${di17}
    Supprimer le dossier d'instruction  ${di18}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On vérifie la suppression d'un DI sur existant dont chaque table liée à au
    # moins deux enregistrements
    Ajouter une instruction au DI  ${di15}  accepter un dossier sans réserve
    &{args_dossier_existant} =  Create Dictionary
    ...  demande_type=Demande de modification
    ...  dossier_instruction=${di15}
    ${di_m3} =  Ajouter la demande par WS  ${args_dossier_existant}
    # On ajoute le rapport d'instruction
    Depuis le contexte du rapport d'instruction  ${di_m3}
    Click On Submit Button In Subform
    Valid Message Should Contain  Vos modifications ont bien été enregistrées.
    Click On Back Button In Subform
    Depuis le contexte du rapport d'instruction  ${di_m3}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click On SubForm Portlet Action  rapport_instruction  finalise
    Click On Back Button In Subform
    # On ajoute deux contraintes
    Ajouter une contrainte depuis l'onglet du dossier d'instruction  ${di_m3}
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > legend.collapsible
    Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > legend.collapsible
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > div.fieldsetContent
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > legend.collapsible
    Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > legend.collapsible
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > div.fieldsetContent
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe input#contrainte_${id_contrainte_1}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe input#contrainte_${id_contrainte_2}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sformulaire div.formControls input[type="submit"]
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  css=#sousform-dossier_contrainte div.message.ui-state-valid p span.text  TEST035SUPPRDICONTRLIB01 a été ajoutée au dossier.
    Element Should Contain  css=#sousform-dossier_contrainte div.message.ui-state-valid p span.text  TEST035SUPPRDICONTRLIB02 a été ajoutée au dossier.
    # On ajoute deux consultations
    Ajouter une consultation depuis un dossier  ${di_m3}  ${code_service1} - ${libelle_service1}
    Ajouter une consultation depuis un dossier  ${di_m3}  ${code_service2} - ${libelle_service2}
    # On ajoute deux demandes de commission
    Ajouter la commission depuis le contexte du dossier d'instruction  ${di_m3}  ${libelle_type_commission}  ${date_ddmmyyyy}
    Ajouter la commission depuis le contexte du dossier d'instruction  ${di_m3}  ${libelle_type_commission}  ${date_ddmmyyyy}
    # On ajoute deux lots
    ${libelle_lot1} =  Set Variable  TEST035LOT01
    &{args_lot} =  Create Dictionary
    ...  libelle=${libelle_lot1}
    Ajouter le lot  ${di_m3}  ${args_lot}
    ${libelle_lot2} =  Set Variable  TEST035LOT02
    &{args_lot} =  Create Dictionary
    ...  libelle=${libelle_lot2}
    Ajouter le lot  ${di_m3}  ${args_lot}
    # On ajoute deux pièces + automatiquement un message
    &{document_numerise_values} =  Create Dictionary
    ...  uid_upload=testImportManuel.pdf
    ...  document_numerise_type=arrêté retour préfecture
    ${dossier_message1} =  Ajouter une pièce depuis le dossier d'instruction  ${di_m3}  ${document_numerise_values}
    Ajouter une pièce depuis le dossier d'instruction  ${di_m3}  ${document_numerise_values}
    Depuis le contexte du message dans le dossier d'instruction  ${di_m3}  ${dossier_message1}
    # On ajoute un message manuellement
    ${message} =  Set Variable  MESSAGETEST035SUPPRDI01
    ${dossier_message2} =  Ajouter un message dans le dossier d'instruction  ${di_m3}  ${message}
    Depuis le contexte du message dans le dossier d'instruction  ${di_m3}  ${dossier_message2}
    # On ajoute deux blocnotes
    &{args_blocnote} =  Create Dictionary
    ...  note=TEST035BLOCNOTE01
   Ajouter le bloc-note depuis le contexte du dossier d'instruction  ${di_m3}  ${args_blocnote}
    &{args_blocnote} =  Create Dictionary
    ...  note=TEST035BLOCNOTE02
   Ajouter le bloc-note depuis le contexte du dossier d'instruction  ${di_m3}  ${args_blocnote}
    # On ajoute deux liaisons
    Ajouter la liaison entre le dossier d'instruction source et le dossier d'instruction cible  ${di_m3}  ${di16}
    Ajouter la liaison entre le dossier d'instruction source et le dossier d'instruction cible  ${di_m3}  ${di17}
    Supprimer le dossier d'instruction  ${di_m3}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On vérifie la suppression d'un DI initial qui est le premier de sa
    # numérotation  dont chaque table liée à au moins deux enregistrements
    # On ajoute une contrainte
    # On ajoute deux contraintes
    Ajouter une contrainte depuis l'onglet du dossier d'instruction  ${di15}
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > legend.collapsible
    Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > legend.collapsible
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrgroupe > div.fieldsetContent
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > legend.collapsible
    Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > legend.collapsible
    Wait Until Element Is Visible  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe > div.fieldsetContent
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe input#contrainte_${id_contrainte_1}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#fieldset-sousform-dossier_contrainte-test035supprdicontrssgroupe input#contrainte_${id_contrainte_2}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sformulaire div.formControls input[type="submit"]
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  css=#sousform-dossier_contrainte div.message.ui-state-valid p span.text  TEST035SUPPRDICONTRLIB01 a été ajoutée au dossier.
    Element Should Contain  css=#sousform-dossier_contrainte div.message.ui-state-valid p span.text  TEST035SUPPRDICONTRLIB02 a été ajoutée au dossier.
    # On ajoute le rapport d'instruction
    Depuis le contexte du rapport d'instruction  ${di15}
    Click On Submit Button In Subform
    Valid Message Should Contain  Vos modifications ont bien été enregistrées.
    Click On Back Button In Subform
    Depuis le contexte du rapport d'instruction  ${di15}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click On SubForm Portlet Action  rapport_instruction  finalise
    Click On Back Button In Subform
    # On ajoute deux consultations
    Ajouter une consultation depuis un dossier  ${di15}  ${code_service1} - ${libelle_service1}
    Ajouter une consultation depuis un dossier  ${di15}  ${code_service2} - ${libelle_service2}
    # On ajoute deux demandes de commission
    Ajouter la commission depuis le contexte du dossier d'instruction  ${di15}  ${libelle_type_commission}  ${date_ddmmyyyy}
    Ajouter la commission depuis le contexte du dossier d'instruction  ${di15}  ${libelle_type_commission}  ${date_ddmmyyyy}
    # On ajoute deux lots
    ${libelle_lot1} =  Set Variable  TEST035LOT01
    &{args_lot} =  Create Dictionary
    ...  libelle=${libelle_lot1}
    Ajouter le lot  ${di15}  ${args_lot}
    ${libelle_lot2} =  Set Variable  TEST035LOT02
    &{args_lot} =  Create Dictionary
    ...  libelle=${libelle_lot2}
    Ajouter le lot  ${di15}  ${args_lot}
    # On ajoute deux pièces + automatiquement un message
    &{document_numerise_values} =  Create Dictionary
    ...  uid_upload=testImportManuel.pdf
    ...  document_numerise_type=arrêté retour préfecture
    ${dossier_message1} =  Ajouter une pièce depuis le dossier d'instruction  ${di15}  ${document_numerise_values}
    Ajouter une pièce depuis le dossier d'instruction  ${di15}  ${document_numerise_values}
    Depuis le contexte du message dans le dossier d'instruction  ${di15}  ${dossier_message1}
    # On ajoute un message manuellement
    ${message} =  Set Variable  MESSAGETEST035SUPPRDI01
    ${dossier_message2} =  Ajouter un message dans le dossier d'instruction  ${di15}  ${message}
    Depuis le contexte du message dans le dossier d'instruction  ${di15}  ${dossier_message2}
    # On ajoute deux blocnotes
    &{args_blocnote} =  Create Dictionary
    ...  note=TEST035BLOCNOTE01
   Ajouter le bloc-note depuis le contexte du dossier d'instruction  ${di15}  ${args_blocnote}
    &{args_blocnote} =  Create Dictionary
    ...  note=TEST035BLOCNOTE02
   Ajouter le bloc-note depuis le contexte du dossier d'instruction  ${di15}  ${args_blocnote}
    # On ajoute deux liaisons
    Ajouter la liaison entre le dossier d'instruction source et le dossier d'instruction cible  ${di15}  ${di16}
    Ajouter la liaison entre le dossier d'instruction source et le dossier d'instruction cible  ${di15}  ${di17}
    Supprimer l'instruction  ${di15}  accepter un dossier sans réserve
    Supprimer le dossier d'instruction  ${di15}
    Valid Message Should Contain  La suppression a été correctement effectuée.

    # On supprime les permissions de supression des dossiers d'instruction du
    # contentieux au profil 'JURISTE'
    Supprimer le droit depuis le contexte du profil  dossier_contentieux_mes_recours_supprimer  JURISTE
    Supprimer le droit depuis le contexte du profil  dossier_contentieux_tous_recours_supprimer  JURISTE
    Supprimer le droit depuis le contexte du profil  dossier_contentieux_mes_infractions_supprimer  JURISTE
    Supprimer le droit depuis le contexte du profil  dossier_contentieux_toutes_infractions_supprimer  JURISTE

    # On supprime les permissions de supression des dossiers d'instruction ADS
    # au profil 'INSTRUCTEUR'
    Supprimer le droit depuis le contexte du profil  dossier_instruction_supprimer  INSTRUCTEUR
    Supprimer le droit depuis le contexte du profil  dossier_instruction_mes_encours_supprimer  INSTRUCTEUR
    Supprimer le droit depuis le contexte du profil  dossier_instruction_tous_encours_supprimer  INSTRUCTEUR
    Supprimer le droit depuis le contexte du profil  dossier_instruction_mes_clotures_supprimer  INSTRUCTEUR
    Supprimer le droit depuis le contexte du profil  dossier_instruction_tous_clotures_supprimer  INSTRUCTEUR

    # On supprime la permission de supression des dossiers d'instruction au
    # profil 'GUICHET UNIQUE'
    Supprimer le droit depuis le contexte du profil  dossier_instruction_supprimer  GUICHET UNIQUE

    # On désactive l'option
    Modifier le paramètre  option_suppression_dossier_instruction  false


Vérification du découpage des données mises à jour du DA
    [Documentation]  Vérifie le découpage des mises à jour des données du
    ...  dossier d'autorisation.
    ...  Depuis un PCI initial qui met à jour toutes les données du DA, la mise
    ...  à jour des données techniques est désactivée et la fiche du DA est
    ...  contrôlé.

    &{args_dossier_para} =  Create Dictionary
    ...  om_collectivite=MARSEILLE
    ...  dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
    ...  demande_type=Dépôt Initial
    &{args_petitionnaire1_para} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035DOSSIERPARALLELENOM1
    ...  particulier_prenom=TEST035DOSSIERPARALLELEPRENOM1
    ...  om_collectivite=MARSEILLE
    ${dipara1} =  Ajouter la demande par WS  ${args_dossier_para}  ${args_petitionnaire1_para}

    # Vérifie la mise à jour des données techniques su DA depuis le DI initial
    Depuis la page d'accueil  instr  instr
    &{donnees_techniques_values} =  Create Dictionary
    ...  ope_proj_desc=Description test dossier parallèle
    Saisir les données techniques du DI  ${dipara1}  ${donnees_techniques_values}
    ${da_para} =  Get Substring  ${dipara1}  0  -2
    Depuis le contexte du dossier d'autorisation  ${da_para}
    Element Should Contain  da_description_projet  -
    Depuis le formulaire de modification du dossier d'instruction  ${dipara1}
    Open Fieldset  dossier_instruction  demandeur
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.edit_demandeur
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Input Text  css=#particulier_nom  TEST035DOSSIERPARALLELENOM1CHANGED
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sousform-container input[value=Modifier]
    Wait Until Keyword Succeeds     ${TIMEOUT}     ${RETRY_INTERVAL}    Valid Message Should Be  Vos modifications ont bien été enregistrées.
    Click On Back Button In SubForm
    Ajouter une instruction au DI  ${dipara1}  adjoint
    Depuis le contexte du dossier d'autorisation  ${da_para}
    Element Should Contain  css=#da_demandeur  TEST035DOSSIERPARALLELENOM1CHANGED
    Element Should Contain  css=#da_description_projet  Description test dossier parallèle

    # Désactive la mise à jour des données techniques du DA depuis le DI initial
    Depuis la page d'accueil  admin  admin
    &{val_type_PCI_P} =  Create Dictionary
    ...  maj_da_dt=false
    Modifier type de dossier d'instruction  PCI  P  ${val_type_PCI_P}

    # Vérifie que les données techniques n'ont pas été mise à jour sur le DA
    Depuis la page d'accueil  instr  instr
    Depuis le contexte du dossier d'instruction  ${dipara1}
    &{donnees_techniques_values_2} =  Create Dictionary
    ...  ope_proj_desc=Dossier sans maj données techniques
    Saisir les données techniques du DI  ${dipara1}  ${donnees_techniques_values_2}
    Depuis le contexte du dossier d'autorisation  ${da_para}
    Element Should Contain  css=#da_description_projet  Description test dossier parallèle
    Depuis le formulaire de modification du dossier d'instruction  ${dipara1}
    Open Fieldset  dossier_instruction  demandeur
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=.edit_demandeur
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Input Text  css=#particulier_nom  TEST035DOSSIERPARALLELENOM1CHANGED2
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sousform-container input[value=Modifier]
    Wait Until Keyword Succeeds     ${TIMEOUT}     ${RETRY_INTERVAL}    Valid Message Should Be  Vos modifications ont bien été enregistrées.
    Click On Back Button In SubForm
    Ajouter une instruction au DI  ${dipara1}  ARRÊTÉ DE REFUS
    Depuis le contexte du dossier d'autorisation  ${da_para}
    Element Should Contain  css=#da_demandeur  TEST035DOSSIERPARALLELENOM1CHANGED2
    Element Should Contain  css=#da_description_projet  Description test dossier parallèle

    # Réactive la mise à jour des données techniques du DA depuis le DI initial
    Depuis la page d'accueil  admin  admin
    &{val_type_PCI_P} =  Create Dictionary
    ...  maj_da_dt=true
    Modifier type de dossier d'instruction  PCI  P  ${val_type_PCI_P}


Vérification de l'instruction de dossier en parallèle
    [Documentation]  Vérifie l'instruction de plusieurs dossiers d'instruction
    ...  sur la même autorisation, en parallèle.
    ...  Depuis un PCI initial accordé, ajout d'un modificatif et d'une DOC. Les
    ...  deux dossiers d'instruction sont instruits parallèlement.

    # Modification des types d'instruction PCI modificatif et DOC pour ne plus
    # mettre à jour toutes les données du DA
    Depuis la page d'accueil  admin  admin
    &{val_type_PCI_DOC} =  Create Dictionary
    ...  maj_da_dt=false
    ...  maj_da_date_daact=false
    ...  maj_da_date_validite=false
    ...  maj_da_date_init=false
    ...  maj_da_etat=false
    ...  maj_da_demandeur=false
    ...  maj_da_lot=false
    ...  maj_da_localisation=false
    Modifier type de dossier d'instruction  PCI  DOC  ${val_type_PCI_DOC}
    &{val_type_PCI_M} =  Create Dictionary
    ...  maj_da_date_doc=false
    Modifier type de dossier d'instruction  PCI  M  ${val_type_PCI_M}

    # Ajout d'un événement disponible pour une DOC et Modificatif, permettant de
    # modifier la date de chantier (un modificatif ne devrait pas pouvoir
    # modifier la date de chantier)
    @{type_di} =  Create List
    ...  PCI - DOC - Ouverture de chantier
    ...  PCI - M - Modificatif
    @{etats_autorises} =  Create List  delai de notification envoye
    &{args_evenement_para} =  Create Dictionary
    ...  libelle=Déclaration ouverture de chantier - 035_dossier_instruction
    ...  dossier_instruction_type=${type_di}
    ...  action=executer les travaux
    ...  etats_autorises=${etats_autorises}
    ...  etats_depuis_lequel_l_evenement_est_disponible=${etats_autorises}
    ...  etat=delai de notification envoye
    Ajouter l'événement depuis le menu  ${args_evenement_para}

    &{args_dossier_para2} =  Create Dictionary
    ...  om_collectivite=MARSEILLE
    ...  dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
    ...  demande_type=Dépôt Initial
    &{args_petitionnaire1_para2} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035DOSSIERPARALLELENOM2
    ...  particulier_prenom=TEST035DOSSIERPARALLELEPRENOM2
    ...  om_collectivite=MARSEILLE
    ${dipara2} =  Ajouter la demande par WS  ${args_dossier_para2}  ${args_petitionnaire1_para2}
    ${da_para2} =  Get Substring  ${dipara2}  0  -2
    Depuis la page d'accueil  instr  instr
    Ajouter une instruction au DI et la finaliser  ${dipara2}  accepter un dossier sans réserve

    # Vérifie que l'ajout d'un modificatif sur l'initial est possible puis ajout
    # de celui-ci
    &{args_demande_modif_para} =  Create Dictionary
    ...  demande_type=Demande de modification
    ...  dossier_instruction=${dipara2}
    Depuis la page d'accueil  guichet  guichet
    Depuis le contexte de demande sur dossier en cours via le menu  ${dipara2}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  demande_type  ${args_demande_modif_para.demande_type}
    ${di_modif_para} =  Ajouter la demande par WS  ${args_demande_modif_para}

    # Vérifie que l'ajout d'une DOC dans ce contexte n'est pas possible
    &{args_demande_doc_para} =  Create Dictionary
    ...  demande_type=Demande d'ouverture de chantier
    ...  dossier_instruction=${dipara2}
    Depuis le contexte de demande sur dossier en cours via le menu  ${dipara2}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Not Contain  demande_type  ${args_demande_doc_para.demande_type}
    Depuis le contexte de demande sur dossier en cours via le menu  ${di_modif_para}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Not Contain  demande_type  ${args_demande_doc_para.demande_type}

    # Modification des types de demande pour qu'une DOC et un modificatif soient
    # compatibles à l'instruction en parallèle
    @{type_di_comp_doc} =  Create List  PCI - Modificatif
    &{type_PCI_DOC_comp} =  Create Dictionary
    ...  dossier_instruction_type_compatible=${type_di_comp_doc}
    Depuis la page d'accueil  admin  admin
    Modifier le type de demande  PCI  DOC  ${type_PCI_DOC_comp}

    # Vérifie que l'ajout d'une DOC sur l'initial ou le modificatif est
    # désormais possible puis ajout de celle-ci
    Depuis la page d'accueil  guichet  guichet
    Depuis le contexte de demande sur dossier en cours via le menu  ${dipara2}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  demande_type  ${args_demande_doc_para.demande_type}
    Depuis le contexte de demande sur dossier en cours via le menu  ${di_modif_para}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  demande_type  ${args_demande_doc_para.demande_type}
    ${di_doc_para} =  Ajouter la demande par WS  ${args_demande_doc_para}

    # Vérifie que les deux dossiers d'instruction en cours sont affichés sur la
    # fiche du DA
    Depuis la page d'accueil  instr  instr
    Depuis le contexte du dossier d'autorisation  ${da_para2}
    Element Should Contain  dit_libelle_0  Ouverture de chantier
    Element Should Contain  dit_libelle_1  Modificatif

    # Vérifie les modifications sur la fiche du DA
    ${date_chantier_doc} =  Add Time To Date  ${date_ddmmyyyy}  5 days  %d/%m/%Y  True  %d/%m/%Y
    Ajouter une instruction au DI  ${di_doc_para}  Déclaration ouverture de chantier - 035_dossier_instruction  ${date_chantier_doc}
    &{donnees_techniques_values_doc} =  Create Dictionary
    ...  ope_proj_desc=Description test dossier parallèle doc
    Saisir les données techniques du DI  ${di_doc_para}  ${donnees_techniques_values_doc}
    Ajouter une instruction au DI et la finaliser  ${di_doc_para}  accepter un dossier sans réserve
    Depuis le contexte du dossier d'autorisation  ${da_para2}
    Element Should Contain  dit_libelle_0  Modificatif
    Element Should Not Be Visible  dit_libelle_1
    Element Should Contain  date_depot_DOC  ${date_chantier_doc}
    Element Should Not Contain  da_description_projet  ${donnees_techniques_values_doc.ope_proj_desc}
    ${date_chantier_m} =  Add Time To Date  ${date_ddmmyyyy}  10 days  %d/%m/%Y  True  %d/%m/%Y
    Ajouter une instruction au DI  ${di_modif_para}  Déclaration ouverture de chantier - 035_dossier_instruction  ${date_chantier_m}
    &{donnees_techniques_values_m} =  Create Dictionary
    ...  ope_proj_desc=Description test dossier parallèle M
    Saisir les données techniques du DI  ${di_modif_para}  ${donnees_techniques_values_m}
    Ajouter une instruction au DI et la finaliser  ${di_modif_para}  accepter un dossier sans réserve
    Depuis le contexte du dossier d'autorisation  ${da_para2}
    Element Should Not Be Visible  dit_libelle_0
    Element Should Not Be Visible  dit_libelle_1
    Element Should Contain  date_depot_DOC  ${date_chantier_doc}
    Element Should Contain  da_description_projet  ${donnees_techniques_values_m.ope_proj_desc}

    # Réactive la mise à jour des infos pour les deux types de dossier
    Depuis la page d'accueil  admin  admin
    &{val_type_PCI_DOC} =  Create Dictionary
    ...  maj_da_dt=true
    ...  maj_da_date_daact=true
    ...  maj_da_date_validite=true
    ...  maj_da_date_init=true
    ...  maj_da_etat=true
    ...  maj_da_demandeur=true
    ...  maj_da_lot=true
    ...  maj_da_localisation=true
    Modifier type de dossier d'instruction  PCI  DOC  ${val_type_PCI_DOC}
    &{val_type_PCI_M} =  Create Dictionary
    ...  maj_da_date_doc=true
    Modifier type de dossier d'instruction  PCI  M  ${val_type_PCI_M}
    # Supprime le dossier compatible du type de demande
    Désactiver les types de demande compatible  PCI  DOC  ${type_PCI_DOC_comp}


Vérification du cas des dossiers en parallèle sur un initial dont l'autorité compétente est différent de commune
    [Documentation]  Vérifie l'instruction de plusieurs dossiers d'instruction
    ...  sur la même autorisation, en parallèle dont l'un est l'initial.
    ...  Depuis un PCI initial en cours dont l'autorité compétente n'est pas la
    ...  commune, ajout d'un modificatif. Les deux dossiers d'instruction sont
    ...  instruits parallèlement.

    # Ajout du type de dossier d'instruction compatible
    Depuis la page d'accueil  admin  admin
    @{type_di_comp} =  Create List  PCI - Initial
    &{type_PCI_DM_comp} =  Create Dictionary
    ...  dossier_instruction_type_compatible=${type_di_comp}
    Modifier le type de demande  PCI  DM  ${type_PCI_DM_comp}

    # Ajout du dossier d'instruction initial et modifie son autorité compétente
    &{args_dossier_para3} =  Create Dictionary
    ...  om_collectivite=MARSEILLE
    ...  dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
    ...  demande_type=Dépôt Initial
    &{args_petitionnaire1_para3} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035DOSSIERPARALLELENOM3
    ...  particulier_prenom=TEST035DOSSIERPARALLELEPRENOM3
    ...  om_collectivite=MARSEILLE
    ${dipara3} =  Ajouter la demande par WS  ${args_dossier_para3}  ${args_petitionnaire1_para3}
    ${da_para3} =  Get Substring  ${dipara3}  0  -2
    &{args_demande_modif_para3} =  Create Dictionary
    ...  demande_type=Demande de modification
    ...  dossier_instruction=${dipara3}
    # Vérifie qu'avec l'autorité commune, il n'est pas possible d'avoir de DI
    # en parallèle
    Depuis la page d'accueil  guichet  guichet
    Depuis le contexte de demande sur dossier en cours via le menu  ${dipara3}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Not Contain  demande_type  ${args_demande_modif_para3.demande_type}
    Depuis la page d'accueil  instr  instr
    Ajouter une instruction au DI  ${dipara3}  Changer l'autorité compétente 'commune état'
    Depuis la page d'accueil  guichet  guichet
    Depuis le contexte de demande sur dossier en cours via le menu  ${dipara3}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  demande_type  ${args_demande_modif_para3.demande_type}
    ${di_modif_para3} =  Ajouter la demande par WS  ${args_demande_modif_para3}
    Depuis la page d'accueil  instr  instr
    Depuis le contexte du dossier d'autorisation  ${da_para3}
    Element Should Contain  dit_libelle_0  Modificatif
    Element Should Contain  dit_libelle_1  Initial

    # Supprime le dossier compatible du type de demande
    Depuis la page d'accueil  admin  admin
    Désactiver les types de demande compatible  PCI  DM  ${type_PCI_DM_comp}


Vérification de l'ajout de demande ne créant pas de DI
    [Documentation]  Vérifie la possibilité d''ajouter des demandes sans
    ...  création de dossier d'instruction mais seulement d'un événement sur le
    ...  dossier ciblé.

    &{args_dossier_para4} =  Create Dictionary
    ...  om_collectivite=MARSEILLE
    ...  dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
    ...  demande_type=Dépôt Initial
    &{args_petitionnaire1_para4} =  Create Dictionary
    ...  qualite=particulier
    ...  particulier_nom=TEST035DOSSIERPARALLELENOM4
    ...  particulier_prenom=TEST035DOSSIERPARALLELEPRENOM4
    ...  om_collectivite=MARSEILLE
    ${dipara4} =  Ajouter la demande par WS  ${args_dossier_para4}  ${args_petitionnaire1_para4}
    ${da_para4} =  Get Substring  ${dipara4}  0  -2
        # Ajout de la demande en parallèle
    &{args_demande_modif_para4} =  Create Dictionary
    ...  demande_type=Demande de modification
    ...  dossier_instruction=${dipara4}
    ${di_modif_para4} =  Ajouter la demande par WS  ${args_demande_modif_para4}

    # Vérifie la possibilité d'ajouter la demande dans les différents contextes
    # et contrôle la création de l'événement et la non création de DI
    &{args_demande_depot_para4} =  Create Dictionary
    ...  demande_type=Dépôt de pièces complémentaire
    ...  om_collectivite=MARSEILLE
    ...  dossier_instruction=${dipara4}
    Depuis la page d'accueil  guichet  guichet
    Depuis le contexte de demande sur dossier en cours via le menu  ${dipara4}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Not Contain  demande_type  ${args_demande_depot_para4.demande_type}
    Depuis la page d'accueil  instr  instr
    Ajouter une instruction au DI  ${dipara4}  Notification de pieces manquante
    Depuis la page d'accueil  guichet  guichet
    Depuis le contexte de demande sur dossier en cours via le menu  ${dipara4}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Element Should Contain  demande_type  ${args_demande_depot_para4.demande_type}
    ${di_depot_para4} =  Ajouter la demande par WS  ${args_demande_depot_para4}
    Depuis la page d'accueil  instr  instr
    Depuis l'onglet instruction du dossier d'instruction  ${dipara4}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Page Should Contain  dépôt de pièces complémentaires
    Depuis l'onglet instruction du dossier d'instruction  ${di_modif_para4}
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Page Should Not Contain  dépôt de pièces complémentaires
    Depuis le contexte du dossier d'autorisation  ${da_para4}
    Page Should Not Contain Element  dit_libelle_1