diff --git a/gestion/appinfo/routes.php b/gestion/appinfo/routes.php index 2c7c7d6..3a1fd8f 100644 --- a/gestion/appinfo/routes.php +++ b/gestion/appinfo/routes.php @@ -120,6 +120,7 @@ return [ //SQL ['name' => 'page#addDevisNumberColumn', 'url' => '/addDevisNumberColumn', 'verb' => 'POST'], + ['name' => 'page#addFactureNumberColumn', 'url' => '/addFactureNumberColumn', 'verb' => 'POST'], ] ]; diff --git a/gestion/lib/Controller/PageController.php b/gestion/lib/Controller/PageController.php index e55cdc3..8d466da 100644 --- a/gestion/lib/Controller/PageController.php +++ b/gestion/lib/Controller/PageController.php @@ -1646,6 +1646,22 @@ class PageController extends Controller { $this->generer_document_comptable($datecourant); $this->generer_document_comptable($nouveaudate); } else { + if(strcmp($column, 'date')==0) { + if(strcmp($table, 'facture')){ + $datetime = new Datetime($data); + $factureNumber = $this->myDb->getFactureNumberByDate($datetime); + $this->myDb->gestion_update($table, "facture_number", $factureNumber, $id, $this->idNextcloud); + $factureFullNumber = $this->myDb->getFactureFullNumberByDate($datetime); + $this->myDb->gestion_update($table, "num", $factureFullNumber, $id, $this->idNextcloud); + } + if(strcmp($table, 'devis')){ + $datetime = new Datetime($data); + $devisNumber = $this->myDb->getDevisNumberByDate($datetime); + $this->myDb->gestion_update($table, "devis_number", $devisNumber, $id, $this->idNextcloud); + $devisFullNumber = $this->myDb->getDevisFullNumberByDate($datetime); + $this->myDb->gestion_update($table, "num", $devisFullNumber, $id, $this->idNextcloud); + } + } $result = $this->myDb->gestion_update($table, $column, $data, $id, $this->idNextcloud); // $this->generer_document_comptable($facturecourant->date_paiement); } @@ -2657,7 +2673,22 @@ class PageController extends Controller { public function addDevisNumberColumn(){ try{ - $this->myDb->addNumberColumnOnFactureAndDevis(); + $this->myDb->addNumberColumnOnDevis(); + return true; + } + catch(\OCP\Files\NotFoundException $e) { } + + } + + /** + * @NoAdminRequired + * @NoCSRFRequired + * + */ + + public function addFactureNumberColumn(){ + try{ + $this->myDb->addNumberColumnOnFacture(); return true; } catch(\OCP\Files\NotFoundException $e) { } diff --git a/gestion/lib/Db/Bdd.php b/gestion/lib/Db/Bdd.php index 061046b..8689dbf 100644 --- a/gestion/lib/Db/Bdd.php +++ b/gestion/lib/Db/Bdd.php @@ -961,12 +961,17 @@ class Bdd { $last = 0; $last = $this->lastNumFacture($idNextcloud); $pref = $this->execSQLNoJsonReturn("SELECT * FROM ".$this->tableprefix."configuration WHERE id_nextcloud LIKE ?",array($idNextcloud)); - - $sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`) VALUES (?,?,?,NOW(),?,0,?,?);"; + $sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`,`facture_number`) VALUES (?,?,?,NOW(),?,0,?,?,?);"; $date_temp = new DateTime(); $date = $date_temp->format('Y-m-d'); + $dateMonth = $date_temp->format('m'); + $dateYear = $date_temp->format('Y'); + $factureLastNumber = $this->getLastFactureNumberByMonthAndYear($dateMonth,$dateYear); + $factureNumber = $factureLastNumber + 1; + $factureFullNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($date_temp,$factureNumber,'FAC'); + $datesplit = explode('-', $date); - $this->execSQLNoData($sql, array($date , $idNextcloud, "ETS".$datesplit[0]."/".$datesplit[1]."/".$last+1,"Comptant",$last+1,"Ajouter un lieu")); + $this->execSQLNoData($sql, array($date , $idNextcloud, $factureFullNumber,"Comptant",$last+1,"Ajouter un lieu",$factureNumber)); return $last; } @@ -2237,7 +2242,7 @@ class Bdd { return $articleIds; } - public function addNumberColumnOnFactureAndDevis(){ + public function addNumberColumnOnDevis(){ $sql = "ALTER TABLE ". $this->tableprefix."devis ADD devis_number INT DEFAULT 1;" ; $this->execSQLNoJsonReturn( @@ -2255,26 +2260,66 @@ class Bdd { $this->execSQLNoJsonReturn( $sql, []); - - // $sql = "ALTER TABLE ". $this->tableprefix."facture - // ADD facture_number INT DEFAULT 1;" ; - // $this->execSQLNoJsonReturn( - // $sql, - // []); - - // $sql = "ALTER TABLE ". $this->tableprefix."facture - // ADD facture_full_number VARCHAR(255);" ; - // $this->execSQLNoJsonReturn( - // $sql, - // []); - - // $sql = "UPDATE ".$this->tableprefix."facture as facture - // SET facture.facture_full_number = CONCAT('FAC', YEAR(facture.date) % 100, LPAD(MONTH(facture.date), 2, '0'), LPAD(facture.facture_number, 2, '0'));"; - // $this->execSQLNoJsonReturn( - // $sql, - // []); return true; } + public function addNumberColumnOnFacture(){ + $sql = "ALTER TABLE ". $this->tableprefix."facture + ADD facture_number INT DEFAULT 1;" ; + $this->execSQLNoJsonReturn( + $sql, + []); + + $sql = "UPDATE ".$this->tableprefix."facture as facture + SET facture.num = CONCAT('FAC', YEAR(facture.date) % 100, LPAD(MONTH(facture.date), 2, '0'), LPAD(facture.facture_number, 2, '0'));"; + $this->execSQLNoJsonReturn( + $sql, + []); + + return true; + } + + private function getLastFactureNumberByMonthAndYear($month,$year){ + $sql = "SELECT + max(facture.facture_number) as LAST_FACTURE_NUMBER, facture.date FROM " + . $this->tableprefix."facture as facture + WHERE YEAR(facture.date) = ? AND + MONTH(facture.date) = ?;"; + $res = $this->execSQLNoJsonReturn($sql,array($year,$month)); + $lastNumber = 0; + if(!empty($res)){ + $lastNumber = $res[0]['LAST_FACTURE_NUMBER']; + } + return $lastNumber; + } + + public function getFactureNumberByDate($datetime){ + $month = $datetime->format('m'); + $year = $datetime->format('Y'); + $lastFactureNumber = $this->getLastFactureNumberByMonthAndYear($month,$year); + $factureNumber = $lastFactureNumber + 1; + return $factureNumber; + } + + public function getFactureFullNumberByDate($datetime){ + $factureNumber = $this->getFactureNumberByDate($datetime); + $factureFullNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($datetime,$factureNumber,'FAC'); + return $factureFullNumber; + } + + public function getDevisNumberByDate($datetime){ + $month = $datetime->format('m'); + $year = $datetime->format('Y'); + $lastDevisNumber = $this->getLastDevisNumberByMonthAndYear($month,$year); + $devisNumber = $lastDevisNumber + 1; + return $devisNumber; + } + + public function getDevisFullNumberByDate($datetime){ + $devisNumber = $this->getDevisNumberByDate($datetime); + $devisFullNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($datetime,$devisNumber,'DEV'); + return $devisFullNumber; + } + } \ No newline at end of file