add.ctp 14 KB
<?php
use Cake\ORM\TableRegistry;
if (isset($cpMateriel)) {
    $Designation = $cpMateriel->designation;
    $Sur_categ_id = $cpMateriel->sur_categorie_id;
    $Categ_id = $cpMateriel->categorie_id;
    $Sous_categ_id = $cpMateriel->sous_categorie_id;
    $Description = $cpMateriel->description;
    $Organisme_id = $cpMateriel->organisme_id;
    $Mat_administratif = $cpMateriel->materiel_administratif;
    $Mat_technique = $cpMateriel->materiel_technique;
    $Date_acquisition = $cpMateriel->date_acquisition;
    $Date_reception = $cpMateriel->date_reception;
    $Fournisseur = $cpMateriel->fournisseur;
    $Prix_ht = $cpMateriel->prix_ht;
    $Groupes_thematique_id = $cpMateriel->groupes_thematique_id;
    $Groupes_metier_id = $cpMateriel->groupes_metier_id;
    $Lieu_detail = $cpMateriel->lieu_detail;
    $Site_id = $cpMateriel->site_id;
} else {
    $Designation = NULL;
    $Sur_categ_id = NULL;
    $Categ_id = NULL;
    $Sous_categ_id = NULL;
    $Description = NULL;
    $Organisme_id = NULL;
    $Mat_administratif = NULL;
    $Mat_technique = NULL;
    $Date_acquisition = NULL;
    $Date_reception = NULL;
    $Fournisseur = NULL;
    $Prix_ht = NULL;
    $Groupes_thematique_id = 1;
    $Groupes_metier_id = 1;
    $Lieu_detail = NULL;
    $Site_id = 9;
}
?>

