forked from Evarisk/dolicar
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e52c08b
commit 7ae3d33
Showing
2 changed files
with
644 additions
and
809 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,5 @@ | ||
<?php | ||
/* Copyright (C) 2005-2010 Laurent Destailleur <[email protected]> | ||
* Copyright (C) 2005-2009 Regis Houssin <[email protected]> | ||
/* Copyright (C) 2022-2024 EVARISK <[email protected]> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
|
@@ -14,148 +13,29 @@ | |
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
* or see https://www.gnu.org/ | ||
*/ | ||
|
||
/** | ||
* \file htdocs/core/modules/dolicar/mod_registrationcertificatefr_standard.php | ||
* \ingroup dolicar | ||
* \brief File of class to manage RegistrationCertificateFr numbering rules standard | ||
* \file core/modules/dolicar/mod_registrationcertificatefr_standard.php | ||
* \ingroup dolicar | ||
* \brief File of class to manage mod_registrationcertificatefr_standard numbering rules standard | ||
*/ | ||
require_once __DIR__ . '/../../../core/modules/dolicar/modules_registrationcertificatefr.php'); | ||
|
||
// Load Saturne libraries | ||
require_once __DIR__ . '/../../../../saturne/core/modules/saturne/modules_saturne.php'; | ||
|
||
/** | ||
* Class to manage customer order numbering rules standard | ||
* Class to manage customer order numbering rules standard | ||
*/ | ||
class mod_registrationcertificatefr_standard extends ModeleNumRefRegistrationCertificateFr | ||
class mod_registrationcertificatefr_standard extends ModeleNumRefSaturne | ||
{ | ||
/** | ||
* Dolibarr version of the loaded document | ||
* @var string | ||
*/ | ||
public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' | ||
|
||
public $prefix = 'RCF'; | ||
|
||
/** | ||
* @var string Error code (or message) | ||
*/ | ||
public $error = ''; | ||
|
||
/** | ||
* @var string name | ||
*/ | ||
public $name = 'standard'; | ||
|
||
|
||
/** | ||
* Return description of numbering module | ||
* | ||
* @return string Text with description | ||
*/ | ||
public function info() | ||
{ | ||
global $langs; | ||
return $langs->trans("SimpleNumRefModelDesc", $this->prefix); | ||
} | ||
|
||
|
||
/** | ||
* Return an example of numbering | ||
* | ||
* @return string Example | ||
*/ | ||
public function getExample() | ||
{ | ||
return $this->prefix."0501-0001"; | ||
} | ||
|
||
|
||
/** | ||
* Checks if the numbers already in the database do not | ||
* cause conflicts that would prevent this numbering working. | ||
* | ||
* @param Object $object Object we need next value for | ||
* @return boolean false if conflict, true if ok | ||
*/ | ||
public function canBeActivated($object) | ||
{ | ||
global $conf, $langs, $db; | ||
|
||
$coyymm = ''; $max = ''; | ||
|
||
$posindice = strlen($this->prefix) + 6; | ||
$sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; | ||
$sql .= " FROM ".MAIN_DB_PREFIX."dolicar_registrationcertificatefr"; | ||
$sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; | ||
if ($object->ismultientitymanaged == 1) { | ||
$sql .= " AND entity = ".$conf->entity; | ||
} elseif ($object->ismultientitymanaged == 2) { | ||
// TODO | ||
} | ||
|
||
$resql = $db->query($sql); | ||
if ($resql) { | ||
$row = $db->fetch_row($resql); | ||
if ($row) { | ||
$coyymm = substr($row[0], 0, 6); $max = $row[0]; | ||
} | ||
} | ||
if ($coyymm && !preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) { | ||
$langs->load("errors"); | ||
$this->error = $langs->trans('ErrorNumRefModel', $max); | ||
return false; | ||
} | ||
|
||
return true; | ||
} | ||
|
||
/** | ||
* Return next free value | ||
* | ||
* @param Object $object Object we need next value for | ||
* @return string Value if KO, <0 if KO | ||
*/ | ||
public function getNextValue($object) | ||
{ | ||
global $db, $conf; | ||
|
||
// first we get the max value | ||
$posindice = strlen($this->prefix) + 6; | ||
$sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; | ||
$sql .= " FROM ".MAIN_DB_PREFIX."dolicar_registrationcertificatefr"; | ||
$sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'"; | ||
if ($object->ismultientitymanaged == 1) { | ||
$sql .= " AND entity = ".$conf->entity; | ||
} elseif ($object->ismultientitymanaged == 2) { | ||
// TODO | ||
} | ||
|
||
$resql = $db->query($sql); | ||
if ($resql) { | ||
$obj = $db->fetch_object($resql); | ||
if ($obj) { | ||
$max = intval($obj->max); | ||
} else { | ||
$max = 0; | ||
} | ||
} else { | ||
dol_syslog("mod_registrationcertificatefr_standard::getNextValue", LOG_DEBUG); | ||
return -1; | ||
} | ||
|
||
//$date=time(); | ||
$date = $object->date_creation; | ||
$yymm = strftime("%y%m", $date); | ||
|
||
if ($max >= (pow(10, 4) - 1)) { | ||
$num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is | ||
} else { | ||
$num = sprintf("%04s", $max + 1); | ||
} | ||
|
||
dol_syslog("mod_registrationcertificatefr_standard::getNextValue return ".$this->prefix.$yymm."-".$num); | ||
return $this->prefix.$yymm."-".$num; | ||
} | ||
/** | ||
* @var string Numbering module ref prefix | ||
*/ | ||
public string $prefix = 'RCF'; | ||
|
||
/** | ||
* @var string Name | ||
*/ | ||
public string $name = 'Albiorix'; | ||
} |
Oops, something went wrong.