349 lines
15 KiB
XML
349 lines
15 KiB
XML
<metal:block use-macro="main_template">
|
|
<div metal:fill-slot="content">
|
|
|
|
<div class="alert alert-danger" tal:condition="message" tal:content="message" />
|
|
|
|
<div class="row">
|
|
<form id="devis_cpf_frm" action="${url}" method="post" class="form-horizontal">
|
|
|
|
<!-- Phase : DEMANDE -->
|
|
<h4 class="text-primary">1. Demande</h4>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="cd_prospect">Code prospect</label>
|
|
<div class="col-xs-2 text-primary">
|
|
<p class="form-control-static"><b>${devis.cd_prospect}</b></p>
|
|
</div>
|
|
<div class="col-xs-2 text-right"><b>Code élève</b></div>
|
|
<div class="col-xs-4 text-danger"><b>${devis.cd_cli}</b></div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="type_devis">Type de PEC</label>
|
|
<div class="col-xs-8" tal:condition="etape <= 3">
|
|
<select class="form-control" id="type_devis" name="type_devis">
|
|
<div tal:repeat="item types_devis">
|
|
<option value="${item.type_devis}" tal:attributes="selected devis.type_devis==item.type_devis and 'selected' or None">${item.libelle}</option>
|
|
</div>
|
|
</select>
|
|
</div>
|
|
<div class="col-xs-8" tal:condition="etape > 3">
|
|
<input class="form-control" type="text" id="type_devis" name="type_devis" value="${devis.type_devis}" readonly />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="montant_pec">Montant de PEC</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group">
|
|
<span class="input-group-addon">TTC</span>
|
|
<input class="form-control" type="text" id="montant_pec" name="montant_pec" value="${devis.montant_pec}" readonly />
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-4">
|
|
<div class="input-group">
|
|
<span class="input-group-addon">HT</span>
|
|
<input class="form-control" type="text" id="montant_ht" name="montant_ht" value="${devis.montant_ht}" readonly />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="nb_heures_pec">Nombre d'heures</label>
|
|
<div class="col-xs-8">
|
|
<input class="form-control" type="text" id="nb_heures_pec" name="nb_heures_pec" value="${devis.nb_heures_pec}" readonly />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="no_dossier">Numéro de dossier</label>
|
|
<div class="col-xs-8">
|
|
<input class="form-control" type="text" id="no_dossier" name="no_dossier" value="${devis.no_dossier}"
|
|
placeholder="(20 car. max.)"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Le Numéro de dossier< est obligatoire"
|
|
data-fv-stringlength="true"
|
|
data-fv-stringlength-max="20"
|
|
data-fv-stringlength-message="20 caractères maximum" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="demande_le">Date de demande</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group date" id="demande_le">
|
|
<input class="form-control" type="text" name="demande_le" value="${layout.date2dmy(devis.demande_le)}"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="La Date de damande 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 class="col-xs-4">
|
|
<input class="form-control" type="text" id="demande_log" name="demande_log" value="${devis.demande_log}"
|
|
placeholder="Commentaire (20 car. max.)" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-sm-offset-4 col-sm-8">
|
|
<a href="${url_retour}" class="btn btn-default" role="button">
|
|
<span class="glyphicon glyphicon-chevron-left"></span> Annuler</a>
|
|
<button class="btn btn-primary" type="submit" name="form.submitted" tal:condition="devis.cloture_le == None and devis.accepte_le == None">
|
|
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
|
<a href="/confirm/${no_devis}/leave" class="btn btn-danger" role="button" tal:condition="no_devis != '0' and devis.facture_mt==0">
|
|
<span class="glyphicon glyphicon-remove"></span> Abandon</a>
|
|
<a href="/confirm/${no_devis}/cancel" class="btn btn-warning" role="button" tal:condition="no_devis != '0' and devis.facture_mt==0">
|
|
<span class="glyphicon glyphicon-remove"></span> Refus AEM</a>
|
|
<a href="/confirm/${no_devis}/error" class="btn btn-warning" role="button" tal:condition="no_devis != '0' and devis.facture_mt==0">
|
|
<span class="glyphicon glyphicon-remove"></span> Annulation AEM</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Phase : FORMATION -->
|
|
<div tal:condition="etape >= 2">
|
|
<h4 class="text-primary">2. Formation</h4>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="formation_debut_le">Début du programme prévu le</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group date" id="formation_debut_le">
|
|
<input class="form-control" type="text" name="formation_debut_le" value="${layout.date2dmy(devis.formation_debut_le)}"
|
|
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="formation_fin_le">Fin du programme prévu le</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group date" id="formation_fin_le">
|
|
<input class="form-control" type="text" name="formation_fin_le" value="${layout.date2dmy(devis.formation_fin_le)}"
|
|
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="fin_pec_le">Date de fin PEC</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group date" id="fin_pec_le">
|
|
<input class="form-control" type="text" name="fin_pec_le" value="${layout.date2dmy(devis.fin_pec_le)}"
|
|
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 class="col-xs-4">
|
|
<input class="form-control" type="text" id="validation_log" name="validation_log" value="${devis.validation_log}"
|
|
placeholder="Commentaire (20 car. max.)" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="accepte_le">Date d'acceptation</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group date" id="accepte_le">
|
|
<input class="form-control" type="text" name="accepte_le" value="${layout.date2dmy(devis.accepte_le)}"
|
|
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 class="col-xs-4">
|
|
<input class="form-control" type="text" id="accepte_log" name="accepte_log" value="${devis.accepte_log}"
|
|
placeholder="Commentaire (20 car. max.)" />
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="debut_renseigne_le">Date d'entrée déclarée</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group date" id="debut_renseigne_le">
|
|
<input class="form-control" type="text" name="debut_renseigne_le" value="${layout.date2dmy(devis.debut_renseigne_le)}"
|
|
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 class="col-xs-4">
|
|
<input class="form-control" type="text" id="debut_renseigne_log" name="debut_renseigne_log" value="${devis.debut_renseigne_log}"
|
|
placeholder="Commentaire (20 car. max.)" />
|
|
</div>
|
|
<p class="col-xs-offset-4 col-xs-8 text-danger">Attention : ne pas oublier de renseigner le portail CPF </p>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-sm-offset-4 col-sm-8">
|
|
<button class="btn btn-primary" type="submit" name="form.formation" tal:condition="devis.cloture_le == None and devis.fin_renseigne_le == None">
|
|
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Phase : FACTURATION -->
|
|
<div tal:condition="etape >= 3">
|
|
<h4 class="text-primary">3. Facturation</h4>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="fin_renseigne_le">Date de sortie déclarée</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group date" id="fin_renseigne_le">
|
|
<input class="form-control" type="text" name="fin_renseigne_le" value="${layout.date2dmy(devis.fin_renseigne_le)}"
|
|
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="nb_heures_effectue">Nombre d'heures effectué</label>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="nb_heures_effectue" name="nb_heures_effectue" value="${devis.nb_heures_effectue}"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le nombre d'heures est invalide" />
|
|
</div>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="fin_renseigne_log" name="fin_renseigne_log" value="${devis.fin_renseigne_log}"
|
|
placeholder="Commentaire (20 car. max.)" />
|
|
</div>
|
|
<p class="col-xs-offset-4 col-xs-8 text-danger">Attention : ne pas oublier de renseigner le portail CPF </p>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="facture_mt">Montant facturé</label>
|
|
<div class="col-xs-4">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><i class="glyphicon glyphicon-euro"></i></span>
|
|
<input class="form-control" type="text" id="facture_mt" name="facture_mt" value="${devis.facture_mt}"
|
|
data-fv-notempty="true"
|
|
data-fv-notempty-message="Le montant de PEC est obligatoire"
|
|
data-fv-numeric="true"
|
|
data-fv-numeric-message="Le montant est invalide" />
|
|
</div>
|
|
</div>
|
|
<div class="col-xs-4">
|
|
<input class="form-control" type="text" id="facture_log" name="facture_log" value="${devis.facture_log}"
|
|
placeholder="Commentaire (20 car. max.)" />
|
|
</div>
|
|
<p class="col-xs-offset-4 col-xs-8 text-danger">Attention : ne pas oublier de renseigner le portail CPF </p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" >Numéro facture</label>
|
|
<div class="col-xs-4">
|
|
<p class="form-control-static">${devis.no_facture} <b> du </b>${layout.date2dmy(devis.date_facture)} </p>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="col-sm-offset-4 col-sm-8">
|
|
<button class="btn btn-primary" type="submit" name="form.facturation" tal:condition="devis.cloture_le == None">
|
|
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" tal:condition="devis.cloture_le">
|
|
<label class="control-label col-xs-4" for="cloture_le">Date de clôture</label>
|
|
<div class="col-xs-8">
|
|
<p class="form-control-static">${devis.cloture_le.strftime('%d/%m/%Y')} (${devis.statut})</p>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="control-label col-xs-4" for="cd_prospect">Date de création</label>
|
|
<div class="col-xs-8">
|
|
<p class="form-control-static">${devis.cree_le.strftime('%d/%m/%Y - %H:%M')}</p>
|
|
</div>
|
|
<label class="control-label col-xs-4" for="cd_prospect">Dernière modifcation</label>
|
|
<div class="col-xs-8">
|
|
<p class="form-control-static">${devis.modif_le.strftime('%d/%m/%Y - %H:%M')} par ${devis.cd_uti}</p>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<br />
|
|
<br />
|
|
</div> <!-- row -->
|
|
|
|
<!-- 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() {
|
|
$('#devis_cpf_frm').formValidation();
|
|
// faire une requete pour récuper le montant et nb heures
|
|
$('#type_devis').on('change', function () {
|
|
$.post('/ajax_type_devis',
|
|
{type_devis: $('#type_devis').val()},
|
|
function (data) {
|
|
$('#montant_pec').val(data.montant);
|
|
$('#montant_ht').val(data.montant_ht);
|
|
$('#nb_heures_pec').val(data.nb_heures);
|
|
});
|
|
});
|
|
$('#demande_le').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
}).on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#devis_cpf_frm').formValidation('revalidateField', 'demande_le');
|
|
});
|
|
$('#formation_debut_le').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
}).on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#devis_cpf_frm').formValidation('revalidateField', 'formation_debut_le');
|
|
});
|
|
$('#formation_fin_le').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
}).on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#devis_cpf_frm').formValidation('revalidateField', 'formation_fin_le');
|
|
});
|
|
$('#fin_pec_le').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
}).on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#devis_cpf_frm').formValidation('revalidateField', 'fin_pec_le');
|
|
});
|
|
$('#accepte_le').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
}).on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#devis_cpf_frm').formValidation('revalidateField', 'accepte_le');
|
|
});
|
|
$('#debut_renseigne_le').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
}).on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#devis_cpf_frm').formValidation('revalidateField', 'debut_renseigne_le');
|
|
});
|
|
$('#fin_renseigne_le').datetimepicker({
|
|
format: 'DD-MM-YYYY',
|
|
allowInputToggle: true,
|
|
}).on('dp.change', function(e) {
|
|
// Revalidate the date field
|
|
$('#devis_cpf_frm').formValidation('revalidateField', 'fin_renseigne_le');
|
|
});
|
|
$('form input').on('keypress', function(e) {
|
|
return e.which !== 13;
|
|
});
|
|
});
|
|
</script>
|
|
</div>
|
|
</metal:block>
|