dolibarr  7.0.0-beta
mod_project_simple.php
Go to the documentation of this file.
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/modules_project.php';
27 
28 
33 {
34  var $version='dolibarr'; // 'development', 'experimental', 'dolibarr'
35  var $prefix='PJ';
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(ref FROM ".$posindice.") AS SIGNED)) as max";
77  $sql.= " FROM ".MAIN_DB_PREFIX."projet";
78  $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
79  $sql.= " AND entity = ".$conf->entity;
80  $resql=$db->query($sql);
81  if ($resql)
82  {
83  $row = $db->fetch_row($resql);
84  if ($row) { $coyymm = substr($row[0],0,6); $max=$row[0]; }
85  }
86  if (! $coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$coyymm))
87  {
88  return true;
89  }
90  else
91  {
92  $langs->load("errors");
93  $this->error=$langs->trans('ErrorNumRefModel',$max);
94  return false;
95  }
96  }
97 
98 
106  function getNextValue($objsoc,$project)
107  {
108  global $db,$conf;
109 
110  // D'abord on recupere la valeur max
111  $posindice=8;
112  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
113  $sql.= " FROM ".MAIN_DB_PREFIX."projet";
114  $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
115  $sql.= " AND entity = ".$conf->entity;
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_project_simple::getNextValue", LOG_DEBUG);
127  return -1;
128  }
129 
130  $date=empty($project->date_c)?dol_now():$project->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_project_simple::getNextValue return ".$this->prefix.$yymm."-".$num);
139  return $this->prefix.$yymm."-".$num;
140  }
141 
142 
150  function project_get_num($objsoc=0,$project='')
151  {
152  return $this->getNextValue($objsoc,$project);
153  }
154 }
155 
getNextValue($objsoc, $project)
Return next value.
Class to manage the numbering module Simple for project references.
getExample()
Return an example of numbering module values.
info()
Return description of numbering module.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='')
Write log message into outputs.
Classe mere des modeles de numerotation des references de projets.
canBeActivated()
Test si les numeros deja en vigueur dans la base ne provoquent pas de de conflits qui empechera cette...
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
project_get_num($objsoc=0, $project='')
Return next reference not yet used as a reference.