<div class="materiels form">
    <?=$this->Form->create($materiel)?>
    <fieldset>
		<h2>
			<i class="icon-plus"></i> Ajouter un Matériel
		</h2>
		<div id="boutons" class="actions"
			style="margin-bottom: 20px; width: 100%; float: none; padding: 10px 0;">
        
        <?=$this->Form->submit(__('Enregistrer'))?>
        
        <?=$this->Html->link(__('<i class="icon-minus-sign"></i> Annuler'), ['action' => 'index'], ['escape' => false,'onclick' => 'return true;','style' => 'margin-right: 10px'])?>
        </div>

        <?php
        echo $this->Form->control('designation', [
            'label' => 'Désignation',
            'default' => $Designation
        ]);
        
        echo $this->Form->control('sur_categorie_id', [
            'label' => 'Domaine',
            'style' => 'width: 260px',
            'options' => $surCategories,
            'empty' => 'Choisir un domaine',
            'default' => $Sur_categ_id
        ]);
        // if a domaine is selected, reduce the categories list to this domaine
        $categs = $categories;
        if ($this->request->getData('sur_categorie_id') !== null && ($this->request->getData('sur_categorie_id') != '')) {
            $categs = $categs->where([
                'sur_categorie_id =' => $this->request->getData('sur_categorie_id')
            ]);
        }
        echo $this->Form->control('categorie_id', [
            'label' => 'Catégorie',
            'style' => 'width: 380px',
            'options' => $categs,
            'empty' => 'Choisir une catégorie',
            'default' => $Categ_id
        ]);
        // by default, list is empty
        $souscategs = [];
        // if a categ is selected, update sous-categs list for this categ (only)
        if ($this->request->getData('categorie_id') !== null && ($this->request->getData('categorie_id') != '')) {
            $souscategs = $sousCategories;
            $souscategs = $souscategs->where([
                'categorie_id' => $this->request->getData('categorie_id')
            ]);
        }
        echo $this->Form->control('sous_categorie_id', [
            'label' => 'Sous-catégorie',
            'style' => 'width: 380px',
            'options' => $souscategs,
            'empty' => 'Choisir une sous-catégorie',
            'default' => $Sous_categ_id
        ]);
        echo $this->Form->control('materiel_technique', [
            'label' => 'Technique',
            'default' => $Mat_technique
        ]);
        echo $this->Form->control('materiel_administratif', [
            'label' => 'Inventoriable (>' . $configuration->prix_inventaire_administratif . '€)',
            'default' => $Mat_administratif
        ]);
        if ($configuration->metrologie) {
            echo $this->Form->control('metrologie', [
                'label' => 'Métrologie',
                'default' => false
            ]);
        }
        echo $this->Form->control('description', [
            'label' => 'Description',
            'default' => $Description
        ]);
        if ($USER_IS_RESPONSABLE_OR_MORE) {
            /*
             * }
             * if (in_array($role, [
             * 'Responsable',
             * 'Administration',
             * 'Administration Plus',
             * 'Super Administrateur'
             * ])) {
             */
            echo $this->Form->control('etiquette', [
                'label' => 'Etiquette posée'
            ]);
        }
        echo $this->Form->control('site_id', [
            'options' => $sites,
            'style' => 'width: 380px',
            'default' => $Site_id
        ]);
        echo '<div class="input text"><label for="lieu_detail">Détail lieu de stockage</label><input list="lieu" id="lieu_detail" name="lieu_detail" type="text" placeholder="choisir/ajouter un lieu" autocomplete="off"><datalist id="lieu">';
        foreach ($lieu_detail as $e) {
            echo "<option value=\"$e\">";
        }
        echo '</datalist> </div>';
        echo $this->Form->control('date_acquisition', [
            'type' => 'text',
            'label' => 'Date de la commande',
            'class' => 'datepicker',
            'placeholder' => 'Cliquez pour sélectionner une date',
            'default' => $Date_acquisition
        ]);
        echo $this->Form->control('date_reception', [
            'type' => 'text',
            'label' => 'Date de réception',
            'class' => 'datepicker',
            'placeholder' => 'A éditer lors de la réception uniquement.',
            'empty' => true,
            'default' => $Date_reception
        ]);
        echo '<table id="tableAlignementFrequence"><tr><td>';
        echo $this->Form->control('duree_garantie', [
            'type' => 'text',
            'label' => 'Durée garantie',
            'style' => 'width: 100px',
            'templates' => [
                'inputContainer' => '<div class="A">{{content}}</div>'
            ],
            'placeholder' => ''
        ]);
        echo '</td><td>';
        echo $this->Form->control('unite_duree_garantie', [
            'label' => false,
            'templates' => [
                'inputContainer' => '<div class="typeFrequence">{{content}}</div>'
            ],
            'options' => [
                'Mois' => 'Mois',
                'Ans' => 'Ans'
            ],
            'default' => 'Ans'
        ]);
        echo '</td></tr></table>';
        echo $this->Form->control('date_fin_garantie', [
            'type' => 'text',
            'label' => 'Date fin de garantie',
            'placeholder' => 'Cliquez pour selectionner une date',
            'class' => 'datepicker',
            'default' => NULL
        ]);
        echo $this->Form->control('numero_serie', [
            'label' => 'Numéro de série'
        ]);
        echo $this->Form->control('groupes_thematique_id', [
            'label' => $configuration->nom_groupe_thematique,
            'options' => $groupesThematiques,
            'default' => $Groupes_thematique_id
        ]);
        echo $this->Form->control('groupes_metier_id', [
            'label' => $configuration->nom_groupe_metier,
            'options' => $groupesMetiers,
            'default' => $Groupes_metier_id
        ]);
        $fieldType = $USER_IS_UTILISATEUR ? 'hidden' : 'input';
        echo $this->Form->$fieldType('nom_responsable', [
            'label' => 'Nom de l\'utilisateur',
            'empty' => 'Choisir un utilisateur',
            'default' => $username,
            'options' => $utilisateurs
        ]);
        echo $this->Form->control('email_responsable', [
            'label' => 'Email de l\'utilisateur',
            'readonly' => true,
            'default' => $mail_responsable
        ]);
        $res = TableRegistry::get('Users')->find()
            ->where([
            'username' => $username,
            'role' => 'Administration'
        ])
            ->first();
        $administrateurs = TableRegistry::get('Users')->find('list', [
            'keyField' => 'id',
            'valueField' => 'nom'
        ])
            ->where([
            'role =' => 'Administration'
        ])
            ->toArray();
        echo $this->Form->control('gestionnaire_id', [
            'label' => 'Nom du gestionnaire de référence du matériel',
            'empty' => 'Choisir un gestionnaire',
            'default' => $_SESSION['Auth']['User']['sn'][0],
            'options' => $administrateurs
        ]);
        //nouveau champ de saisie de Fournisseur, il ne se saisissait pas à l'ajout
        echo $this->Form->control('fournisseur_id', [
            'label' => 'Fournisseur',
            'options' => $fournisseurs,
            'style' => 'width: 380px',
            'empty' => 'Choisir un fournisseur'
        ]);
        echo $this->Form->control('organisme_id', [
            'options' => $organismes,
            'style' => 'width: 380px',
            'empty' => 'Choisir un organisme',
            'default' => $Organisme_id
        ]);
        echo $this->Form->control('prix_ht', [
            'label' => 'Prix HT (€)',
            'default' => $Prix_ht
        ]);
        if ($USER_IS_ADMIN_OR_MORE) {
            /*
             * if (in_array($role, [
             * 'Administration',
             * 'Administration Plus',
             * 'Super Administrateur'
             * ])) {
             */
            echo '<div style="border-top: 1px solid #CCC; border-bottom: 1px solid #CCC; margin-bottom: 0; background: #EEE;"><span style="font-size: 9px; color: red;">Partie administrative</span>';
            echo $this->Form->control('eotp', [
                'label' => 'Centre financier/EOTP'
            ]);
            echo $this->Form->control('numero_commande', [
                'label' => 'Numéro de commande'
            ]);
            echo $this->Form->control('code_comptable', [
                'label' => 'Code comptable'
            ]);
            echo $this->Form->control('numero_inventaire_organisme', [
                'label' => 'N° inventaire organisme'
            ]);
            echo $this->Form->control('numero_inventaire_old', [
                'label' => 'Ancien N° inventaire'
            ]);
            echo '</div>';
        }
        echo $this->Form->hidden('nom_createur', [
            'value' => $username
        ]);
        ?>
	</fieldset>
	<?=$this->Form->submit(__('Enregistrer'))?>
	<?=$this->Form->end()?>
