dolibarr  7.0.0-beta
mod_task_simple.php
1 <?php
2 /* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.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 {
34  var $version='dolibarr'; // 'development', 'experimental', 'dolibarr'
35  var $prefix='TK';
36  var $error='';
37  var $nom = "Simple";
38  var $name = "Simple";
39 
40 
46  function info()
47  {
48  global $langs;
49  return $langs->trans("SimpleNumRefModelDesc",$this->prefix);
50  }
51 
52 
58  function getExample()
59  {
60  return $this->prefix."0501-0001";
61  }
62 
63 
69  function canBeActivated()
70  {
71  global $conf,$langs,$db;
72 
73  $coyymm=''; $max='';
74 
75  $posindice=8;
76  $sql = "SELECT MAX(CAST(SUBSTRING(task.ref FROM " . $posindice . ") AS SIGNED)) as max";
77  $sql .= " FROM " . MAIN_DB_PREFIX . "projet_task AS task, ";
78  $sql .= MAIN_DB_PREFIX . "projet AS project WHERE task.fk_projet=project.rowid";
79  $sql .= " AND task.ref LIKE '" . $db->escape($this->prefix) . "____-%'";
80  $sql .= " AND project.entity = " . $conf->entity;
81  $resql=$db->query($sql);
82  if ($resql)
83  {
84  $row = $db->fetch_row($resql);
85  if ($row) { $coyymm = substr($row[0],0,6); $max=$row[0]; }
86  }
87  if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$coyymm))
88  {
89  return true;
90  }
91  else
92  {
93  $langs->load("errors");
94  $this->error=$langs->trans('ErrorNumRefModel',$max);
95  return false;
96  }
97  }
98 
99 
107  function getNextValue($objsoc,$object)
108  {
109  global $db,$conf;
110 
111  // D'abord on recupere la valeur max
112  $posindice=8;
113  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
114  $sql.= " FROM ".MAIN_DB_PREFIX."projet_task";
115  $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
116 
117  $resql=$db->query($sql);
118  if ($resql)
119  {
120  $obj = $db->fetch_object($resql);
121  if ($obj) $max = intval($obj->max);
122  else $max=0;
123  }
124  else
125  {
126  dol_syslog("mod_task_simple::getNextValue", LOG_DEBUG);
127  return -1;
128  }
129 
130  $date=empty($object->date_c)?dol_now():$object->date_c;
131 
132  //$yymm = strftime("%y%m",time());
133  $yymm = strftime("%y%m",$date);
134 
135  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
136  else $num = sprintf("%04s",$max+1);
137 
138  dol_syslog("mod_task_simple::getNextValue return ".$this->prefix.$yymm."-".$num);
139  return $this->prefix.$yymm."-".$num;
140  }
141 
142 
150  function task_get_num($objsoc=0,$object='')
151  {
152  return $this->getNextValue($objsoc,$object);
153  }
154 }
155 
task_get_num($objsoc=0, $object='')
Return next reference not yet used as a reference.
Classe mere des modeles de numerotation des references de projets.
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.
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:1013