dolibarr  9.0.0
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 <http://www.gnu.org/licenses/>.
17  * or see http://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  function info()
66  {
67  global $langs;
68  return $langs->trans("SimpleNumRefModelDesc",$this->prefix);
69  }
70 
71 
77  function getExample()
78  {
79  return $this->prefix."0501-0001";
80  }
81 
82 
88  function canBeActivated()
89  {
90  global $conf,$langs,$db;
91 
92  $coyymm=''; $max='';
93 
94  $posindice=8;
95  $sql = "SELECT MAX(CAST(SUBSTRING(task.ref FROM " . $posindice . ") AS SIGNED)) as max";
96  $sql .= " FROM " . MAIN_DB_PREFIX . "projet_task AS task, ";
97  $sql .= MAIN_DB_PREFIX . "projet AS project WHERE task.fk_projet=project.rowid";
98  $sql .= " AND task.ref LIKE '" . $db->escape($this->prefix) . "____-%'";
99  $sql .= " AND project.entity = " . $conf->entity;
100  $resql=$db->query($sql);
101  if ($resql)
102  {
103  $row = $db->fetch_row($resql);
104  if ($row) { $coyymm = substr($row[0],0,6); $max=$row[0]; }
105  }
106  if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$coyymm))
107  {
108  return true;
109  }
110  else
111  {
112  $langs->load("errors");
113  $this->error=$langs->trans('ErrorNumRefModel',$max);
114  return false;
115  }
116  }
117 
118 
126  function getNextValue($objsoc,$object)
127  {
128  global $db,$conf;
129 
130  // D'abord on recupere la valeur max
131  $posindice=8;
132  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
133  $sql.= " FROM ".MAIN_DB_PREFIX."projet_task";
134  $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
135 
136  $resql=$db->query($sql);
137  if ($resql)
138  {
139  $obj = $db->fetch_object($resql);
140  if ($obj) $max = intval($obj->max);
141  else $max=0;
142  }
143  else
144  {
145  dol_syslog("mod_task_simple::getNextValue", LOG_DEBUG);
146  return -1;
147  }
148 
149  $date=empty($object->date_c)?dol_now():$object->date_c;
150 
151  //$yymm = strftime("%y%m",time());
152  $yymm = strftime("%y%m",$date);
153 
154  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
155  else $num = sprintf("%04s",$max+1);
156 
157  dol_syslog("mod_task_simple::getNextValue return ".$this->prefix.$yymm."-".$num);
158  return $this->prefix.$yymm."-".$num;
159  }
160 
161 
162  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps
170  function task_get_num($objsoc=0,$object='')
171  {
172  return $this->getNextValue($objsoc,$object);
173  }
174 }
task_get_num($objsoc=0, $object='')
Return next reference not yet used as a reference.
$version
Dolibarr version of the loaded document string.
Classe mere des modeles de numerotation des references de projets.
if(! empty($conf->facture->enabled) && $user->rights->facture->lire) if(! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) if(! empty($conf->don->enabled) && $user->rights->societe->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) && $user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
Definition: index.php:1053
info()
Return description of numbering module.
getNextValue($objsoc, $object)
Return next value.
canBeActivated()
Test si les numeros deja en vigueur dans la base ne provoquent pas de de conflits qui empechera cette...
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='')
Write log message into outputs.
dol_now($mode='gmt')
Return date for now.