From c2758530d460cdf6bf62d0990b382338fc6ede92 Mon Sep 17 00:00:00 2001 From: Tiavina Date: Tue, 31 Dec 2024 15:46:14 +0300 Subject: [PATCH] generate facture number when facture batch devis --- gestion/lib/Db/Bdd.php | 35 +++++++++++++++++++---------- gestion/lib/Helpers/DateHelpers.php | 6 +++++ 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/gestion/lib/Db/Bdd.php b/gestion/lib/Db/Bdd.php index 8689dbf..f8e6b4a 100644 --- a/gestion/lib/Db/Bdd.php +++ b/gestion/lib/Db/Bdd.php @@ -982,9 +982,9 @@ class Bdd { } $placeholders = implode(',', array_fill(0, count($devisListId), '?')); $this->logger->debug('Placeholders : ' . $placeholders); - $sql = "SELECT id as id - FROM ".$this->tableprefix."devis - WHERE id IN ($placeholders) AND mentions != ?"; + $sql = "SELECT devis.id as id,devis.date as devis_date + FROM ".$this->tableprefix."devis as devis + WHERE devis.id IN ($placeholders) AND mentions != ?"; $this->logger->debug('SQL : ' . $sql); $result = $this->execSQLNoJsonReturn($sql,array_merge($devisListId, [$mentionToNotInclude])); @@ -998,7 +998,7 @@ class Bdd { $devisIdListFiltered = $this->getDevisIdListFilteredByMentionAndDevisListId($mentionToNotInclude,$devisIdArray); $factureIdsGenerated = []; foreach($devisIdListFiltered as $devis){ - $factureId = $this->insertFactureByDevisId($idNextCloud,devisId: $devis['id']); + $factureId = $this->insertFactureByDevisId($idNextCloud,$devis['id'],$devis['devis_date']); $factureIdsGenerated[] = $factureId; } return $factureIdsGenerated; @@ -1007,21 +1007,32 @@ class Bdd { /** * Insert invoice with a devis */ - public function insertFactureByDevisId($idNextcloud,$devisId){ + public function insertFactureByDevisId($idNextcloud,$devisId,$devisDate = null){ + + $devisDatetime = new Datetime(); + if($devisDate != null){ + $devisDatetime = new Datetime($devisDate); + } + + $factureDate = $devisDatetime->format('Y-m-d'); + $lastDay = DateHelpers::GetLastDayOfTheMonthOfADate($devisDatetime); + $lastDay = $lastDay->format('Y-m-d'); + $factureNumber = $this->getFactureNumberByDate($devisDatetime); + $fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($devisDatetime,$factureNumber,"FAC"); $last = 0; $last = $this->lastNumFacture($idNextcloud); - $sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`) VALUES (?,?,?,NOW(),?,?,?,?);"; - $date_temp = new DateTime(); - $date = $date_temp->format('Y-m-d'); - $datesplit = explode('-', $date); + $sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`,`facture_number`) VALUES (?,?,?,?,?,?,?,?,?);"; $this->execSQLNoData($sql, array( - $date , + $factureDate , $idNextcloud, - "ETS".$datesplit[0]."/".$datesplit[1]."/".$last+1, + $fullFactureNumber, + $lastDay, "Comptant", $devisId, $last+1, - "Ajouter un lieu")); + "Ajouter un lieu", + $factureNumber) + ); $factureId = $this->getFactureIdByDevisId($devisId); //update devis status diff --git a/gestion/lib/Helpers/DateHelpers.php b/gestion/lib/Helpers/DateHelpers.php index 49771ee..1a9f379 100644 --- a/gestion/lib/Helpers/DateHelpers.php +++ b/gestion/lib/Helpers/DateHelpers.php @@ -40,4 +40,10 @@ class DateHelpers return $devisNumber; } + public static function GetLastDayOfTheMonthOfADate($datetime){ + $datetime->modify('last day of this month'); + $lastDay = $datetime; + return $lastDay; + } + }