dolibarr  9.0.0
mod_propale_marbre.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net>
3  * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
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/propale/modules_propale.php';
27 
28 
33 {
38  public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr'
39 
40  public $prefix='PR';
41 
45  public $error='';
46 
52  public $nom='Marbre';
53 
57  public $name='Marbre';
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 
89  function canBeActivated()
90  {
91  global $conf,$langs,$db;
92 
93  $pryymm=''; $max='';
94 
95  $posindice=8;
96  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
97  $sql.= " FROM ".MAIN_DB_PREFIX."propal";
98  $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
99  $sql.= " AND entity = ".$conf->entity;
100 
101  $resql=$db->query($sql);
102  if ($resql)
103  {
104  $row = $db->fetch_row($resql);
105  if ($row) { $pryymm = substr($row[0],0,6); $max=$row[0]; }
106  }
107 
108  if (! $pryymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$pryymm))
109  {
110  return true;
111  }
112  else
113  {
114  $langs->load("errors");
115  $this->error=$langs->trans('ErrorNumRefModel',$max);
116  return false;
117  }
118  }
119 
127  function getNextValue($objsoc,$propal)
128  {
129  global $db,$conf;
130 
131  // D'abord on recupere la valeur max
132  $posindice=8;
133  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL
134  $sql.= " FROM ".MAIN_DB_PREFIX."propal";
135  $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
136  $sql.= " AND entity IN (".getEntity('proposalnumber', 1, $propal).")";
137 
138  $resql=$db->query($sql);
139  if ($resql)
140  {
141  $obj = $db->fetch_object($resql);
142  if ($obj) $max = intval($obj->max);
143  else $max=0;
144  }
145  else
146  {
147  dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG);
148  return -1;
149  }
150 
151  $date = 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(get_class($this)."::getNextValue return ".$this->prefix.$yymm."-".$num);
158  return $this->prefix.$yymm."-".$num;
159  }
160 
168  function getNumRef($objsoc,$objforref)
169  {
170  return $this->getNextValue($objsoc,$objforref);
171  }
172 }
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
getNextValue($objsoc, $propal)
Return next value.
Class to manage customer order numbering rules Marbre.
info()
Return description of numbering module.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='')
Write log message into outputs.
canBeActivated()
Test si les numeros deje en vigueur dans la base ne provoquent pas de de conflits qui empechera cette...
getExample()
Return an example of numbering module values.
getNumRef($objsoc, $objforref)
Return next free value.
$version
Dolibarr version of the loaded document string.
Classe mere des modeles de numerotation des references de propales.