Merge branch 'features/feature-devis-number' into staging

This commit is contained in:
Tiavina 2024-12-31 14:43:24 +03:00
commit b6b2cb1310
25 changed files with 128 additions and 26 deletions

View File

@ -115,6 +115,11 @@ return [
['name' => 'page#saveDocumentRecap', 'url' => '/saveDocumentRecap', 'verb' => 'POST'],
['name' => 'page#saveNewPDF', 'url' => '/saveNewPDF', 'verb' => 'POST'],
['name' => 'admin#backup', 'url' => '/backup', 'verb' => 'GET']
['name' => 'admin#backup', 'url' => '/backup', 'verb' => 'GET'],
//SQL
['name' => 'page#addDevisNumberColumn', 'url' => '/addDevisNumberColumn', 'verb' => 'POST'],
]
];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2648,4 +2648,19 @@ class PageController extends Controller {
catch(\OCP\Files\NotFoundException $e) { }
}
/**
* @NoAdminRequired
* @NoCSRFRequired
*
*/
public function addDevisNumberColumn(){
try{
$this->myDb->addNumberColumnOnFactureAndDevis();
return true;
}
catch(\OCP\Files\NotFoundException $e) { }
}
}

View File

@ -204,7 +204,8 @@ class Bdd {
.$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, ".$this->tableprefix."thanato.id as tid, "
.$this->tableprefix."devis.num, ".$this->tableprefix."devis.date, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.mentions, "
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,".$this->tableprefix."devis.id_lieu, "
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt, "
.$this->tableprefix."devis.devis_full_number as devis_full_number
FROM (".$this->tableprefix."devis
LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id
LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id
@ -839,16 +840,40 @@ class Bdd {
return true;
}
private function getLastDevisNumberByMonthAndYear($month,$year){
$sql = "SELECT
max(devis.devis_number) as LAST_DEVIS_NUMBER, devis.date FROM "
. $this->tableprefix."devis as devis
WHERE YEAR(devis.date) = ? AND
MONTH(devis.date) = ?;";
$res = $this->execSQLNoJsonReturn($sql,array($year,$month));
$lastNumber = 0;
if(!empty($res)){
$lastNumber = $res[0]['LAST_DEVIS_NUMBER'];
}
return $lastNumber;
}
public function insertDevisFromVCalendarAndReturnId($thanatoId,$clientId,$locationId,$defuntId,$calendarUuid = self::DEFAULT_CALENDAR_UUID_FOR_DEVIS,$date = null){
if($date == null){
$date = new Datetime();
$date = $date->format('Y-m-d');
$dateTime = new Datetime();
$date = $dateTime->format('Y-m-d');
}
else{
$dateTime = new DateTime($date);
}
$idNextcloud = "admin";
$last=0;
$last = $this->lastinsertid("devis", "admin") + 1;
$dateMonth = $dateTime->format('m');
$dateYear = $dateTime->format('Y');
$devisLastNumber = $this->getLastDevisNumberByMonthAndYear($dateMonth,$dateYear);
$devisNumber = $devisLastNumber + 1;
$devisFullNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($dateTime,$devisNumber,'DEV');
$sql = "INSERT INTO `".$this->tableprefix."devis` ( `date`,
`id_nextcloud`,
`num`,
@ -859,9 +884,11 @@ class Bdd {
`id_lieu`,
`mentions`,
`comment`,
`user_id`
`user_id`,
`devis_number`,
`devis_full_number`
)
VALUES (?,?,?,?,?,?,?,?,?,?,?);";
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?);";
$this->execSQLNoData($sql, array(
$date,
$idNextcloud,
@ -873,7 +900,11 @@ class Bdd {
$locationId,
$this->l->t('Mention'),
$this->l->t('Comment'),
$last));
$last,
$devisNumber,
$devisFullNumber
)
);
return $this->getLastDevisIdFromVCalendarProperty($thanatoId,$clientId,$locationId,$defuntId,$calendarUuid);
}
@ -2206,4 +2237,44 @@ class Bdd {
return $articleIds;
}
public function addNumberColumnOnFactureAndDevis(){
$sql = "ALTER TABLE ". $this->tableprefix."devis
ADD devis_number INT DEFAULT 1;" ;
$this->execSQLNoJsonReturn(
$sql,
[]);
$sql = "ALTER TABLE ". $this->tableprefix."devis
ADD devis_full_number VARCHAR(255);" ;
$this->execSQLNoJsonReturn(
$sql,
[]);
$sql = "UPDATE ".$this->tableprefix."devis as devis
SET devis.devis_full_number = CONCAT('DEV', YEAR(devis.date) % 100, LPAD(MONTH(devis.date), 2, '0'), LPAD(devis.devis_number, 2, '0'));";
$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;
}
}

View File

@ -32,4 +32,12 @@ class DateHelpers
return $formattedDate;
}
public static function GetFullFactureOrDevisNumberByDate($date,$devisNumber,$prefix){
$year = $date->format('y');
$month = $date->format('m');
$devisNumber = str_pad($devisNumber, 2, '0', STR_PAD_LEFT);
$devisNumber = $prefix . $year . $month . $devisNumber;
return $devisNumber;
}
}

View File

@ -42,6 +42,7 @@ export class Devis {
this.lieu = ((myresp.lieu == null || myresp.lieu.length === 0) ? '-' : myresp.lieu);
this.mentions = ((myresp.mentions == null || myresp.mentions.length === 0) ? '-' : myresp.mentions);
this.baseUrl = generateUrl(`/apps/gestion/devis/${this.id}/show`);
this.devisFullNumber = ((myresp.devis_full_number != null && myresp.mentions.devis_full_number != 0) ? myresp.devis_full_number : '-');
}
/**undefined
@ -53,6 +54,7 @@ export class Devis {
// '<div><div class="'+signe_prop+'">' + this.user_id + '</div></div>',
'<input class="devisToFacture" data-id= '+ this.user_id + ' type="checkbox" name="devisToFacture" value="' + this.id + '"/>',
'<div>' + this.user_id + '</div>',
'<div>' + this.devisFullNumber + '</div>',
'<input style="margin:0;padding:0;" class="inputDate" type="date" value=' + this.date + ' data-table="devis" data-column="date" data-id="' + this.id + '"/>',
// '<div class="editable" data-table="devis" data-column="num" data-id="' + this.id + '" style="display:inline">' + this.num + '</div>',
'<div class="loadSelect_listdefunt" data-table="devis" data-column="id_defunt" data-id="' + this.id + '" data-current="' + this.id_defunt + '">'+ this.id_defunt + ' (' + this.nom_defunt + ')</div>',

View File

@ -34,6 +34,7 @@
<tr>
<th><?php p($l->t('A facturer'));?></th>
<th><?php p($l->t('ID'));?></th>
<th><?php p($l->t('Num'));?></th>
<th><?php p($l->t('Quote date'));?></th>
<th>Défunt</th>
<th><?php p($l->t('Customer quote'));?></th>