Commit aa9818e0 authored by THEO GUILLON's avatar THEO GUILLON
Browse files

Merge branch '310-suppression-onglet-information-sur-l-entite-dans-un-traitement' into '1.2.0'

Resolve "Suppression onglet "Information sur l'entité" dans un traitement"

See merge request web-DPO/web-DPO!280
parents 3f0474cd 77017187
......@@ -25,10 +25,12 @@ Le format est basé sur le modèle [Keep a Changelog](http://keepachangelog.com/
- Mise en place de l'initialisation d'un traitement par le DPO
### Evolutions
- Affichage de l'onglet "Information de l'entité" lors de la visualisation d'un traitement au registre
### Corrections
### Suppressions
- Suppression de l'onglet "Information de l'entité" lors de la création, modification et visualisation d'un traitement
1.1.0 - 2019-12-03
......
......@@ -24,7 +24,7 @@
* In production mode, flash messages redirect after a time interval.
* In development mode, you need to click the flash message to continue.
*/
Configure::write('debug', 0);
Configure::write('debug', 2);
/**
* Configure the Error handler used to handle errors for your application. By default
......
......@@ -985,14 +985,18 @@ class EtatFichesController extends AppController
$success = true;
$this->EtatFiche->begin();
$this->Fiche->id = $id;
$success = $success && $this->Fiche->save([
'id' => $id,
'numero' => $numero,
'norme_id' => $norme
]) !== false;
$success = $success && $this->insertValueEntiteInFiche($organisation_id, $id);
if ($success == true) {
if ($success === true) {
$this->Fiche->id = $id;
$success = $success && $this->Fiche->save([
'id' => $id,
'numero' => $numero,
'norme_id' => $norme
]) !== false;
}
if ($success === true) {
$idEncoursValid = $this->EtatFiche->find('first', [
'conditions' => [
'EtatFiche.fiche_id' => $id,
......@@ -1014,7 +1018,7 @@ class EtatFichesController extends AppController
]
) !== false;
if ($success == true) {
if ($success === true) {
if (!empty($idEncoursValid)) {
$this->EtatFiche->create([
'EtatFiche' => [
......@@ -1027,7 +1031,7 @@ class EtatFichesController extends AppController
]);
$success = $success && false !== $this->EtatFiche->save(null, ['atomic' => false]);
if ($success == true) {
if ($success === true) {
$this->Notification->create([
'Notification' => [
'user_id' => $idEncoursValid['Fiche']['user_id'],
......@@ -1041,7 +1045,7 @@ class EtatFichesController extends AppController
$this->Notifications->sendEmail($idEncoursValid['Fiche']['user_id']);
}
if ($success == true) {
if ($success === true) {
$this->Historique->create([
'Historique' => [
'content' => $this->Auth->user('prenom') . ' ' . $this->Auth->user('nom') . ' valide le traitement et l\'insère au registre',
......@@ -1051,12 +1055,12 @@ class EtatFichesController extends AppController
$success = $success && false !== $this->Historique->save(null, ['atomic' => false]);
}
if ($success == true && $saveNumeroRegistre === true) {
if ($success === true && $saveNumeroRegistre === true) {
$this->Organisation->id = $organisation_id;
$success = $success && $this->Organisation->save([
'id' => $organisation_id,
'numeroregistre' => $numeroregistre
]) !== false;
'id' => $organisation_id,
'numeroregistre' => $numeroregistre
]) !== false;
}
}
}
......@@ -1065,7 +1069,7 @@ class EtatFichesController extends AppController
$messageError = sprintf("Le numéro d'enregistrement %s est déja présent au registre. Merci de modifier le numéro d'enregistrement.", $numero);
}
if ($success == true) {
if ($success === true) {
$this->EtatFiche->commit();
$this->Session->setFlash(__d('etat_fiche', 'etat_fiche.flashsuccessTraitementEngregistreRegistre'), 'flashsuccess');
......@@ -1079,7 +1083,6 @@ class EtatFichesController extends AppController
'controller' => 'registres',
'action' => 'index'
]);
} else {
$this->EtatFiche->rollback();
$this->Session->setFlash($messageError, 'flasherror');
......@@ -1088,6 +1091,109 @@ class EtatFichesController extends AppController
}
}
protected function insertValueEntiteInFiche($organisation_id, $fiche_id)
{
$success = true;
$entite = $this->Organisation->find('first', [
'conditions' => [
'id' => $organisation_id
],
'fields' => [
'raisonsociale',
'telephone',
'fax',
'adresse',
'email',
'sigle',
'siret',
'ape',
'civiliteresponsable',
'nomresponsable',
'prenomresponsable',
'emailresponsable',
'telephoneresponsable',
'fonctionresponsable',
'dpo',
'numerodpo'
]
]);
$userDPO = $this->User->find('first', [
'conditions' => [
'id' => $entite['Organisation']['dpo']
],
'fields' => [
'nom_complet',
'email',
'telephonefixe',
'telephoneportable'
]
]);
unset($entite['Organisation']['dpo']);
$entite = Hash::extract($entite, 'Organisation');
$keyEntite = array_keys($entite);
foreach ($keyEntite as $val) {
if ($success === true) {
if (!empty($entite[$val])) {
$this->Valeur->create([
'fiche_id' => $fiche_id,
'valeur' => $entite[$val],
'champ_name'=> $val
]);
$success = $success && false !== $this->Valeur->save();
}
}
}
if ($success === true) {
$userDPO = Hash::extract($userDPO, 'User');
$keyUserDPO = array_keys($userDPO);
foreach ($keyUserDPO as $val) {
if ($success === true) {
if (!empty($userDPO[$val])) {
if ($val === 'nom_complet') {
$userDPO['dpo'] = $userDPO[$val];
unset($userDPO[$val]);
$val = 'dpo';
}
if ($val === 'email') {
$userDPO['emailDpo'] = $userDPO[$val];
unset($userDPO[$val]);
$val = 'emailDpo';
}
if ($val === 'telephoneportable') {
$userDPO['portableDpo'] = $userDPO[$val];
unset($userDPO[$val]);
$val = 'portableDpo';
}
if ($val === 'telephonefixe') {
$userDPO['fixDpo'] = $userDPO[$val];
unset($userDPO[$val]);
$val = 'fixDpo';
}
$this->Valeur->create([
'fiche_id' => $fiche_id,
'valeur' => $userDPO[$val],
'champ_name'=> $val
]);
$success = $success && false !== $this->Valeur->save();
}
}
}
}
return $success;
}
/**
* Envoie d'un traitement en cour d'initialisation en rédaction
*
......
......@@ -355,38 +355,6 @@ class FichesController extends AppController
$responsables = $this->_responsables();
if (empty($this->request->data)) {
$organisation = $this->Organisation->find('first', [
'conditions' => [
'id' => $this->Session->read('Organisation.id')
],
'fields' => [
'raisonsociale',
'telephone',
'fax',
'adresse',
'email',
'sigle',
'siret',
'ape',
'civiliteresponsable',
'nomresponsable',
'prenomresponsable',
'emailresponsable',
'telephoneresponsable',
'fonctionresponsable',
'dpo',
'numerodpo'
]
]);
$this->request->data['Fiche'] = Hash::extract($organisation, 'Organisation');
//On récupére le DPO de la collectivité
$userDPO = $this->_dpoOrganisation($organisation['Organisation']['dpo']);
$this->request->data['Fiche']['dpo'] = $userDPO['User']['civilite'] . ' ' . $userDPO['User']['prenom'] . ' ' . $userDPO['User']['nom'];
$this->request->data['Fiche']['fixDpo'] = $userDPO['User']['telephonefixe'];
$this->request->data['Fiche']['emailDpo'] = $userDPO['User']['email'];
$this->request->data['Fiche']['portableDpo'] = $userDPO['User']['telephoneportable'];
// User
$userLog = $this->User->find('first', [
'conditions' => [
......@@ -776,7 +744,7 @@ class FichesController extends AppController
* @edit 25/02/2019
* @version v1.0.2
*/
public function show($id)
public function show($id, $showRegistre = false)
{
if (!$id) {
$this->Session->setFlash(__d('default', 'default.flasherrorTraitementInexistant'), 'flasherror');
......@@ -849,7 +817,7 @@ class FichesController extends AppController
$responsables = $this->_responsables();
$this->set(compact('soustraitance', 'valeurs', 'champs', 'id', 'filesSave', 'responsables'));
$this->set(compact('soustraitance', 'valeurs', 'champs', 'id', 'filesSave', 'responsables', 'showRegistre'));
}
/**
......@@ -1078,41 +1046,6 @@ class FichesController extends AppController
}
}
/**
* On récupére le DPO de la collectivité
*
* @param int $idUserDPO : id de l'utilisateur DPO dans l'organisation
* @return array()
*
* @access public
*
* @author Théo GUILLON <theo.guillon@libriciel.coop>
* @created 17/05/2017
* @version V1.0.0
*
* @author Théo GUILLON <theo.guillon@libriciel.coop>
* @edit 25/02/2019
* @version V1.0.2
*/
protected function _dpoOrganisation($idUserDPO)
{
$userDPO = $this->User->find('first', [
'conditions' => [
'id' => $idUserDPO
],
'fields' => [
'civilite',
'nom',
'prenom',
'email',
'telephonefixe',
'telephoneportable'
]
]);
return ($userDPO);
}
/**
* Genere le traitement de registre
*
......
......@@ -336,12 +336,6 @@ class OrganisationsController extends AppController
$success = $this->_attributionRoleDPO($this->request->data('Organisation.dpo'), $id, $newRoleOldDPO) && $success;
}
if ($success == true) {
// Modification des informations sur l'entité et le DPO dans les traitements qui ne sont pas au registre
$success = $this->_updateValueInFicheEntiteDPO($id);
}
if ($success == true) {
$this->Organisation->commit();
$this->Session->setFlash(__d('organisation', 'organisation.flashsuccessEntiteModifier'), 'flashsuccess');
......@@ -430,192 +424,6 @@ class OrganisationsController extends AppController
$this->set(compact('organisation', 'options', 'array_users', 'roles'));
}
/**
* Mise à jour des valeurs concernant l'entité et le DPO si le traitement (la fiche) n'est pas au registre
*
* @param $organisation_id int
* @return bool
*
* @access private
* @created 03/12/2019
* @version V1.1.0
*/
private function _updateValueInFicheEntiteDPO($organisation_id)
{
$success = true;
$organisation = $this->Organisation->find('first', [
'conditions' => [
'id' => $organisation_id
],
'fields' => [
'raisonsociale',
'telephone',
'fax',
'adresse',
'email',
'sigle',
'siret',
'ape',
'civiliteresponsable',
'nomresponsable',
'prenomresponsable',
'emailresponsable',
'telephoneresponsable',
'fonctionresponsable',
'dpo',
'numerodpo'
]
]);
//On récupére le DPO de la collectivité
$userDPO = $this->_dpoOrganisation($organisation['Organisation']['dpo']);
$condition = [
'EtatFiche.etat_id !=' => [
EtatFiche::VALIDER_DPO,
EtatFiche::ARCHIVER,
EtatFiche::MODIFICATION_TRAITEMENT_REGISTRE
],
'EtatFiche.actif' => true,
'Fiche.organisation_id' => $organisation_id
];
$query = [
'conditions' => $condition,
'contain' => [
'Fiche' => [
'id',
'Valeur' => [
'fields' => [
'champ_name',
'valeur'
],
'conditions' => [
'champ_name' => [
'raisonsociale',
'telephone',
'fax',
'adresse',
'email',
'sigle',
'ape',
'civiliteresponsable',
'nomresponsable',
'prenomresponsable',
'emailresponsable',
'telephoneresponsable',
'fonctionresponsable',
'dpo',
'numerodpo',
'fixDpo',
'emailDpo',
'portableDpo'
]
]
],
]
]
];
$fichesOrganisation = $this->EtatFiche->find('all', $query);
$valeurs = Hash::extract($fichesOrganisation, '{n}.Fiche.Valeur.{n}');
foreach ($valeurs as $valeurFiche) {
if ($success === true) {
$valeurChamp = null;
switch ($valeurFiche['champ_name']) {
case 'raisonsociale':
$valeurChamp = $organisation['Organisation']['raisonsociale'];
break;
case 'telephone':
$valeurChamp = $organisation['Organisation']['telephone'];
break;
case 'fax':
$valeurChamp = $organisation['Organisation']['fax'];
break;
case 'adresse':
$valeurChamp = $organisation['Organisation']['adresse'];
break;
case 'email':
$valeurChamp = $organisation['Organisation']['email'];
break;
case 'sigle':
$valeurChamp = $organisation['Organisation']['sigle'];
break;
case 'siret':
$valeurChamp = $organisation['Organisation']['siret'];
break;
case 'ape':
$valeurChamp = $organisation['Organisation']['ape'];
break;
case 'civiliteresponsable':
$valeurChamp = $organisation['Organisation']['civiliteresponsable'];
break;
case 'nomresponsable':
$valeurChamp = $organisation['Organisation']['nomresponsable'];
break;
case 'prenomresponsable':
$valeurChamp = $organisation['Organisation']['prenomresponsable'];
break;
case 'emailresponsable':
$valeurChamp = $organisation['Organisation']['emailresponsable'];
break;
case 'telephoneresponsable':
$valeurChamp = $organisation['Organisation']['telephoneresponsable'];
break;
case 'fonctionresponsable':
$valeurChamp = $organisation['Organisation']['fonctionresponsable'];
break;
case 'dpo':
$valeurChamp = $userDPO['User']['civilite'] . ' ' . $userDPO['User']['prenom'] . ' ' . $userDPO['User']['nom'];
break;
case 'numerodpo':
$valeurChamp = $organisation['Organisation']['numerodpo'];
break;
case 'fixDpo':
$valeurChamp = $userDPO['User']['telephonefixe'];
break;
case 'emailDpo':
$valeurChamp = $userDPO['User']['email'];
break;
case 'portableDpo':
$valeurChamp = $userDPO['User']['telephoneportable'];
break;
default:
break;
}
$this->Valeur->id = $valeurFiche['id'];
$success = $success && $this->Valeur->save([
'id' => $valeurFiche['id'],
'valeur' => $valeurChamp
]) !== false;
}
}
return ($success);
}
private function _dpoOrganisation($idUserDPO)
{
$userDPO = $this->User->find('first', [
'conditions' => [
'id' => $idUserDPO
],
'fields' => [
'civilite',
'nom',
'prenom',
'email',
'telephonefixe',
'telephoneportable'
]
]);
return ($userDPO);
}
/**
* @param $idDPO
* @param $idOrganisation
......
......@@ -48,6 +48,7 @@ echo $this->WebcilForm->create('Fiche', [
<ul class="nav nav-tabs nav-justified" role="tablist">
<li class="active">
<a href="#information_traitement" role="tab" data-toggle="tab">
<i class="fa fa-pencil fa-fw"><!----></i>
<?php
echo __d('fiche', 'fiche.ongletInformationTraitement');
?>
......@@ -59,6 +60,7 @@ echo $this->WebcilForm->create('Fiche', [
?>
<li>
<a href="#soustraitant" role="tab" data-toggle="tab">
<i class="fa fa-pencil fa-fw"><!----></i>
<?php
echo __d('fiche', 'fiche.ongletSousTraitant');
?>
......@@ -70,6 +72,7 @@ echo $this->WebcilForm->create('Fiche', [
<li>
<a href="#info_formulaire" role="tab" data-toggle="tab">
<i class="fa fa-pencil fa-fw"><!----></i>
<?php
echo __d('fiche', 'fiche.ongletFormulaire');
?>
......@@ -78,6 +81,7 @@ echo $this->WebcilForm->create('Fiche', [
<li>
<a href="#annexe" role="tab" data-toggle="tab">
<i class="fa fa-pencil fa-fw"><!----></i>
<?php
echo __d('fiche', 'fiche.ongletAnnexe');
?>
......@@ -89,6 +93,7 @@ echo $this->WebcilForm->create('Fiche', [
?>
<li id="liOngletCoresponsable" class="disabled">
<a id="aOngletCoresponsable" href="#ongletCoresponsable" role="" data-toggle="">
<i class="fa fa-pencil fa-fw"><!----></i>
<?php
echo __d('fiche', 'fiche.ongletCoresponsable');
?>
......@@ -97,14 +102,6 @@ echo $this->WebcilForm->create('Fiche', [
<?php
}
?>
<li>
<a href="#infos" role="tab" data-toggle="tab">
<?php
echo __d('fiche', 'fiche.ongletInformationEntite');
?>
</a>
</li>
</ul>
<div class="tab-content">
......@@ -128,7 +125,7 @@ echo $this->WebcilForm->create('Fiche', [
echo $this->WebcilForm->input('declarantpersonnenom', [
'id' => 'declarantpersonnenom',
'readonly' => true,
'required' => true,
'required' => true
]);
$countService = count($this->Session->read('User.service'));
......@@ -165,7 +162,7 @@ echo $this->WebcilForm->create('Fiche', [
echo $this->WebcilForm->input('declarantpersonneportable', [
'id' => 'declarantpersonneportable',
'readonly' => true,
'placeholder' => false,
'placeholder' => false
]);
?>
</div>
......@@ -177,12 +174,12 @@ echo $this->WebcilForm->create('Fiche', [
'declarantpersonneemail' => [
'id' => 'declarantpersonneemail',
'readonly' => true,
'required' => true,
'required' => true
],
'declarantpersonnefix' => [
'id' => 'declarantpersonnefix',
'readonly' => true,
'placeholder' => false,
'placeholder' => false
]
]);
?>
......@@ -377,10 +374,6 @@ echo $this->WebcilForm->create('Fiche', [
// Onglet Co-responsable
echo $this->element('Fiches/ongletCoresponsable');
// Fin onglet Co-responsable