533 lines
22 KiB
XML
533 lines
22 KiB
XML
<metal:block use-macro="main_template">
|
|
<div metal:fill-slot="content">
|
|
|
|
<div class="row">
|
|
<form id="change-eleve-details-form" class="form-horizontal" action="${url}" method="post" tal:condition="eleve"
|
|
data-fv-framework="bootstrap"
|
|
data-fv-icon-valid="glyphicon glyphicon-ok"
|
|
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
|
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
|
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="CIVILITE">Civilité</label>
|
|
<div class="col-xs-3">
|
|
<select class="form-control CIVILITE" name="CIVILITE" id="CIVILITE">
|
|
<option value="M." tal:attributes="selected eleve.CIVILITE == 'M.' and 'selected' or None">M.</option>
|
|
<option value="Mme" tal:attributes="selected eleve.CIVILITE == 'Mme' and 'selected' or None">Mme</option>
|
|
<option value="Mlle" tal:attributes="selected eleve.CIVILITE == 'Mlle' and 'selected' or None">Mlle</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="NOM">Nom</label>
|
|
<div class="col-xs-5">
|
|
<input class="form-control" type="text" id="NOM" name="NOM" value="${eleve.NOM}"
|
|
placeholder="45 caractères maximum"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Le nom est obligatoire"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="30"
|
|
data-fv-stringlength-message="30 caractères maximum" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="PRENOM">Prénom</label>
|
|
<div class="col-xs-5">
|
|
<input class="form-control" type="text" id="PRENOM" name="PRENOM" value="${eleve.PRENOM}"
|
|
placeholder="45 caractères maximum"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Le prénom est obligatoire"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="37"
|
|
data-fv-stringlength-message="37 caractères maximum" />
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="form-group" id="nom_jf_form">
|
|
<label class="col-xs-4 control-label">Nom de naissance</label>
|
|
<div class="col-xs-5" id="nom_jf_field">
|
|
<input class="form-control" type="text" name="NOM_JF"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="30"
|
|
data-fv-stringlength-message="30 caractères maximum"
|
|
value="${eleve.NOM_JF}" placeholder="Nom de naissance"/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="CODEPOST">Code postal</label>
|
|
<div class="col-xs-5">
|
|
<input class="form-control" type="text" id="CODEPOST" name="CODEPOST" value="${code_postal}"
|
|
placeholder="5 caractères maximum"
|
|
data-fv-stringlength="true"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Le code postal est obligatoire" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="adresse_no_voie">Numéro d'adresse</label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="adresse_no_voie" name="adresse_no_voie" value="${eleve.adresse_no_voie}"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="4"
|
|
data-fv-stringlength-message="4 caractères maximum" />
|
|
|
|
</div>
|
|
</div>
|
|
<label class="control-label col-xs-2" for="adresse_extension">Extension</label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="10"
|
|
data-fv-stringlength-message="10 caractères maximum"
|
|
id="adresse_extension" name="adresse_extension" value="${eleve.adresse_extension}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group ">
|
|
<label class="control-label col-xs-4" for="adresse_type_voie">Type de voie</label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="20"
|
|
data-fv-stringlength-message="20 caractères maximum"
|
|
id="adresse_type_voie" name="adresse_type_voie" value="${eleve.adresse_type_voie}"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<label class="control-label col-xs-2" for="adresse_nom_voie">Nom de voie</label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="adresse_nom_voie" name="adresse_nom_voie" value="${eleve.adresse_nom_voie}"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="40"
|
|
data-fv-stringlength-message="40 caractères maximum"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Nom de voie obligatoire" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="TEL">Téléphone fixe</label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="TEL" name="TEL" value="${eleve.TEL}"
|
|
data-fv-phone="true"
|
|
data-fv-phone-country="FR"
|
|
data-fv-phone-message="Numéro de téléphone non valide" />
|
|
<span class="input-group-addon" tal:condition="eleve.TEL">
|
|
<a href="tel:${eleve.TEL}"><span class="glyphicon glyphicon-earphone"></span></a></span>
|
|
</div>
|
|
</div>
|
|
<label class="control-label col-xs-2" for="TEL2">mobile</label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="TEL2" name="TEL2" value="${eleve.TEL2}"
|
|
data-fv-phone="true"
|
|
data-fv-phone-country="FR"
|
|
data-fv-phone-message="Numéro de téléphone non valide" />
|
|
<span class="input-group-addon" tal:condition="eleve.TEL2">
|
|
<a href="tel:${eleve.TEL2}"><span class="glyphicon glyphicon-earphone"></span></a></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="TEL3">Téléphone père</label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="TEL3" name="TEL3" value="${eleve.TEL3}"
|
|
data-fv-phone="true"
|
|
data-fv-phone-country="FR"
|
|
data-fv-phone-message="Numéro de téléphone non valide" />
|
|
<span class="input-group-addon" tal:condition="eleve.TEL3">
|
|
<a href="tel:${eleve.TEL3}"><span class="glyphicon glyphicon-earphone"></span></a></span>
|
|
</div>
|
|
</div>
|
|
<label class="control-label col-xs-2" for="TEL4">mère</label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="TEL4" name="TEL4" value="${eleve.TEL4}"
|
|
data-fv-phone="true"
|
|
data-fv-phone-country="FR"
|
|
data-fv-phone-message="Numéro de téléphone non valide" />
|
|
<span class="input-group-addon" tal:condition="eleve.TEL4">
|
|
<a href="tel:${eleve.TEL4}"><span class="glyphicon glyphicon-earphone"></span></a></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Adresse email élève</label>
|
|
<div class="col-xs-6">
|
|
<input class="form-control" type="text" name="email"
|
|
value="${eleve.email}" placeholder="50 caractères maximum"
|
|
data-fv-notempty="true"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="50"
|
|
data-fv-stringlength-message="50 caractères maximum"
|
|
data-fv-notempty-message="L'adresse email est obligatoire"
|
|
data-fv-emailaddress="true"
|
|
data-fv-emailaddress-message="L'adresse email n'est pas valide" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label" for="PROFESSION">Profession</label>
|
|
<div class="col-xs-6">
|
|
<input class="form-control" type="text" name="PROFESSION" id="PROFESSION"
|
|
value="${eleve.PROFESSION}" placeholder="20 caractères maximum"
|
|
data-fv-notempty="false"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="20"
|
|
data-fv-stringlength-message="20 caractères maximum"
|
|
data-fv-notempty-message="La profession est obligatoire" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="TYPE_ENTREPRISE">Type élève</label>
|
|
<div class="col-xs-3">
|
|
<select class="form-control TYPE_ENTREPRISE" name="TYPE_ENTREPRISE" id="TYPE_ENTREPRISE">
|
|
<option value="P" tal:attributes="selected eleve.TYPE_ENTREPRISE == 'P' and 'selected' or None">Particulier</option>
|
|
<option value="E" tal:attributes="selected eleve.TYPE_ENTREPRISE == 'E' and 'selected' or None">Entreprise</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label" for="NATION">Nationalité</label>
|
|
<div class="col-xs-6">
|
|
<select class="form-control NATION" name="NATION" >
|
|
<option tal:repeat="item nations" value="${item.pays}" tal:attributes="selected eleve.NATION == item.pays or item.pays == 'FRANCE' and 'selected' or None">${item.pays}</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label" for="DATE_NAIS">Date de naissance</label>
|
|
<div class="col-xs-6">
|
|
<input class="form-control" type="text" id="DATE_NAIS" name="DATE_NAIS" value="${date_nais}" placeholder="JJ/MM/AAAA"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="La date de naissance est obligatoire"
|
|
data-fv-date="true"
|
|
data-fv-date-format="DD/MM/YYYY"
|
|
data-fv-date-message="La date de naissance n'est pas valide (JJ/MM/AAAA)" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label" for="LIEU_NAIS">Lieu de naissance</label>
|
|
<div class="col-xs-6">
|
|
<input class="form-control" type="text" id="LIEU_NAIS" name="LIEU_NAIS" value="${eleve.LIEU_NAIS}"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Le lieu de naissance est obligatoire"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="26"
|
|
data-fv-stringlength-message="26 caractères maximum" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label" for="DEPT_NAIS">Département ou pays de naissance</label>
|
|
<div class="col-xs-6">
|
|
<select class="form-control DEPT_NAIS" name="DEPT_NAIS" >
|
|
<option tal:repeat="item dept_nais" value="${item.code}" tal:attributes="selected eleve.DEPT_NAIS == item.code and 'selected' or None">${item.code}</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="PERMIS_DEMANDE">Permis demandé</label>
|
|
<div class="col-xs-3">
|
|
<select class="form-control" id="PERMIS_DEMANDE" name="PERMIS_DEMANDE" tal:attributes="disabled not can_change_permis and 'disabled' or None" >
|
|
<div tal:repeat="item permis">
|
|
<option value="${item.CAT}" tal:attributes="selected eleve.PERMIS_DEMANDE==item.CAT and 'selected' or None">${item.CAT}</option>
|
|
</div>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="FORMULE">Formule</label>
|
|
<div class="col-xs-3">
|
|
<select class="form-control" name="FORMULE" id="FORMULE">
|
|
<option value="">---NR---</option>
|
|
<div tal:repeat="item formules">
|
|
<option value="${item.FORMULE}" tal:attributes="selected eleve.FORMULE == item.FORMULE and 'selected' or None">${item.FORMULE}</option>
|
|
</div>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="NePasSpammer"></label>
|
|
<div class="col-xs-6">
|
|
<input type="checkbox" name="NePasSpammer" value="oui" id="NePasSpammer"
|
|
tal:attributes="checked eleve.NePasSpammer == 1 and 'checked' or None">
|
|
Ne pas spammer (CNIL)</input>
|
|
</div>
|
|
</div>
|
|
|
|
<!--? entreprise infos for student type E -->
|
|
|
|
<div class="entreprise_infos hidden" id="entreprise_infos" >
|
|
<div class="form-group text-center">
|
|
<h4 class="text-primary"><b>INFORMATION SUPPLEMENTAIRE</b></h4>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="NOM_ENTREPRISE">Nom de l'entreprise</label>
|
|
<div class="col-xs-6">
|
|
<input class="form-control" type="text" id="NOM_ENTREPRISE" name="NOM_ENTREPRISE" value="${eleve.NOM_ENTREPRISE}"
|
|
placeholder="45 caractères maximum"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Le nom de l'entreprise est obligatoire"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="25"
|
|
data-fv-stringlength-message="25 caractères maximum"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="no_facture">No facture</label>
|
|
<div class="col-xs-6">
|
|
<input class="form-control" type="text" id="facture_no" name="facture_no" value="${eleve.facture_no}"
|
|
placeholder="45 caractères maximum"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="10"
|
|
data-fv-stringlength-message="10 caractères maximum"/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" >
|
|
<label class="control-label col-xs-4" for="encours_societe">Encours autorisé</label>
|
|
<div class="col-xs-6">
|
|
<input class="form-control" tal:attributes="disabled code != 9 and 'disabled' or None" type="text" id="encours_societe" name="encours_societe" value="${eleve.encours_societe}"
|
|
placeholder="45 caractères maximum"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="45"
|
|
data-fv-stringlength-message="45 caractères maximum"
|
|
data-fv-notempty="true"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-thousands-separator=''
|
|
data-fv-numeric-decimal-separator='.'
|
|
data-fv-numeric-message = "Entrer un montant validé"
|
|
data-fv-notempty-message="Encours autorisé est obligatoire"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="NePasRelancer">Ne pas relancer si compte < 0</label>
|
|
<div class="col-xs-6">
|
|
<input type="checkbox" name="NePasRelancer" value="oui" id="NePasRelancer"
|
|
tal:attributes="checked eleve.NePasRelancer == 1 and 'checked' or None">
|
|
</input>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class="col-xs-offset-4 col-xs-5">
|
|
<a class="btn btn-default" tal:condition="eleve.CD_CLI != 0" href="${request.application_url}/fiche_eleve/${eleve.CD_CLI}">
|
|
<span class="glyphicon glyphicon-chevron-left"></span> Annuler</a>
|
|
<a class="btn btn-default" tal:condition="eleve.CD_CLI == 0" href="${request.application_url}/eleves">
|
|
<span class="glyphicon glyphicon-chevron-left"></span> Annuler</a>
|
|
<button class="btn btn-primary" type="submit" name="form.submitted">
|
|
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div> <!-- row -->
|
|
<br />
|
|
<br />
|
|
|
|
<script>
|
|
|
|
$(document).ready(function() {
|
|
|
|
const notEmptyValidator = {
|
|
validators: {
|
|
notEmpty: {
|
|
message: 'Entrer le nom de naissance',
|
|
enable : true
|
|
}
|
|
}
|
|
};
|
|
|
|
$("#PERMIS_DEMANDE").change(function (){
|
|
$("#FORMULE").empty()
|
|
var permis = $(this).find("option:selected").val()
|
|
$.ajax({
|
|
url:'/ajax_valid_formules',
|
|
dataType: 'json',
|
|
data: {
|
|
permis: permis,
|
|
},
|
|
success: function (data) {
|
|
$('#FORMULE').append($('<option>', {
|
|
value: '',
|
|
text: '---NR---'
|
|
}))
|
|
for (var i = 0; i < data.length; i++) {
|
|
$('#FORMULE').append($('<option>', {
|
|
value: data[i].value,
|
|
text: data[i].data
|
|
}))
|
|
}
|
|
},
|
|
});
|
|
|
|
});
|
|
|
|
function loadDefaultCivility(){
|
|
var selVal = $( ".CIVILITE option:selected" ).val();
|
|
if(selVal === "Mme"){
|
|
fv.formValidation.addField('NOM_JF',notEmptyValidator)
|
|
}
|
|
else{
|
|
fv.formValidation.removeField('NOM_JF').resetField('NOM_JF')
|
|
$('#nom_jf_form').removeClass('has-feedback').removeClass('has-success').removeClass('has-error')
|
|
$('#nom_jf_field').html("<input class=\"form-control\" type=\"text\" name=\"NOM_JF\"\n" +
|
|
"value=\"${eleve.NOM_JF}\" placeholder=\"Nom de naissance\"/>")
|
|
}
|
|
}
|
|
|
|
function loadDefaultEntrepriseType(){
|
|
// For unique choice
|
|
var selVal = $( ".TYPE_ENTREPRISE option:selected" ).val();
|
|
if(selVal === "E"){
|
|
$('#entreprise_infos').show().removeClass('hidden')
|
|
}
|
|
else{
|
|
$('#entreprise_infos').hide()
|
|
}
|
|
}
|
|
|
|
function compareDate(input){
|
|
var today = new Date();
|
|
var replaced = input.replaceAll('/','-')
|
|
var mm = moment(replaced,'DD-MM-YYYY',true)
|
|
if(mm.isValid()){
|
|
var birthDate = mm.toDate();
|
|
var age = today.getFullYear() - birthDate.getFullYear();
|
|
if(age < 18){
|
|
$('#representant_infos').show().removeClass('hidden')
|
|
}
|
|
else{
|
|
$('#representant_infos').hide()
|
|
}
|
|
return true;
|
|
}
|
|
else{
|
|
$('#representant_infos').hide()
|
|
return false
|
|
}
|
|
}
|
|
var valDateNaiss = $('#DATE_NAIS').val()
|
|
if(valDateNaiss){
|
|
compareDate(valDateNaiss);
|
|
}
|
|
var fv = $('#change-eleve-details-form').formValidation({
|
|
fields: {
|
|
DATE_NAIS: {
|
|
validators: {
|
|
callback: {
|
|
message: ' ',
|
|
callback: function(input) {
|
|
return compareDate(input)
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
}).data();
|
|
|
|
loadDefaultCivility();
|
|
loadDefaultEntrepriseType();
|
|
|
|
$("#CIVILITE" ).on('change',function() {
|
|
loadDefaultCivility();
|
|
});
|
|
|
|
$("#TYPE_ENTREPRISE").on('change',function() {
|
|
loadDefaultEntrepriseType();
|
|
});
|
|
|
|
$('#CODEPOST').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_codepostal',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 1,
|
|
});
|
|
|
|
$('#representant_cp').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_codepostal',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 1,
|
|
});
|
|
|
|
$('#formule').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_formules',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response(data);
|
|
},
|
|
|
|
});
|
|
},
|
|
minLength: 1,
|
|
});
|
|
|
|
$('#DEPT_NAIS').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_dept_nais',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
|
|
$('form input').on('keypress', function(e) {
|
|
return e.which !== 13;
|
|
});
|
|
});
|
|
</script>
|
|
|
|
</div>
|
|
</metal:block>
|