26require_once DOL_DOCUMENT_ROOT.
'/core/modules/member/modules_member.class.php';
38 public $version =
'dolibarr';
45 public $prefix =
'MEM';
55 public $name =
'Advanced';
60 public $code_auto = 1;
70 return $langs->trans(
"AdvancedNumRefModelDesc", $this->prefix);
81 return $this->prefix.
"2301-0001";
93 global $conf, $langs, $db;
98 $posindice = strlen($this->prefix) + 6;
99 $sql =
"SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.
") AS SIGNED)) as max";
100 $sql .=
" FROM ".MAIN_DB_PREFIX.
"adherent";
101 $sql .=
" WHERE ref LIKE '".$db->escape($this->prefix).
"____-%'";
102 $sql .=
" AND entity = ".$conf->entity;
103 $resql = $db->query($sql);
105 $row = $db->fetch_row($resql);
107 $coyymm = substr($row[0], 0, 6);
111 if (!$coyymm || preg_match(
'/'.$this->prefix.
'[0-9][0-9][0-9][0-9]/i', $coyymm)) {
114 $langs->load(
"errors");
115 $this->error = $langs->trans(
'ErrorNumRefModel', $max);
133 $posindice = strlen($this->prefix) + 6;
134 $sql =
"SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.
") AS SIGNED)) as max";
135 $sql .=
" FROM ".MAIN_DB_PREFIX.
"adherent";
136 $sql .=
" WHERE ref LIKE '".$db->escape($this->prefix).
"____-%'";
137 $sql .=
" AND entity = ".$conf->entity;
139 $resql = $db->query($sql);
141 $obj = $db->fetch_object($resql);
143 $max = intval($obj->max);
148 dol_syslog(
"mod_member_advanced::getNextValue", LOG_DEBUG);
152 $date = empty($object->datec) ?
dol_now() : $object->datec;
156 if ($max >= (pow(10, 4) - 1)) {
159 $num = sprintf(
"%04s", $max + 1);
162 dol_syslog(
"mod_member_advanced::getNextValue return ".$this->prefix.$yymm.
"-".$num, LOG_INFO);
163 return $this->prefix.$yymm.
"-".$num;
Classe mere des modeles de numerotation des references de members.
Class to manage the numbering module Advanced for member references.
info()
Return description of numbering module.
getExample()
Return an example of numbering module values.
getNextValue($objsoc, $object)
Return next value.
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.