feat(v2.0.4): Corrections diverses et tri des tableaux devis

- Correction affichage email contact dans SAP (models/msap.php)
- Ajout fonctionnalité tri des tableaux devis (jsap.js, jdevis.js)
- Améliorations diverses vues devis et SAP
- Mise à jour contrôleurs et modèles export

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-05 10:32:19 +01:00
parent f6c5e96534
commit e96ad7a244
12 changed files with 1348 additions and 320 deletions

View File

@@ -16,6 +16,16 @@ ob_start();
<div id="vb-buttons" class="mb-1">
<button class="btn btn-default" id="btnDevisArchives" title="Voir les devis archivés"><i class="fa fa-stack-overflow fa-lg"></i> Devis archivés</button>
<button class="btn btn-success" id="btnCreateDevis" title="Créer un nouveau devis"><i class="fa fa-plus fa-lg"></i> Créer un devis</button>
<div class="row">
<div class="col-md-9">
<div class="input-group mt-1">
<input type="text" class="form-control" id="searchDevis" placeholder="Rechercher un devis par le nom du client, du contact, ville, opportunité..." maxlength="30">
<span class="input-group-addon">
<i class="fa fa-times clickable" id="btnResetSearch" style="display:none;"></i>
</span>
</div>
</div>
</div>
</div>
<?php
if ($aModel["last_devis"] > 0) {
@@ -87,21 +97,23 @@ ob_start();
echo '<div class="border cm-scrollbar cm-table-w-scroll table-responsive table-800">';
echo '<table class="table table-responsive table-bordered table-fixed" id="tblDos' . $iDos . '">';
echo '<thead><tr>';
echo '<th class="header" scope="col" width="5%">#</th>';
echo '<th class="header" scope="col" width="10%">Demande</th>';
echo '<th class="header clickable" scope="col" width="5%" data-sortable="true" data-sort-type="number" data-column-index="0">#</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="date" data-column-index="1">Demande</th>';
$colIndex = 2;
if (($fkRole == 2 && $iDos == 2) || ($fkRole == 1 && $iDos == 1)) {
// C'est un DV et sur le dossier Encours de validation DV
// Ou le Dir-CO sur le dossier de validation DIR-CO
// on affiche la colonne du nom du RR pour qu'il puisse savoir qui a fait la demande
echo '<th class="header" scope="col" width="15%">RR</th>';
echo '<th class="header clickable" scope="col" width="15%" data-sortable="true" data-sort-type="text" data-column-index="' . $colIndex . '">RR</th>';
$colIndex++;
}
echo '<th class="header" scope="col" width="10%">Opport.</th>';
echo '<th class="header" scope="col" width="5%">CP</th>';
echo '<th class="header" scope="col" width="10%">Ville</th>';
echo '<th class="header" scope="col" width="15%">Client</th>';
echo '<th class="header" scope="col" width="10%">Marché</th>';
echo '<th class="header" scope="col" width="10%">Total HT</th>';
echo '<th class="header" scope="col" width="10%">Marge Totale</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="text" data-column-index="' . $colIndex . '">Opport.</th>';
echo '<th class="header clickable" scope="col" width="5%" data-sortable="true" data-sort-type="number" data-column-index="' . ($colIndex + 1) . '">CP</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="text" data-column-index="' . ($colIndex + 2) . '">Ville</th>';
echo '<th class="header clickable" scope="col" width="15%" data-sortable="true" data-sort-type="text" data-column-index="' . ($colIndex + 3) . '">Client</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="text" data-column-index="' . ($colIndex + 4) . '">Marché</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="number" data-column-index="' . ($colIndex + 5) . '">Total HT</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="number" data-column-index="' . ($colIndex + 6) . '">Marge Totale</th>';
echo '<th class="header" scope="col" width="12%"></th>';
echo '</tr></thead>';
echo '<tbody id="tblBodyDos' . $iDos . '">';
@@ -203,14 +215,14 @@ ob_start();
echo '<div class="border cm-scrollbar cm-table-w-scroll table-responsive table-800">';
echo '<table class="table table-responsive table-bordered table-fixed" id="tblDosArch' . $iDos . '">';
echo '<thead><tr>';
echo '<th class="header" scope="col" width="5%">#</th>';
echo '<th class="header" scope="col" width="10%">Demande</th>';
echo '<th class="header" scope="col" width="10%">Opport.</th>';
echo '<th class="header" scope="col" width="10%">Ville</th>';
echo '<th class="header" scope="col" width="20%">Client</th>';
echo '<th class="header" scope="col" width="10%">Marché</th>';
echo '<th class="header" scope="col" width="10%">Total HT</th>';
echo '<th class="header" scope="col" width="10%">Marge Totale</th>';
echo '<th class="header clickable" scope="col" width="5%" data-sortable="true" data-sort-type="number" data-column-index="0">#</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="date" data-column-index="1">Demande</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="text" data-column-index="2">Opport.</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="text" data-column-index="3">Ville</th>';
echo '<th class="header clickable" scope="col" width="20%" data-sortable="true" data-sort-type="text" data-column-index="4">Client</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="text" data-column-index="5">Marché</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="number" data-column-index="6">Total HT</th>';
echo '<th class="header clickable" scope="col" width="10%" data-sortable="true" data-sort-type="number" data-column-index="7">Marge Totale</th>';
echo '<th class="header" scope="col" width="10%"></th>';
echo '</tr></thead>';
echo '<tbody id="tblBodyDosArch' . $iDos . '">';