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"