dolibarr  13.0.2
mod_task_simple.php
1 <?php
2 /* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@inodbox.com>
3  * Copyright (C) 2010 Laurent Destailleur <eldy@users.sourceforge.net>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17  * or see https://www.gnu.org/
18  */
19 
26 require_once DOL_DOCUMENT_ROOT.'/core/modules/project/task/modules_task.php';
27 
28 
33 {
38  public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr'
39 
40  public $prefix = 'TK';
41 
45  public $error = '';
46 
52  public $nom = 'Simple';
53 
57  public $name = 'Simple';
58 
59 
65  public function info()
66  {
67  global $langs;
68  return $langs->trans("SimpleNumRefModelDesc", $this->prefix);
69  }
70 
71 
77  public function getExample()
78  {
79  return $this->prefix."0501-0001";
80  }
81 
82 
89  public function canBeActivated()
90  {
91  global $conf, $langs, $db;
92 
93  $coyymm = ''; $max = '';
94 
95  $posindice = strlen($this->prefix) + 6;
96  $sql = "SELECT MAX(CAST(SUBSTRING(task.ref FROM ".$posindice.") AS SIGNED)) as max";
97  $sql .= " FROM ".MAIN_DB_PREFIX."projet_task AS task, ";
98  $sql .= MAIN_DB_PREFIX."projet AS project WHERE task.fk_projet=project.rowid";
99  $sql .= " AND task.ref LIKE '".$db->escape($this->prefix)."____-%'";
100  $sql .= " AND project.entity = ".$conf->entity;
101  $resql = $db->query($sql);
102  if ($resql)
103  {
104  $row = $db->fetch_row($resql);
105  if ($row) { $coyymm = substr($row[0], 0, 6); $max = $row[0]; }
106  }
107  if (!$coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm))
108  {
109  return true;
110  } else {
111  $langs->load("errors");
112  $this->error = $langs->trans('ErrorNumRefModel', $max);
113  return false;
114  }
115  }
116 
117 
125  public function getNextValue($objsoc, $object)
126  {
127  global $db, $conf;
128 
129  // First, we get the max value
130  $posindice = strlen($this->prefix) + 6;
131  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
132  $sql .= " FROM ".MAIN_DB_PREFIX."projet_task";
133  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
134 
135  $resql = $db->query($sql);
136  if ($resql)
137  {
138  $obj = $db->fetch_object($resql);
139  if ($obj) $max = intval($obj->max);
140  else $max = 0;
141  } else {
142  dol_syslog("mod_task_simple::getNextValue", LOG_DEBUG);
143  return -1;
144  }
145 
146  $date = empty($object->date_c) ?dol_now() : $object->date_c;
147 
148  //$yymm = strftime("%y%m",time());
149  $yymm = strftime("%y%m", $date);
150 
151  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
152  else $num = sprintf("%04s", $max + 1);
153 
154  dol_syslog("mod_task_simple::getNextValue return ".$this->prefix.$yymm."-".$num);
155  return $this->prefix.$yymm."-".$num;
156  }
157 
158 
159  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
167  public function task_get_num($objsoc = 0, $object = '')
168  {
169  return $this->getNextValue($objsoc, $object);
170  }
171 }
Classe mere des modeles de numerotation des references de projets.
info()
Return description of numbering module.
getNextValue($objsoc, $object)
Return next value.
dol_now($mode= 'auto')
Return date for now.
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
getExample()
Return an example of numbering module values.
Class to manage the numbering module Simple for project references.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) if(!empty($conf->don->enabled)&&$user->rights->don->lire) if(!empty($conf->tax->enabled)&&$user->rights->tax->charges->lire) if(!empty($conf->facture->enabled)&&!empty($conf->commande->enabled)&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
Definition: index.php:1232
task_get_num($objsoc=0, $object= '')
Return next reference not yet used as a reference.