Commit 59043208 authored by tguillon's avatar tguillon
Browse files

Mise en place du concepte de sous-trantant

Définition d'un formulaire pour un sous-traitant ou non.
Factorisation de la nav-bar

Modification de la création d'un traitement pour définir le traitement
pour un sous-traitant ou non.

Ajout du filtre sous-traitant pour le registre. 
parent 40e96982
......@@ -189,8 +189,7 @@ CREATE TABLE fg_formulaires (
--
-- Création de la table normes
--
CREATE TABLE normes
(
CREATE TABLE normes (
id serial NOT NULL PRIMARY KEY,
norme VARCHAR(2) NOT NULL,
numero VARCHAR(3) NOT NULL,
......@@ -210,8 +209,7 @@ ALTER TABLE normes ADD CONSTRAINT normes_norme_in_list_chk CHECK (cakephp_valida
--
-- Création de la table fiches
--
CREATE TABLE fiches
(
CREATE TABLE fiches (
id serial NOT NULL PRIMARY KEY,
user_id integer NOT NULL REFERENCES users (id) ON DELETE CASCADE ON UPDATE CASCADE,
form_id integer NOT NULL REFERENCES fg_formulaires (id) ON DELETE CASCADE ON UPDATE CASCADE,
......@@ -302,7 +300,7 @@ CREATE TABLE historiques (
);
--
-- Création de la table champs
-- Création de la table modifications
--
CREATE TABLE modifications (
id SERIAL NOT NULL PRIMARY KEY,
......
BEGIN;
ALTER TABLE fg_formulaires ADD soustraitant BOOL NOT NULL DEFAULT FALSE;
COMMIT;
\ No newline at end of file
......@@ -94,6 +94,7 @@ class AppController extends Controller
'WebcilUsers'
];
public $helpers = [
'WebdpoMenu',
'WebcilForm'
];
......@@ -153,7 +154,14 @@ class AppController extends Controller
parent::beforeRender();
$this->set('formulaires_actifs', $this->FormGen->getAll([
'organisations_id' => $this->Session->read('Organisation.id'),
'active' => true
'active' => true,
'soustraitant' => false
]));
$this->set('formulaires_soustraitance', $this->FormGen->getAll([
'organisations_id' => $this->Session->read('Organisation.id'),
'active' => true,
'soustraitant' => true
]));
$serviceUser = $this->OrganisationUser->find('all', [
......
......@@ -48,7 +48,9 @@ class FichesController extends AppController {
'Service',
'TraitementRegistre',
'User',
'Valeur'
'Valeur',
'Soustraitant',
'SoustraitantOrganisation'
];
/**
......@@ -251,7 +253,7 @@ class FichesController extends AppController {
]
);
$this->set(compact('options_normes'));
$descriptions_normes = Hash::combine(
$normes,
'{n}.Norme.id',
......@@ -259,6 +261,42 @@ class FichesController extends AppController {
);
$this->set(compact('descriptions_normes'));
$soustraitance = $this->Formulaire->find('first', [
'conditions' => [
'id' => $id
],
'fields' => [
'soustraitant'
]
]);
$this->set(compact('soustraitance'));
$soustraitants = null;
$condition = [];
$query = [
'conditions' => $condition,
'order' => [
'Soustraitant.raisonsociale ASC'
]
];
$subQuery = [
'alias' => 'soustraitants_organisations',
'fields' => [
'soustraitants_organisations.soustraitant_id'
],
'conditions' => [
'soustraitants_organisations.organisation_id' => $this->Session->read('Organisation.id')
]
];
$sql = $this->SoustraitantOrganisation->sql($subQuery);
$query['conditions'][] = "Soustraitant.id IN ( {$sql} )";
$soustraitants = $this->Soustraitant->find('all', [
$query
]);
$this->set(compact('soustraitants'));
if ($this->request->is('POST')) {
if('Cancel' === Hash::get($this->request->data, 'submit')) {
if(!empty($this->Session->read('Auth.User.uuid'))){
......@@ -479,6 +517,42 @@ class FichesController extends AppController {
);
$this->set(compact('descriptions_normes'));
$this->set('norme_id', $idForm['Fiche']['norme_id']);
$soustraitance = $this->Formulaire->find('first', [
'conditions' => [
'id' => $idForm['Fiche']['form_id']
],
'fields' => [
'soustraitant'
]
]);
$this->set(compact('soustraitance'));
$soustraitants = null;
$condition = [];
$query = [
'conditions' => $condition,
'order' => [
'Soustraitant.raisonsociale ASC'
]
];
$subQuery = [
'alias' => 'soustraitants_organisations',
'fields' => [
'soustraitants_organisations.soustraitant_id'
],
'conditions' => [
'soustraitants_organisations.organisation_id' => $this->Session->read('Organisation.id')
]
];
$sql = $this->SoustraitantOrganisation->sql($subQuery);
$query['conditions'][] = "Soustraitant.id IN ( {$sql} )";
$soustraitants = $this->Soustraitant->find('all', [
$query
]);
$this->set(compact('soustraitants'));
// Si on sauvegarde
if ($this->request->is(['post', 'put'])) {
......@@ -496,8 +570,7 @@ class FichesController extends AppController {
$this->Fiche->id = $id;
$success = $success && $this->Fiche->save([
'norme_id' => $this->request->data['Fiche']['norme']
]
) !== false;
]) !== false;
if (isset($this->request->data['Fiche']['norme'])) {
unset($this->request->data['Fiche']['norme']);
......@@ -696,12 +769,22 @@ class FichesController extends AppController {
$this->request->data['Fiche'][$value['Valeur']['champ_name']] = $value['Valeur']['valeur'];
}
}
$this->requestAction(array(
$soustraitance = $this->Formulaire->find('first', [
'conditions' => [
'id' => $idForm['Fiche']['form_id']
],
'fields' => [
'soustraitant'
]
]);
$this->set(compact('soustraitance'));
$this->requestAction([
'controller' => 'pannel',
'action' => 'supprimerLaNotif',
$id
));
]);
$this->set(compact('valeurs'));
$this->set(compact('champs'));
......
......@@ -104,7 +104,7 @@ class FormulairesController extends AppController {
$this->set('listeOrganisations', $listeOrganisations);
}
}
/**
* Permet de dupliquer un formulaire qui est vérouiller
*
......@@ -139,6 +139,7 @@ class FormulairesController extends AppController {
'organisations_id' => $organisation['Organisation']['id'],
'libelle' => $this->request->data['Formulaire']['libelle'],
'description' => $this->request->data['Formulaire']['description'],
'soustraitant' => $this->request->data['Formulaire']['soustraitant'],
'active' => false
]);
//on enregistre le formualire
......@@ -206,6 +207,7 @@ class FormulairesController extends AppController {
'organisations_id' => $this->request->data['Formulaire']['organisationCible'],
'libelle' => $this->request->data['Formulaire']['libelle'],
'description' => $this->request->data['Formulaire']['description'],
'soustraitant' => $this->request->data['Formulaire']['soustraitant'],
'active' => false
]);
......@@ -291,12 +293,13 @@ class FormulairesController extends AppController {
if ($this->request->is('POST')) {
$success = true;
$this->Formulaire->begin();
$this->Formulaire->create([
'organisations_id' => $this->Session->read('Organisation.id'),
'libelle' => $this->request->data['Formulaire']['libelle'],
'description' => $this->request->data['Formulaire']['description'],
'active' => 0
'soustraitant' => $this->request->data['Formulaire']['soustraitant'],
'active' => false
]);
$success = $success && false !== $this->Formulaire->save();
......
......@@ -53,7 +53,11 @@ class RegistresController extends AppController {
$this->Session->write('nameController', "registres");
$this->Session->write('nameView', "index");
$this->set('title', __d('registre', 'registre.titreRegistre') . $this->Session->read('Organisation.raisonsociale'));
if ($this->request->params['action'] === 'soustraitant') {
$this->set('title', __d('registre', 'registre.titreRegistreSoustraitant') . $this->Session->read('Organisation.raisonsociale'));
} else {
$this->set('title', __d('registre', 'registre.titreRegistreActivite') . $this->Session->read('Organisation.raisonsociale'));
}
$organisationActuelle = $this->Organisation->find('first', [
'conditions' => [
......@@ -115,15 +119,14 @@ class RegistresController extends AppController {
];
}
// Filtre sur le traitement verrouillées ou non verrouillées
if ($organisationActuelle['Organisation']['verrouiller'] == true) {
// Filtre sur le traitement verrouillées
if (isset($this->request->data['Registre']['archive']) && $this->request->data['Registre']['archive'] == 1) {
$condition['EtatFiche.etat_id'] = EtatFiche::ARCHIVER;
}
// Filtre sur le traitement non verrouillées
if (isset($this->request->data['Registre']['nonArchive']) && $this->request->data['Registre']['nonArchive'] == 1) {
$condition['EtatFiche.etat_id'] = EtatFiche::VALIDER_CIL;
if (isset($this->request->data['Registre']['archive'])) {
if ($this->request->data['Registre']['archive'] == 'true') {
$condition['EtatFiche.etat_id'] = EtatFiche::ARCHIVER;
} elseif ($this->request->data['Registre']['archive'] == 'false') {
$condition['EtatFiche.etat_id'] = EtatFiche::VALIDER_CIL;
}
}
}
......@@ -147,6 +150,21 @@ class RegistresController extends AppController {
if (!empty($this->request->data['Registre']['formulaire'])) {
$condition['Fiche.form_id'] = $this->request->data['Registre']['formulaire'];
}
// Filtre sur la soustraitance
if (!empty($this->request->data['Registre']['soustraitance'])) {
$subQuery = [
'alias' => 'formulaires',
'fields' => ['formulaires.id'],
'contain' => false,
'conditions' => [
'Fiche.form_id = formulaires.id',
'formulaires.soustraitant' => $this->request->data['Registre']['soustraitance']
]
];
$sql = $this->EtatFiche->Fiche->Formulaire->sql($subQuery);
$condition[] = "Fiche.form_id IN ( {$sql} )";
}
}
if (false === empty($conditionValeur)) {
......@@ -188,7 +206,12 @@ class RegistresController extends AppController {
]
],
'Fichier' => [],
'Norme' => []
'Norme' => [],
'Formulaire' => [
'fields' => [
'soustraitant'
]
]
]
],
'order' => 'Fiche.created DESC',
......
......@@ -16,7 +16,7 @@ msgid "default.titreTraitement"
msgstr "Déclarations"
msgid "default.sousTitreMesTraitement"
msgstr "Mes déclarations"
msgstr " Mes déclarations"
msgid "default.sousTitreMesTraitementEnCoursRedaction"
msgstr "Mes déclarations en cours de rédaction"
......@@ -133,13 +133,13 @@ msgid "default.sousTitreTachesAutomatiques"
msgstr "Tâches automatiques"
msgid "default.titreSousTraitant"
msgstr "Sous-traitants"
msgstr "Sous-traitances"
msgid "default.sousTitreLesSousTraitants"
msgstr "Les sous-traitants"
msgstr "Toutes les structures"
msgid "default.sousTitreMesSousTraitants"
msgstr "Mes sous-traitants"
msgstr "Mes structures"
msgid "default.popupBtnChoisir"
msgstr "Choisir"
......@@ -183,7 +183,7 @@ msgid "default.btnCancel"
msgstr " Annuler"
msgid "default.btnAnnuler"
msgstr " Annuler"
msgstr "Annuler"
msgid "default.btnEnvoyer"
msgstr " Envoyer"
......
......@@ -188,6 +188,33 @@ msgstr "Ajouter une pièce jointe"
msgid "fiche.emptySelectionnerServiceDeclarant"
msgstr "Séléctionnez un service de déclaration"
msgid "fiche.textInfoSoustraitant"
msgstr "Information concernant la sous-traitance :"
msgid "fiche.champSoustraitantid"
msgstr "Sous-traitant"
msgid "fiche.champSoustraitantraisonsociale"
msgstr "Sous-traitant"
msgid "fiche.champSoustraitantsiret"
msgstr "N° Siret du sous-traitant"
msgid "fiche.champSoustraitantape"
msgstr "Code APE du sous-traitant"
msgid "fiche.champSoustraitanttelephone"
msgstr "Téléphone du sous-traitant"
msgid "fiche.champSoustraitantfax"
msgstr "Fax du sous-traitant"
msgid "fiche.champSoustraitantadresse"
msgstr "Adresse du sous-traitant"
msgid "fiche.champSoustraitantemail"
msgstr "E-mail du sous-traitant"
###############################################################################
......
......@@ -134,6 +134,12 @@ msgstr "Informations générales du formulaire pour la duplication dans une autr
msgid "formulaire.placeholderDupliquerFormulaireOrganisation"
msgstr "Dupliquer le formulaire dans une autre entité"
msgid "formulaire.popupSoustraitant"
msgstr "Concerne la sous-traitance ? "
msgid "formulaire.titreTableauSoustraitant"
msgstr "Sous-traitance"
###############################################################################
#########################: View/Formulaires/show.ctp ##########################
......
......@@ -11,8 +11,11 @@
##################### Controller/RegistresController.php ######################
msgid "registre.titreRegistre"
msgstr "Registre : "
msgid "registre.titreRegistreActivite"
msgstr "Registre d'activité : "
msgid "registre.titreRegistreSoustraitant"
msgstr "Registre de sous-traitant: "
###################### Session->setFlash ######################
......@@ -87,7 +90,7 @@ msgid "registre.confirmationVerouillerTraitement"
msgstr "Voulez-vous verrouiller ce traitement? Une fois verrouillé, toute modification est impossible."
msgid "registre.btnFiltrerListe"
msgstr " Filtrer la liste"
msgstr "Filtrer la liste"
msgid "registre.placeholderSelectionnerAction"
msgstr "Sélectionner une action"
......@@ -179,4 +182,19 @@ msgstr "Sélectionner un formulaire"
msgid "registre.filtreFormulaire"
msgstr "Filtrer par formulaire"
msgid "registre.placeholderSelectionnerSoustraitant"
msgstr "Afficher les traitements sous-traitant"
msgid "registre.filtreSoustraitant"
msgstr "Filtrer par sous-traitant"
msgid "registre.placeholderSelectionnerArchive"
msgstr "Afficher les traitements"
msgid "registre.filtreArchive"
msgstr "Filtrer par traitement verrouillé"
msgid "registre.textTableauSoustraitant"
msgstr "Sous-traitant : "
###############################################################################
\ No newline at end of file
<?php
echo $this->Form->button("<i class='fa fa-eye'></i>" . " " . __d('pannel','pannel.btnVoirHistoriqueComplet'), [
echo $this->Form->button("<i class='fa fa-eye'>&nbsp;</i>" . __d('pannel','pannel.btnVoirHistoriqueComplet'), [
'type' => 'button',
'class' => 'historique-button btn btn-default-default',
'data-value' => $id
......
......@@ -6,7 +6,7 @@
<script type="text/javascript">
//<![CDATA[
$(document).ready(function () {
$(<?php echo "'{$append}'"; ?>).append(' - <a href="#" id="SqlDumpToggler" onclick="$(\'#sqldump\').toggle();return false;">requêtes SQL</a>');
$(<?php echo "'{$append}'"; ?>).append(' - <a href="#" id="SqlDumpToggler" onclick="$(\'#sqldump\').toggle();return false;">requêtes SQL<\/a>');
var text = $('#sqldump caption').html().replace(/^.* ([0-9]+) queries took ([0-9]+) ms$/, '$1 requêtes SQL en $2 ms');
$('#SqlDumpToggler').html(text);
});
......
......@@ -42,6 +42,20 @@
</a>
</li>
<?php
if ($soustraitance['Formulaire']['soustraitant'] === true) {
?>
<li>
<a href="#soustraitant" role="tab" data-toggle="tab">
<?php
echo 'Sous-traitant';
?>
</a>
</li>
<?php
}
?>
<li>
<a href="#info_formulaire" role="tab" data-toggle="tab">
<?php
......@@ -259,6 +273,90 @@
</div>
<!-- Fin onglet Information concernant le traitement-->
<!-- Onglet sous-traitant -->
<?php
if ($soustraitance['Formulaire']['soustraitant'] === true) {
?>
<div id="soustraitant" class="tab-pane">
<br/>
<!-- Information sur le rédacteur -->
<div class="col-md-12">
<span class='labelFormulaire'>
<?php
echo __d('fiche', 'fiche.textInfoSoustraitant');
?>
</span>
<div class="row row35"></div>
</div>
<!-- Champs du formulaire -->
<div class="row">
<div class="col-md-6">
<?php
echo $this->WebcilForm->input('soustraitantid', [
'id' => 'soustraitantid',
'class' => 'form-control usersDeroulant',
'options' => Hash::combine($soustraitants, '{n}.Soustraitant.id', '{n}.Soustraitant.raisonsociale'),
'empty' => true,
'multiple' => false,
'required' => true,
'data-placeholder' => 'Choisir un sous-traitant'
]);
?>
</div>
<div class="col-md-6">
<?php
echo $this->WebcilForm->inputs([
'soustraitantraisonsociale' => [
'id' => 'soustraitantraisonsociale',
'type' => 'hidden'
],
'soustraitantsiret' => [
'id' => 'soustraitantsiret',
'required' => true,
'readonly' => true,
'placeholder' => false
],
'soustraitantape' => [
'id' => 'soustraitantape',
'required' => true,
'readonly' => true,
'placeholder' => false
],
'soustraitanttelephone' => [
'id' => 'soustraitanttelephone',
'readonly' => true,
'placeholder' => false
],
'soustraitantfax' => [
'id' => 'soustraitantfax',
'readonly' => true,
'placeholder' => false
],
'soustraitantadresse' => [
'id' => 'soustraitantadresse',
'type' => 'textarea',
'readonly' => true,
'placeholder' => false
],
'soustraitantemail' => [
'id' => 'soustraitantemail',
'readonly' => true,
'placeholder' => false
]
]);
?>
</div>
</div>
</div>
<!-- Fin onglet Formulaire -->
<?php
}
?>
<!-- Onglet Formulaire -->
<div id="info_formulaire" class="tab-pane">
<br/>
......@@ -792,7 +890,7 @@ require_once dirname(__FILE__).DS.'model_extention.ctp';
var descriptions = <?php echo json_encode($descriptions_normes)?>;
$("#norme").change(function () {
idNorme = $(this).val();
var str = '';
if (idNorme === '') {
str = null;
......@@ -802,6 +900,30 @@ require_once dirname(__FILE__).DS.'model_extention.ctp';
$("#descriptionNorme").val(str);
});
var infoSoustraitant = <?php echo json_encode(Hash::combine($soustraitants, '{n}.Soustraitant.id', '{n}.Soustraitant'))?>;
$("#soustraitantid").change(function () {
idsoutraitant = $(this).val();
if (idsoutraitant === '') {
str = null;
$("#soustraitantsiret").val(str);
$("#soustraitantape").val(str);
$("#soustraitanttelephone").val(str);
$("#soustraitantfax").val(str);
$("#soustraitantadresse").val(str);
$("#soustraitantemail").val(str);
} else {
$("#soustraitantraisonsociale").val(infoSoustraitant[idsoutraitant]['raisonsociale']);
$("#soustraitantsiret").val(infoSoustraitant[idsoutraitant]['siret']);
$("#soustraitantape").val(infoSoustraitant[idsoutraitant]['ape']);
$("#soustraitanttelephone").val(infoSoustraitant[idsoutraitant]['telephone']);
$("#soustraitantfax").val(infoSoustraitant[idsoutraitant]['fax']);
$("#soustraitantadresse").val(infoSoustraitant[idsoutraitant]['adresse']);
$("#soustraitantemail").val(infoSoustraitant[idsoutraitant]['email']);
}
});
});
function deleteFile(file, key){
......
......@@ -41,6 +41,20 @@
?>
</a>