24 require_once DOL_DOCUMENT_ROOT.
'/core/modules/expensereport/modules_expensereport.php';
35 public $version =
'dolibarr';
37 public $prefix =
'ER';
54 public $name =
'Jade';
65 return $langs->trans(
"SimpleNumRefModelDesc", $this->prefix);
76 return $this->prefix.
"0501-0001";
88 global $conf, $langs, $db;
93 $posindice = strlen($this->prefix) + 6;
94 $sql =
"SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.
") AS SIGNED)) as max";
95 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport";
96 $sql .=
" WHERE ref LIKE '".$db->escape($this->prefix).
"____-%'";
97 $sql .=
" AND entity = ".$conf->entity;
101 $row = $db->fetch_row(
$resql);
103 $coyymm = substr($row[0], 0, 6);
107 if ($coyymm && !preg_match(
'/'.$this->prefix.
'[0-9][0-9][0-9][0-9]/i', $coyymm)) {
108 $langs->load(
"errors");
109 $this->error = $langs->trans(
'ErrorNumRefModel', $max);
127 if (!empty($conf->global->EXPENSEREPORT_USE_OLD_NUMBERING_RULE)) {
129 if ($object->fk_user_author > 0) {
130 $fuser =
new User($db);
131 $fuser->fetch($object->fk_user_author);
134 $expld_car = (empty($conf->global->NDF_EXPLODE_CHAR)) ?
"-" : $conf->global->NDF_EXPLODE_CHAR;
135 $num_car = (empty($conf->global->NDF_NUM_CAR_REF)) ?
"5" : $conf->global->NDF_NUM_CAR_REF;
137 $sql =
'SELECT MAX(de.ref_number_int) as max';
138 $sql .=
' FROM '.MAIN_DB_PREFIX.
'expensereport de';
140 $result = $db->query($sql);
142 if ($db->num_rows($result) > 0) {
143 $objp = $db->fetch_object($result);
144 $newref = $objp->max;
146 while (strlen($newref) < $num_car) {
147 $newref =
"0".$newref;
151 while (strlen($newref) < $num_car) {
152 $newref =
"0".$newref;
156 $ref_number_int = ($newref + 1) - 1;
161 if (!empty($conf->global->EXPENSE_REPORT_PREFIX)) {
162 $prefix = $conf->global->EXPENSE_REPORT_PREFIX;
164 $newref = str_replace(
' ',
'_', $user_author_infos).$expld_car.$prefix.$newref.$expld_car.dol_print_date($object->date_debut,
'%y%m%d');
166 $sqlbis =
'UPDATE '.MAIN_DB_PREFIX.
'expensereport SET ref_number_int = '.((int) $ref_number_int).
' WHERE rowid = '.((int) $object->id);
167 $resqlbis = $db->query($sqlbis);
173 dol_syslog(
"mod_expensereport_jade::getNextValue return ".$newref);
178 $posindice = strlen($this->prefix) + 6;
179 $sql =
"SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.
") AS SIGNED)) as max";
180 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport";
181 $sql .=
" WHERE ref LIKE '".$db->escape($this->prefix).
"____-%'";
182 $sql .=
" AND entity = ".$conf->entity;
184 $resql = $db->query($sql);
186 $obj = $db->fetch_object(
$resql);
188 $max = intval($obj->max);
193 dol_syslog(
"mod_expensereport_jade::getNextValue", LOG_DEBUG);
197 $date = $object->date_valid;
199 $this->error =
'Date valid not defined';
203 $yymm = strftime(
"%y%m", $date);
205 if ($max >= (pow(10, 4) - 1)) {
208 $num = sprintf(
"%04s", $max + 1);
211 dol_syslog(
"mod_expensereport_jade::getNextValue return ".$this->prefix.$yymm.
"-".$num);
212 return $this->prefix.$yymm.
"-".$num;
Parent class for numbering masks of expense reports.
Class to manage Dolibarr users.
Class to manage expensereport numbering rules Jade.
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
info()
Return description of numbering model.
getExample()
Returns an example of numbering.
getNextValue($object)
Return next free value.
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') &&!empty($user->rights->don->lire)) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dolGetFirstLastname($firstname, $lastname, $nameorder=-1)
Return firstname and lastname in correct order.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.