diff --git a/ajax_promoteur.php b/ajax_promoteur.php index 51f0ad9..ca0c1d6 100644 --- a/ajax_promoteur.php +++ b/ajax_promoteur.php @@ -88,7 +88,14 @@ switch($strAction) { $tabRetour = fxUpdateQuantiteTotale($intEpreuve, intval($strQuantiteTotale)); if (($tabRetour['state'] ?? 'error') !== 'success') { - $tabRetour['message'] = afficheTexte('promoteur_bad_qte_update', 0); + if (($tabRetour['error_code'] ?? '') === 'total_below_registrations') { + $tabRetour['message'] = fxBibMsg( + 'bib_v5_qte_total_min', + intval($tabRetour['qte_inscrits'] ?? 0) + ); + } else { + $tabRetour['message'] = afficheTexte('promoteur_bad_qte_update', 0); + } } break; case 'no_equipe': diff --git a/js/v2/bib-assignments.js b/js/v2/bib-assignments.js index 8766b1f..f2c0e7f 100644 --- a/js/v2/bib-assignments.js +++ b/js/v2/bib-assignments.js @@ -2294,6 +2294,12 @@ if (elInscrits) { elInscrits.textContent = row.qte_inscrits; } + let gestionPanel = document.querySelector( + '.epr-gestion-panel[data-epr-id="' + eprId + '"]' + ); + if (gestionPanel && row.qte_inscrits !== undefined) { + gestionPanel.dataset.qteInscrits = row.qte_inscrits; + } if (elCheckin) { elCheckin.textContent = row.qte_checkin; } @@ -2345,6 +2351,15 @@ return; } + let gestionPanel = btn.closest('.epr-gestion-panel'); + let intNbInscriptions = gestionPanel + ? parseInt(gestionPanel.dataset.qteInscrits, 10) || 0 + : 0; + if (intQteTotale < intNbInscriptions) { + alert(bibJsFmt('jsQteTotalMin', intNbInscriptions)); + return; + } + bibLoaderShow(); fetch('/ajax_promoteur.php', { method: 'POST', diff --git a/php/inc_fx_promoteur.php b/php/inc_fx_promoteur.php index 8c7e46d..3ec7a71 100644 --- a/php/inc_fx_promoteur.php +++ b/php/inc_fx_promoteur.php @@ -2741,6 +2741,8 @@ function fxUpdateQuantiteTotale($intEpreuve, $intQuantiteTotale) { $arrQuantites = fxGetQuantites($intEpreuve); $intNbInscriptions = intval($arrQuantites['qte_inscrits'] ?? 0); if ($intQuantiteTotale < $intNbInscriptions) { + $arrRetour['error_code'] = 'total_below_registrations'; + $arrRetour['qte_inscrits'] = $intNbInscriptions; return $arrRetour; } @@ -3893,6 +3895,7 @@ function fxBibModuleJsDataAttrs() { 'range-invalid' => 'bib_v4_js_range_invalid', 'range-invalid-end' => 'bib_v4_js_range_invalid_end', 'range-invalid-qty' => 'bib_v4_js_range_invalid_qty', + 'qte-total-min' => 'bib_v5_qte_total_min', 'batch-progress' => 'bib_v4_js_batch_progress', 'global-no-epr' => 'bib_v4_js_global_no_epr', 'global-no-seq' => 'bib_v4_js_global_no_seq', @@ -4464,7 +4467,7 @@ function renderBibGestionEpreuve($epr_id, $int_eve_id, $strLangue) { ob_start(); ?> -