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;
Class to manage expensereport numbering rules Jade.
Class to manage Dolibarr users.
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
Parent class for numbering masks of expense reports.
if(isModEnabled('facture')&&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur')&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)&&$user->rights->fournisseur->facture->lire)||(isModEnabled('supplier_invoice')&&$user->rights->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->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
getNextValue($object)
Return next free value.
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
info()
Return description of numbering model.
dolGetFirstLastname($firstname, $lastname, $nameorder=-1)
Return firstname and lastname in correct order.
getExample()
Returns an example of numbering.