Commit 637b6712 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Correction suite recette N°1 refonte dossier

Ajout de paramétrage sur les statuts intervenant pour les règles de renseignement de l'email perso et tel perso (obligatoire ou non)
parent d9703ee6
......@@ -177,6 +177,30 @@ return [
'position' => 14,
'commentaire' => NULL,
],
'DOSSIER_EMAIL_PERSO' => [
'name' => 'DOSSIER_EMAIL_PERSO',
'type' => 'bool',
'bdd-type' => 'NUMBER',
'length' => 0,
'scale' => '0',
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 15,
'commentaire' => NULL,
],
'DOSSIER_TEL_PERSO' => [
'name' => 'DOSSIER_TEL_PERSO',
'type' => 'bool',
'bdd-type' => 'NUMBER',
'length' => 0,
'scale' => '0',
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 16,
'commentaire' => NULL,
],
'HISTO_CREATEUR_ID' => [
'name' => 'HISTO_CREATEUR_ID',
'type' => 'int',
......@@ -186,7 +210,7 @@ return [
'precision' => NULL,
'nullable' => FALSE,
'default' => NULL,
'position' => 15,
'position' => 17,
'commentaire' => NULL,
],
'HISTO_CREATION' => [
......@@ -198,7 +222,7 @@ return [
'precision' => NULL,
'nullable' => FALSE,
'default' => 'SYSDATE',
'position' => 16,
'position' => 18,
'commentaire' => NULL,
],
'HISTO_DESTRUCTEUR_ID' => [
......@@ -210,7 +234,7 @@ return [
'precision' => NULL,
'nullable' => TRUE,
'default' => NULL,
'position' => 17,
'position' => 19,
'commentaire' => NULL,
],
'HISTO_DESTRUCTION' => [
......@@ -222,7 +246,7 @@ return [
'precision' => NULL,
'nullable' => TRUE,
'default' => NULL,
'position' => 18,
'position' => 20,
'commentaire' => NULL,
],
'HISTO_MODIFICATEUR_ID' => [
......@@ -234,7 +258,7 @@ return [
'precision' => NULL,
'nullable' => FALSE,
'default' => NULL,
'position' => 19,
'position' => 21,
'commentaire' => NULL,
],
'HISTO_MODIFICATION' => [
......@@ -246,7 +270,7 @@ return [
'precision' => NULL,
'nullable' => FALSE,
'default' => 'SYSDATE',
'position' => 20,
'position' => 22,
'commentaire' => NULL,
],
'ID' => [
......@@ -258,7 +282,7 @@ return [
'precision' => NULL,
'nullable' => FALSE,
'default' => NULL,
'position' => 21,
'position' => 23,
'commentaire' => NULL,
],
'LIBELLE' => [
......@@ -270,7 +294,7 @@ return [
'precision' => NULL,
'nullable' => FALSE,
'default' => NULL,
'position' => 22,
'position' => 24,
'commentaire' => NULL,
],
'MAXIMUM_HETD' => [
......@@ -282,7 +306,7 @@ return [
'precision' => 126,
'nullable' => FALSE,
'default' => '0',
'position' => 23,
'position' => 25,
'commentaire' => NULL,
],
'NON_AUTORISE' => [
......@@ -294,7 +318,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => NULL,
'position' => 24,
'position' => 26,
'commentaire' => NULL,
],
'ORDRE' => [
......@@ -306,7 +330,7 @@ return [
'precision' => NULL,
'nullable' => FALSE,
'default' => NULL,
'position' => 25,
'position' => 27,
'commentaire' => NULL,
],
'PEUT_AVOIR_CONTRAT' => [
......@@ -318,7 +342,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 26,
'position' => 28,
'commentaire' => NULL,
],
'PEUT_CHOISIR_DANS_DOSSIER' => [
......@@ -330,7 +354,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => NULL,
'position' => 27,
'position' => 29,
'commentaire' => NULL,
],
'PEUT_CLOTURER_SAISIE' => [
......@@ -342,7 +366,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 28,
'position' => 30,
'commentaire' => NULL,
],
'PEUT_SAISIR_DOSSIER' => [
......@@ -354,7 +378,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => NULL,
'position' => 29,
'position' => 31,
'commentaire' => NULL,
],
'PEUT_SAISIR_MOTIF_NON_PAIEMENT' => [
......@@ -366,7 +390,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 30,
'position' => 32,
'commentaire' => NULL,
],
'PEUT_SAISIR_REFERENTIEL' => [
......@@ -378,7 +402,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 31,
'position' => 33,
'commentaire' => NULL,
],
'PEUT_SAISIR_SERVICE' => [
......@@ -390,7 +414,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => NULL,
'position' => 32,
'position' => 34,
'commentaire' => NULL,
],
'PEUT_SAISIR_SERVICE_EXT' => [
......@@ -402,7 +426,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 33,
'position' => 35,
'commentaire' => NULL,
],
'PLAFOND_HC_FI_HORS_EAD' => [
......@@ -414,7 +438,7 @@ return [
'precision' => 126,
'nullable' => FALSE,
'default' => '9999',
'position' => 34,
'position' => 36,
'commentaire' => NULL,
],
'PLAFOND_HC_HORS_REMU_FC' => [
......@@ -426,7 +450,7 @@ return [
'precision' => 126,
'nullable' => FALSE,
'default' => '9999',
'position' => 35,
'position' => 37,
'commentaire' => NULL,
],
'PLAFOND_HC_REMU_FC' => [
......@@ -438,7 +462,7 @@ return [
'precision' => 126,
'nullable' => FALSE,
'default' => '13502',
'position' => 36,
'position' => 38,
'commentaire' => NULL,
],
'PLAFOND_REFERENTIEL' => [
......@@ -450,7 +474,7 @@ return [
'precision' => 126,
'nullable' => FALSE,
'default' => '0',
'position' => 37,
'position' => 39,
'commentaire' => NULL,
],
'SERVICE_STATUTAIRE' => [
......@@ -462,7 +486,7 @@ return [
'precision' => 126,
'nullable' => FALSE,
'default' => NULL,
'position' => 38,
'position' => 40,
'commentaire' => NULL,
],
'TEM_ATV' => [
......@@ -474,7 +498,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 39,
'position' => 41,
'commentaire' => NULL,
],
'TEM_BIATSS' => [
......@@ -486,7 +510,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 40,
'position' => 42,
'commentaire' => NULL,
],
'TITULAIRE' => [
......@@ -498,7 +522,7 @@ return [
'precision' => 1,
'nullable' => FALSE,
'default' => '0',
'position' => 41,
'position' => 43,
'commentaire' => NULL,
],
'TYPE_INTERVENANT_ID' => [
......@@ -510,7 +534,7 @@ return [
'precision' => NULL,
'nullable' => FALSE,
'default' => NULL,
'position' => 42,
'position' => 44,
'commentaire' => NULL,
],
],
......
......@@ -50,8 +50,7 @@ class IntervenantDossierController extends AbstractController
$this->initFilters();
/* Initialisation */
$role = $this->getServiceContext()->getSelectedIdentityRole();
/* @var $intervenant Intervenant */
$role = $this->getServiceContext()->getSelectedIdentityRole();
$intervenant = $role->getIntervenant() ?: $this->getEvent()->getParam('intervenant');
if (!$intervenant) {
throw new \LogicException('Intervenant non précisé ou inexistant');
......@@ -59,20 +58,6 @@ class IntervenantDossierController extends AbstractController
/* Récupération du dossier de l'intervenant */
$intervenantDossier = $this->getServiceDossier()->getByIntervenant($intervenant);
$intervenantDossierValidation = $this->getServiceDossier()->getValidation($intervenant);
$intervenantDossierStatut = $intervenantDossier->getStatut();
$intervenantDossierCompletude = $this->getServiceDossier()->getCompletude($intervenantDossier);
$champsAutres = $intervenantDossier->getStatut()->getChampsAutres();
/* Règles pour afficher ou non les fieldsets */
$fieldsetRules = [
'fieldset-identite-complementaire' => $intervenantDossier->getStatut()->getDossierIdentiteComplementaire(),
'fieldset-adresse' => $intervenantDossier->getStatut()->getDossierAdresse(),
'fieldset-contact' => $intervenantDossier->getStatut()->getDossierContact(),
'fieldset-iban' => $intervenantDossier->getStatut()->getDossierIban(),
'fieldset-insee' => $intervenantDossier->getStatut()->getDossierInsee(),
'fieldset-employeur' => $intervenantDossier->getStatut()->getDossierEmployeur(),
'fieldset-autres' => (!empty($champsAutres)) ? 1 : 0,//Si le statut intervenant a au moins 1 champs autre
];
/* Initialisation du formulaire */
$form = $this->getIntervenantDossierForm($intervenant);
$form->bind($intervenantDossier);
......@@ -86,14 +71,32 @@ class IntervenantDossierController extends AbstractController
$completude = $this->getServiceDossier()->isComplete($intervenantDossier);
$intervenantDossier->setCompletude($completude);
$intervenantDossier = $this->getServiceDossier()->save($intervenantDossier);
/* Recalcul des tableaux de bord nécessaires */
//Recalcul des tableaux de bord nécessaires
$this->updateTableauxBord($intervenantDossier->getIntervenant());
/*On reinitialise le formulaire car le statut du dossier a
pu être changé donc les règles d'affichage ne sont plus les mêmes*/
$form = $this->getIntervenantDossierForm($intervenant);
$form->bind($intervenantDossier);
$this->flashMessenger()->addSuccessMessage('Enregistrement de vos données effectué');
} else {
$this->flashMessenger()->addErrorMessage("Vos données n'ont pas été enregistré, veuillez vérifier les erreurs.");
}
}
$intervenantDossierStatut = $intervenantDossier->getStatut();
//Règles pour afficher ou non les fieldsets
$champsAutres = $intervenantDossier->getStatut()->getChampsAutres();
$fieldsetRules = [
'fieldset-identite-complementaire' => $intervenantDossier->getStatut()->getDossierIdentiteComplementaire(),
'fieldset-adresse' => $intervenantDossier->getStatut()->getDossierAdresse(),
'fieldset-contact' => $intervenantDossier->getStatut()->getDossierContact(),
'fieldset-iban' => $intervenantDossier->getStatut()->getDossierIban(),
'fieldset-insee' => $intervenantDossier->getStatut()->getDossierInsee(),
'fieldset-employeur' => $intervenantDossier->getStatut()->getDossierEmployeur(),
'fieldset-autres' => (!empty($champsAutres)) ? 1 : 0,//Si le statut intervenant a au moins 1 champs autre
];
$intervenantDossierCompletude = $this->getServiceDossier()->getCompletude($intervenantDossier);
$iPrec = $this->getServiceDossier()->intervenantVacataireAnneesPrecedentes($intervenant, 1);
$lastHETD = $iPrec ? $this->getServiceService()->getTotalHetdIntervenant($iPrec) : 0;
......
......@@ -45,6 +45,8 @@
<field name="dossierInsee" type="boolean" column="DOSSIER_INSEE" nullable="false"/>
<field name="dossierIban" type="boolean" column="DOSSIER_IBAN" nullable="false"/>
<field name="dossierEmployeur" type="boolean" column="DOSSIER_EMPLOYEUR" nullable="false"/>
<field name="dossierEmailPerso" type="boolean" column="DOSSIER_EMAIL_PERSO" nullable="false"/>
<field name="dossierTelPerso" type="boolean" column="DOSSIER_TEL_PERSO" nullable="false"/>
<many-to-many field="champsAutres" target-entity="Application\Entity\Db\DossierAutre" fetch="EXTRA_LAZY">
<join-table name="DOSSIER_CHAMP_AUTRE_PAR_STATUT">
<join-columns>
......
......@@ -2,6 +2,7 @@
namespace Application\Entity\Db;
use Application\Service\StatutIntervenantService;
use phpDocumentor\Reflection\Types\Integer;
use UnicaenApp\Entity\HistoriqueAwareInterface;
use UnicaenApp\Entity\HistoriqueAwareTrait;
......@@ -210,6 +211,16 @@ class StatutIntervenant implements HistoriqueAwareInterface, RoleInterface
*/
protected $dossierEmployeur;
/**
* @var boolean
*/
protected $dossierEmailPerso;
/**
* @var boolean
*/
protected $dossierTelPerso;
/**
......@@ -1267,6 +1278,52 @@ class StatutIntervenant implements HistoriqueAwareInterface, RoleInterface
/**
* @return boolean
*/
public function getDossierEmailPerso()
{
return $this->dossierEmailPerso;
}
/**
* @param integer $dossierEmailPerso
*
* @return StatutIntervenant
*/
public function setDossierEmailPerso(int $dossierEmailPerso): StatutIntervenant
{
$this->dossierEmailPerso = $dossierEmailPerso;
return $this;
}
/**
* @return boolean
*/
public function getDossierTelPerso()
{
return $this->dossierTelPerso;
}
/**
* @param integer $dossierTelPerso
*/
public function setDossierTelPerso(int $dossierTelPerso): StatutIntervenant
{
$this->dossierTelPerso = $dossierTelPerso;
return $this;
}
/**
* Indique si ce statut correspond à un intervenant permanent.
*
......
......@@ -51,11 +51,13 @@ class DossierBancaireFieldset extends AbstractFieldset
]);
$this->add([
'name' => 'ribHorsSepa',
'options' => [
'name' => 'ribHorsSepa',
'options' => [
'label' => 'RIB hors zone SEPA',
],
'type' => 'Checkbox',
'attributes' => [
],
'type' => 'Checkbox',
]);
......
......@@ -3,6 +3,7 @@
namespace Application\Form\Intervenant\Dossier;
use Application\Constants;
use Application\Entity\Db\StatutIntervenant;
use Application\Form\AbstractFieldset;
use Application\Service\Traits\ContextServiceAwareTrait;
use Application\Validator\DepartementNaissanceValidator;
......@@ -35,7 +36,6 @@ class DossierContactFieldset extends AbstractFieldset
*/
private function addElements()
{
//$privEdit = $this->isAllowed(Privileges::getResourceId(Privileges::class));
/**
* Mail établissement
......@@ -43,7 +43,7 @@ class DossierContactFieldset extends AbstractFieldset
$this->add([
'name' => 'emailEtablissement',
'options' => [
'label' => 'Mail établissement <span class="text-danger">*</span>',
'label' => 'E-mail professionnel <span class="text-danger">*</span>',
'label_options' => ['disable_html_escape' => true],
],
......@@ -62,7 +62,8 @@ class DossierContactFieldset extends AbstractFieldset
$this->add([
'name' => 'emailPersonnel',
'options' => [
'label' => 'Mail personnel',
'label' => 'E-mail personnel',
'label_options' => ['disable_html_escape' => true],
],
'attributes' => [
//'placeholder' => "Email établissement",
......@@ -79,12 +80,13 @@ class DossierContactFieldset extends AbstractFieldset
$this->add([
'name' => 'telephoneProfessionnel',
'options' => [
'label' => 'Téléphone professionnel',
'label' => 'Téléphone professionnel <span class="text-danger">*</span>',
'label_options' => ['disable_html_escape' => true],
],
'attributes' => [
//'placeholder' => "Email établissement",
'class' => 'form-control left-border-none',
'class' => 'form-control left-border-none',
'info_icon' => "Si vous n'avez pas de téléphone professionnel vous devez renseigner le champs téléphone personnel.",
],
'type' => Tel::class,
]);
......@@ -95,7 +97,8 @@ class DossierContactFieldset extends AbstractFieldset
$this->add([
'name' => 'telephonePersonnel',
'options' => [
'label' => 'Téléphone personnel',
'label' => 'Téléphone personnel',
'label_options' => ['disable_html_escape' => true],
],
'attributes' => [
//'placeholder' => "Email établissement",
......@@ -105,7 +108,19 @@ class DossierContactFieldset extends AbstractFieldset
'type' => Tel::class,
]);
return $this;
//Gestion des labels selon les règles du statut intervenant sur les données contact
$statutDossierIntervenant = $this->getOption('statutDossierIntervenant');
/**
* @var $statutDossierIntervenant StatutIntervenant
*/
if ($statutDossierIntervenant->getDossierTelPerso()) {
$this->get('telephonePersonnel')->setLabel('Téléphone personnel <span class="text-danger">*</span>');
$this->get('telephoneProfessionnel')->removeAttribute('info_icon');
}
if ($statutDossierIntervenant->getDossierEmailPerso()) {
$this->get('emailPersonnel')->setLabel('E-mail personnel <span class="text-danger">*</span>');
$this->get('emailEtablissement')->removeAttribute('info_icon');
}
}
......
......@@ -81,7 +81,7 @@ class IntervenantDossierForm extends AbstractForm
$this->dossierAdresseFieldset = new AdresseFieldset('DossierAdresse');
$this->dossierAdresseFieldset->init();
$this->dossierContactFiedlset = new DossierContactFieldset('DossierContact');
$this->dossierContactFiedlset = new DossierContactFieldset('DossierContact', ['statutDossierIntervenant' => $dossierIntervenant->getStatut()]);
$this->dossierContactFiedlset->init();
$this->dossierInseeFiedlset = new DossierInseeFieldset('DossierInsee');
......@@ -108,7 +108,7 @@ class IntervenantDossierForm extends AbstractForm
$this->add($this->dossierBancaireFieldset);
$this->add($this->dossierEmployeurFieldset);
$this->add($this->dossierAutresFiedlset);
/**
* Csrf
......
......@@ -83,6 +83,25 @@ class StatutIntervenantSaisieForm extends AbstractForm
]);
}
//Gestion des règles informations contact sur le dossier intervenant
$this->add([
'name' => 'dossier-email-perso',
'options' => [
'label' => "Email personnel obligatoire pour compléter le dossier intervenant",
'use_hidden_element' => true,
],
'type' => 'Checkbox',
]);
$this->add([
'name' => 'dossier-tel-perso',
'options' => [
'label' => "Téléphone personnel obligatoire pour compléter le dossier intervenant",
'use_hidden_element' => true,
],
'type' => 'Checkbox',
]);
$this->add([
'name' => 'id',
'options' => [
......
......@@ -66,6 +66,8 @@ class StatutIntervenantHydrator implements HydratorInterface
$object->setDossierInsee($data['dossier-insee']);
$object->setDossierIban($data['dossier-iban']);
$object->setDossierEmployeur($data['dossier-employeur']);
$object->setDossierEmailPerso($data['dossier-email-perso']);
$object->setDossierTelPerso($data['dossier-tel-perso']);
for ($i = 1; $i < 5; $i++) {
if (array_key_exists('codes-corresp-' . $i, $data)) {
......@@ -176,6 +178,8 @@ class StatutIntervenantHydrator implements HydratorInterface
'dossier-insee' => $object->getDossierInsee(),
'dossier-iban' => $object->getDossierIban(),
'dossier-employeur' => $object->getDossierEmployeur(),
'dossier-email-perso' => $object->getDossierEmailPerso(),
'dossier-tel-perso' => $object->getDossierTelPerso(),
];
/*Gestion des champs autres*/
......
......@@ -190,8 +190,21 @@ class DossierService extends AbstractEntityService
//Complétude de contact
if ($statutIntervenantDossier->getDossierContact()) {
$completudeDossierContact = (($intervenantDossier->getEmailPerso() || $intervenantDossier->getEmailPro()) &&
($intervenantDossier->getTelPerso() || $intervenantDossier->getTelPro())) ? true : false;
$completudeEmail = true;
$completudeTel = true;
if ($statutIntervenantDossier->getDossierEmailPerso()) {
$completudeEmail = ($intervenantDossier->getEmailPerso() && $intervenantDossier->getEmailPro()) ? true : false;
} else {
$completudeEmail = ($intervenantDossier->getEmailPerso() || $intervenantDossier->getEmailPro()) ? true : false;
}