From 7c77159e362be6cee86741ff6ea6987a5ea165c2 Mon Sep 17 00:00:00 2001 From: Albin Kester <83301974+stakovicz@users.noreply.github.com> Date: Mon, 10 Feb 2025 21:11:48 +0100 Subject: [PATCH] Pagination factures (#1624) --- htdocs/pages/administration/compta_facture.php | 9 +++++++-- .../administration/compta_facture.html | 18 ++++++++++++++++++ sources/Afup/Comptabilite/Facture.php | 8 +++++++- sources/Afup/Forum/AppelConferencier.php | 2 +- .../Admin/Tresorerie/DevisFactures.feature | 4 ++-- 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/htdocs/pages/administration/compta_facture.php b/htdocs/pages/administration/compta_facture.php index 7c8e91785..59c6353b4 100644 --- a/htdocs/pages/administration/compta_facture.php +++ b/htdocs/pages/administration/compta_facture.php @@ -3,6 +3,7 @@ declare(strict_types=1); // Impossible to access the file itself +use Afup\Site\Comptabilite\Comptabilite; use Afup\Site\Comptabilite\Facture; use Afup\Site\Utils\Logs; use Afup\Site\Utils\Pays; @@ -26,15 +27,19 @@ //$sens_valides = array('asc', 'desc'); $smarty->assign('action', $action); - +$compta = new Comptabilite($bdd); $comptaFact = new Facture($bdd); if ($action == 'lister') { - $ecritures = $comptaFact->obtenirFacture(); + $periodes = $compta->obtenirListPeriode(); + $id_periode = isset($_GET['id_periode']) && $_GET['id_periode'] ? $_GET['id_periode'] : end($periodes)['id']; + $ecritures = $comptaFact->obtenirFacture($id_periode); foreach ($ecritures as &$e) { $e['link'] = urlencode(Utils::cryptFromText($e['id'])); } + $smarty->assign('id_periode', $id_periode); $smarty->assign('ecritures', $ecritures); + $smarty->assign('listPeriode', $periodes); } elseif ($action == 'telecharger_facture') { $comptaFact->genererFacture($_GET['ref']); } elseif ($action == 'envoyer_facture') { diff --git a/htdocs/templates/administration/compta_facture.html b/htdocs/templates/administration/compta_facture.html index a8bbc11ec..af359ba27 100644 --- a/htdocs/templates/administration/compta_facture.html +++ b/htdocs/templates/administration/compta_facture.html @@ -8,6 +8,24 @@

Factures

Il faut obligatoirement passer par la saisie d'un devis.

+
+
+ +
+
+
+ + +
+
+
+
+
+ diff --git a/sources/Afup/Comptabilite/Facture.php b/sources/Afup/Comptabilite/Facture.php index e6a1e47f7..9e3b4d897 100644 --- a/sources/Afup/Comptabilite/Facture.php +++ b/sources/Afup/Comptabilite/Facture.php @@ -73,7 +73,7 @@ public function obtenirDevisDetails($id) return $this->_bdd->obtenirTous($requete); } - public function obtenirFacture() + public function obtenirFacture($idPeriode = null) { $requete = 'SELECT '; $requete .= ' acf.*, sum(quantite * pu) prix '; @@ -85,6 +85,12 @@ public function obtenirFacture() $requete .= ' acfd.idafup_compta_facture = acf.id '; $requete .= 'WHERE '; $requete .= ' numero_facture != "" '; + + if (null !== $idPeriode) { + $requete .= sprintf(' AND acf.date_facture >= (select date_debut from compta_periode where id = %s)', $this->_bdd->echapper($idPeriode)); + $requete .= sprintf(' AND acf.date_facture <= (select date_fin from compta_periode where id = %s)', $this->_bdd->echapper($idPeriode)); + } + $requete .= 'GROUP BY '; $requete .= ' acf.id, date_devis, numero_devis, date_facture, numero_facture, societe, service, adresse, code_postal, ville, id_pays, email, observation, ref_clt1, ref_clt2, ref_clt3, nom, prenom, tel, etat_paiement, date_paiement, devise_facture '; $requete .= 'ORDER BY '; diff --git a/sources/Afup/Forum/AppelConferencier.php b/sources/Afup/Forum/AppelConferencier.php index 1caf91df7..ef066dfb2 100644 --- a/sources/Afup/Forum/AppelConferencier.php +++ b/sources/Afup/Forum/AppelConferencier.php @@ -495,7 +495,7 @@ public function modifierJoindinSession($id, $joindin) $value = $this->_bdd->echapper($joindin); } $requete = 'UPDATE afup_sessions SET '; - $requete .= ' joindin = ' . $this->_bdd->echapper($joindin); + $requete .= ' joindin = ' . $value; $requete .= ' WHERE session_id = ' . (int) $id; return $this->_bdd->executer($requete); diff --git a/tests/behat/features/Admin/Tresorerie/DevisFactures.feature b/tests/behat/features/Admin/Tresorerie/DevisFactures.feature index 7fd980ab0..89a9e0913 100644 --- a/tests/behat/features/Admin/Tresorerie/DevisFactures.feature +++ b/tests/behat/features/Admin/Tresorerie/DevisFactures.feature @@ -90,7 +90,7 @@ Feature: Administration - Trésorerie - Devis/Facture @vat Scenario: Test du PDF de facture avant 2024 Given I am logged in as admin and on the Administration - When I go to "/pages/administration/index.php?page=compta_facture" + When I go to "/pages/administration/index.php?page=compta_facture&id_periode=14" Then the ".content h2" element should contain "Factures" And I should see "Il n'est pas possible de créer directement une facture" When I follow the button of tooltip "Télécharger la facture 2023-01" @@ -112,7 +112,7 @@ Feature: Administration - Trésorerie - Devis/Facture @vat Scenario: Test du PDF de facture après 2024 Given I am logged in as admin and on the Administration - When I go to "/pages/administration/index.php?page=compta_facture" + When I go to "/pages/administration/index.php?page=compta_facture&id_periode=15" Then the ".content h2" element should contain "Factures" And I should see "Il n'est pas possible de créer directement une facture" When I follow the button of tooltip "Télécharger la facture 2024-02"