generate facture number when facture batch devis

This commit is contained in:
Tiavina 2024-12-31 15:46:14 +03:00
parent 068f915fc0
commit c2758530d4
2 changed files with 29 additions and 12 deletions

View File

@ -982,9 +982,9 @@ class Bdd {
} }
$placeholders = implode(',', array_fill(0, count($devisListId), '?')); $placeholders = implode(',', array_fill(0, count($devisListId), '?'));
$this->logger->debug('Placeholders : ' . $placeholders); $this->logger->debug('Placeholders : ' . $placeholders);
$sql = "SELECT id as id $sql = "SELECT devis.id as id,devis.date as devis_date
FROM ".$this->tableprefix."devis FROM ".$this->tableprefix."devis as devis
WHERE id IN ($placeholders) AND mentions != ?"; WHERE devis.id IN ($placeholders) AND mentions != ?";
$this->logger->debug('SQL : ' . $sql); $this->logger->debug('SQL : ' . $sql);
$result = $this->execSQLNoJsonReturn($sql,array_merge($devisListId, [$mentionToNotInclude])); $result = $this->execSQLNoJsonReturn($sql,array_merge($devisListId, [$mentionToNotInclude]));
@ -998,7 +998,7 @@ class Bdd {
$devisIdListFiltered = $this->getDevisIdListFilteredByMentionAndDevisListId($mentionToNotInclude,$devisIdArray); $devisIdListFiltered = $this->getDevisIdListFilteredByMentionAndDevisListId($mentionToNotInclude,$devisIdArray);
$factureIdsGenerated = []; $factureIdsGenerated = [];
foreach($devisIdListFiltered as $devis){ foreach($devisIdListFiltered as $devis){
$factureId = $this->insertFactureByDevisId($idNextCloud,devisId: $devis['id']); $factureId = $this->insertFactureByDevisId($idNextCloud,$devis['id'],$devis['devis_date']);
$factureIdsGenerated[] = $factureId; $factureIdsGenerated[] = $factureId;
} }
return $factureIdsGenerated; return $factureIdsGenerated;
@ -1007,21 +1007,32 @@ class Bdd {
/** /**
* Insert invoice with a devis * 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 = 0;
$last = $this->lastNumFacture($idNextcloud); $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(),?,?,?,?);"; $sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`,`facture_number`) VALUES (?,?,?,?,?,?,?,?,?);";
$date_temp = new DateTime();
$date = $date_temp->format('Y-m-d');
$datesplit = explode('-', $date);
$this->execSQLNoData($sql, array( $this->execSQLNoData($sql, array(
$date , $factureDate ,
$idNextcloud, $idNextcloud,
"ETS".$datesplit[0]."/".$datesplit[1]."/".$last+1, $fullFactureNumber,
$lastDay,
"Comptant", "Comptant",
$devisId, $devisId,
$last+1, $last+1,
"Ajouter un lieu")); "Ajouter un lieu",
$factureNumber)
);
$factureId = $this->getFactureIdByDevisId($devisId); $factureId = $this->getFactureIdByDevisId($devisId);
//update devis status //update devis status

View File

@ -40,4 +40,10 @@ class DateHelpers
return $devisNumber; return $devisNumber;
} }
public static function GetLastDayOfTheMonthOfADate($datetime){
$datetime->modify('last day of this month');
$lastDay = $datetime;
return $lastDay;
}
} }