562 lines
19 KiB
XML
562 lines
19 KiB
XML
<metal:block use-macro="main_template">
|
|
<div metal:fill-slot="content">
|
|
|
|
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
|
|
|
|
<form id="formule_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="item"
|
|
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="FORMULE">Formule</label>
|
|
<div class="col-xs-8">
|
|
<input class="form-control" type="text" id="FORMULE" name="FORMULE" value="${item.FORMULE}"
|
|
placeholder="5 caractères maximum"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="La formule est obligatoire"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="10"
|
|
data-fv-stringlength-message=" caractères maximum" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="LIBELLE">Libellé</label>
|
|
<div class="col-xs-8">
|
|
<input class="form-control" type="text" id="LIBELLE" name="LIBELLE" value="${item.LIBELLE}"
|
|
placeholder="30 caractères maximum"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Le libellé 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">
|
|
<div class="col-xs-offset-4 col-xs-3 checkbox">
|
|
<label><input type="checkbox" name="STAGE" value="item.STAGE" id="STAGE"
|
|
tal:attributes="checked item.STAGE != 0 and 'checked' or None">Formule stage
|
|
</label>
|
|
</div>
|
|
<div class="col-xs-5 checkbox">
|
|
<label><input type="checkbox" name="forfait_code" value="item.forfait_code" id="forfait_code"
|
|
tal:attributes="checked item.forfait_code != 0 and 'checked' or None">avec forfait code
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4">Type examen</label>
|
|
<div class="col-xs-8">
|
|
<select class="form-control" id="type_examen" name="type_examen">
|
|
<tal:block tal:repeat="type_exa types_exa">
|
|
<option value="${type_exa}" tal:attributes="selected type_exa==item.type_examen and 'selected' or None">${type_exa}</option>
|
|
</tal:block>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4">Filière</label>
|
|
<div class="col-xs-8">
|
|
<select class="form-control" id="FILIERE" name="FILIERE">
|
|
<tal:block tal:repeat="fil filieres">
|
|
<option value="${fil.code}" tal:attributes="selected fil.code==item.FILIERE and 'selected' or None">${fil.libelle}</option>
|
|
</tal:block>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Validité du code</label>
|
|
<div class="col-xs-8">
|
|
<div class="input-group">
|
|
<span class="input-group-addon">Jours</span>
|
|
<input class="form-control" type="text" id="DUREE_CODE" name="DUREE_CODE" value="${item.DUREE_CODE}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
<span class="input-group-addon">0 = pas de limite.</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Validité conduite</label>
|
|
<div class="col-xs-8">
|
|
<div class="input-group">
|
|
<span class="input-group-addon">Jours</span>
|
|
<input class="form-control" type="text" id="DUREE_COND" name="DUREE_COND" value="${item.DUREE_COND}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
<span class="input-group-addon">0 = pas de limite.</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="DateDeb">Date début validité</label>
|
|
<div class="col-xs-8">
|
|
<div class="input-group date" id="DateDeb">
|
|
<input class="form-control" type="text" name="DateDeb" value="${item.DateDeb.strftime('%d-%m-%Y')}"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="La date de début est obligatoire"
|
|
data-fv-date="true"
|
|
data-fv-date-format="DD-MM-YYYY"
|
|
data-fv-date-message="La date n'est pas valide" />
|
|
<span class="input-group-addon add-on">
|
|
<span class="glyphicon glyphicon-calendar"></span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="DateFin">Date fin validité</label>
|
|
<div class="col-xs-8">
|
|
<div class="input-group date" id="DateFin">
|
|
<input class="form-control" type="text" name="DateFin" value="${item.DateFin.strftime('%d-%m-%Y')}"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="La date de fin est obligatoire"
|
|
data-fv-date="true"
|
|
data-fv-date-format="DD-MM-YYYY"
|
|
data-fv-date-message="La date n'est pas valide" />
|
|
<span class="input-group-addon add-on">
|
|
<span class="glyphicon glyphicon-calendar"></span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h3 class="text-primary">Ce forfait comprend :</h3>
|
|
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Présentation théorique</label>
|
|
<div class="col-xs-3">
|
|
<input class="form-control" type="text" id="NBPTGRATUIT" name="NBPTGRATUIT" value="${item.NBPTGRATUIT}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">Pratique</label>
|
|
<div class="col-xs-3">
|
|
<input class="form-control" type="text" id="NBPPGRATUIT" name="NBPPGRATUIT" value="${item.NBPPGRATUIT}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Heure de conduite</label>
|
|
<div class="col-xs-3">
|
|
<input class="form-control" type="text" id="NBHCGRATUIT" name="NBHCGRATUIT" value="${item.NBHCGRATUIT}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="VAL_HCG" name="VAL_HCG" value="${item.VAL_HCG}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Séance de circuit</label>
|
|
<div class="col-xs-3">
|
|
<input class="form-control" type="text" id="NBCCGRATUIT" name="NBCCGRATUIT" value="${item.NBCCGRATUIT}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="VAL_CCG" name="VAL_CCG" value="${item.VAL_CCG}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Examen blanc</label>
|
|
<div class="col-xs-3">
|
|
<input class="form-control" type="text" id="NBTAGRATUIT" name="NBTAGRATUIT" value="${item.NBTAGRATUIT}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="VAL_TAG" name="VAL_TAG" value="${item.VAL_TAG}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">RDV pédagogique</label>
|
|
<div class="col-xs-3">
|
|
<input class="form-control" type="text" id="NBRPGRATUIT" name="NBRPGRATUIT" value="${item.NBRPGRATUIT}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="VAL_RPG" name="VAL_RPG" value="${item.VAL_RPG}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Heure de route</label>
|
|
<div class="col-xs-3">
|
|
<input class="form-control" type="text" id="NBHRGRATUIT" name="NBHRGRATUIT" value="${item.NBHRGRATUIT}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="VAL_HRG" name="VAL_HRG" value="${item.VAL_HRG}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Nb heure(s) par séance</label>
|
|
<div class="col-xs-8">
|
|
<input class="form-control" type="text" id="HSeance" name="HSeance" value="${item.HSeance}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre est invalide" />
|
|
</div>
|
|
</div>
|
|
|
|
<h3 class="text-primary">Produits à débiter à l'instription</h3>
|
|
|
|
<div class="form-group">
|
|
<label class="col-xs-3 control-label">Réf. 1</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="INS1" name="INS1" value="${item.INS1}" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="MTVAL1" name="MTVAL1" value="${item.MTVAL1}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-3 control-label">Réf. 2</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="INS2" name="INS2" value="${item.INS2}" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="MTVAL2" name="MTVAL2" value="${item.MTVAL2}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-3 control-label">Réf. 3</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="INS3" name="INS3" value="${item.INS3}" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="MTVAL3" name="MTVAL3" value="${item.MTVAL3}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-3 control-label">Réf. 4</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="INS4" name="INS4" value="${item.INS4}" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="MTVAL4" name="MTVAL4" value="${item.MTVAL4}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-3 control-label">Réf. 5</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="INS5" name="INS5" value="${item.INS5}" />
|
|
</div>
|
|
<label class="col-xs-2 control-label">valorisée à </label>
|
|
<div class="col-xs-3">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="MTVAL5" name="MTVAL5" value="${item.MTVAL5}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h3 class="text-primary">Produits à débiter pour :</h3>
|
|
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Examen blanc</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="TFISC" name="TFISC" value="${item.TFISC}" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Présentation théorique</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="P_THEOS" name="P_THEOS" value="${item.P_THEOS}" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">1ère présentation pratique</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="P_PRATS1" name="P_PRATS1" value="${item.P_PRATS1}" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Présentation pratique suivante</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="P_PRATS" name="P_PRATS" value="${item.P_PRATS}" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Heure de conduite</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="HCONDUIT" name="HCONDUIT" value="${item.HCONDUIT}" />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="col-xs-4 control-label">Document formant le contrat</label>
|
|
<div class="col-xs-8">
|
|
<input class="form-control" type="text" id="CONTRAT1" name="CONTRAT1" value="${item.CONTRAT1}" readonly />
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="access">Dernière modif.</label>
|
|
<div class="col-xs-7">
|
|
<p class="form-control-static" tal:condition="item.FORMULE != '0'">${item.modif_le.strftime('%d/%m/%Y - %H:%M')}</p>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
|
|
<div class="form-group">
|
|
<div class="col-xs-offset-2 col-xs-10">
|
|
<div class="form-group">
|
|
<a class="btn btn-default" href="${request.application_url}/formules">
|
|
<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>
|
|
<button class="btn btn-warning" type="submit" name="form.deleted"
|
|
tal:condition="item.FORMULE != '0'">
|
|
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
|
|
<br />
|
|
<br />
|
|
|
|
<div metal:fill-slot="additional_scripts">
|
|
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
|
<!-- Bootstrap Datepicker plugin -->
|
|
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('#formule_edit-form').formValidation();
|
|
$('#DateDeb').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
})
|
|
.on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#formule_edit-form').formValidation('revalidateField', 'DateDeb');
|
|
});
|
|
$('#DateFin').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
})
|
|
.on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#formule_edit-form').formValidation('revalidateField', 'DateFin');
|
|
});
|
|
$('form input').on('keypress', function(e) {
|
|
return e.which !== 13;
|
|
});
|
|
$('#INS1').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#INS2').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#INS3').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#INS4').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#INS5').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#TFISC').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#P_THEOS').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#P_PRATS1').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#P_PRATS').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
$('#HCONDUIT').autocomplete({
|
|
source: function (request, response) {
|
|
$.ajax({
|
|
url:'/ajax_tarifs',
|
|
dataType: 'json',
|
|
data: {
|
|
recherche: request.term,
|
|
},
|
|
success: function (data) {
|
|
response( data );
|
|
},
|
|
});
|
|
},
|
|
minLength: 2,
|
|
});
|
|
|
|
});
|
|
</script>
|
|
</div>
|
|
|
|
</div>
|
|
</metal:block>
|