</div>

<div class="actions">
<?php
echo $this->element('menu');
echo $this->element('menu_form', [
    'pluralHumanName' => 'Matériels'
]);
?>
</div>

<?php
/**
 * GESTION DES EVENEMENTS SUR LES DOMAINES/CATEGORIES/SOUS-CATEGORIES
 * Phase initialisation (1ère ouverture de la page) :
 * - domaine ==> value = TOUS, select = "choisir" (ADD) ou data (EDIT)
 * - categ ==> value = TOUTES (ADD) ou from domaine (EDIT), select = "choisir" (ADD) ou data (EDIT)
 * - scateg ==> value = Aucune (ADD) ou from categ (EDIT), select = "choisir" (ADD) ou data (EDIT)
 * Event domaine change :
 * - si select <> "choisir" ==> categ value = from domaine (select="choisir"), et vider scateg
 * - si select = "choisir" ==> categ value = TOUTES (select="choisir"), et vider scateg
 * Event categ change :
 * - si select <> "choisir" ==> domaine select = from categ, et scateg values = from categ
 * - si select = "choisir" ==> vider scateg
 * Event scateg change : RIEN A FAIRE
 */
?>

<?php // Alors oui, c'est pas joli, mais CakePHP a eu l'EXCELENTE IDEE de TOUT inclure dans la balise <head> du site ... Et bien entendu c'est pas pris en compte ici .... Halleluja bordel (#JeremyFerrary) ?>
<?=$this->Html->script('jquery-1.8.12')?>
<?=$this->Html->script('script')?>
<?=$this->Html->script('DatepickerConfig')?>
<?=$this->Html->script('Verifications_dates_materiels.js')?>

<script type="text/javascript">

/**
 * Event DOMAINE change
 *
 * Sur sélection d'un DOMAINE ==> update CATEGORIES + empty SOUS-CATEGORIES
 *
 * Dans le détail :
 * - si select <> "choisir" ==> categ value = from domaine (select="choisir")
 * - si select = "choisir" ==> categ value = TOUTES (select="choisir")
 * - puis (dans les 2 cas) vider scateg
 *
 */
 
$(document).ready(function() {
	$("#sur-categorie-id").bind("change", function(event) {
		var domaineId = $("#sur-categorie-id :selected").val();
		var domaineresp= "<?=$domaineresp?>";

		var role= "<?=$role?>";
		if(domaineId== domaineresp){
			if (role == "Responsable") $("#metro").css("display", "block");
			else $("#metro").css("display", "none");
		}
		else
			$("#metro").css("display", "none");

		if (domaineId=="") updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getAll", "Choisir une catégorie");
		else updateSelectOptionsFromAnother("#categorie-id", "#sur-categorie-id", "Categories/getBySurCategorie", "Choisir une catégorie");
		emptySelectOptions("#sous-categorie-id", "Choisir une sous-catégorie");
		return false;
	});
	
	/**
	 *
	 * Event CATEGORIE change
	 *
	 * - si select = "choisir" ==> vider scateg
	 * - si select <> "choisir" ==> domaine value selected = celui de la categ, et scateg values = from categ
	 */
	$("#categorie-id").bind("change", function(event) {
		var categId = $("#categorie-id :selected").val();
		var categLabel = $("#categorie-id :selected").text();

		if (categId == "") emptySelectOptions("#sous-categorie-id", "Choisir une sous-catégorie");
		else {
			updateSelectOptionsFromAnother("#sous-categorie-id", "#categorie-id", "SousCategories/getByCategorie", "Choisir une sous-catégorie " + categLabel);
			updateSelectOptionsFromAnother("#sur-categorie-id", "#categorie-id", "SurCategories/getFromCategorie", "");
		}
		return false;
	});

	/**
	 * Event Mail change
	 */
	$("#nom-responsable").bind("change", function(event) {
		var url = document.URL;
		var reg = new RegExp("(materiels).*$", "g");
		var emailUrl = url.replace(reg, "Users/getLdapEmail/");
		$.ajax({
			url: emailUrl + $("#nom-responsable").val()
		}).done(function(data) {
			$("#email-responsable").val(data)
		});
	});
});
	
</script>