dolibarr  7.0.0-beta
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@capnetworks.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 {
34  var $version='dolibarr'; // 'development', 'experimental', 'dolibarr'
35  var $prefix='PR';
36  var $error='';
37  var $nom = "Marbre";
38 
39 
45  function info()
46  {
47  global $langs;
48  return $langs->trans("SimpleNumRefModelDesc",$this->prefix);
49  }
50 
51 
57  function getExample()
58  {
59  return $this->prefix."0501-0001";
60  }
61 
62 
69  function canBeActivated()
70  {
71  global $conf,$langs,$db;
72 
73  $pryymm=''; $max='';
74 
75  $posindice=8;
76  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
77  $sql.= " FROM ".MAIN_DB_PREFIX."propal";
78  $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
79  $sql.= " AND entity = ".$conf->entity;
80 
81  $resql=$db->query($sql);
82  if ($resql)
83  {
84  $row = $db->fetch_row($resql);
85  if ($row) { $pryymm = substr($row[0],0,6); $max=$row[0]; }
86  }
87 
88  if (! $pryymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$pryymm))
89  {
90  return true;
91  }
92  else
93  {
94  $langs->load("errors");
95  $this->error=$langs->trans('ErrorNumRefModel',$max);
96  return false;
97  }
98  }
99 
107  function getNextValue($objsoc,$propal)
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"; // This is standard SQL
114  $sql.= " FROM ".MAIN_DB_PREFIX."propal";
115  $sql.= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
116  $sql.= " AND entity = ".$conf->entity;
117 
118  $resql=$db->query($sql);
119  if ($resql)
120  {
121  $obj = $db->fetch_object($resql);
122  if ($obj) $max = intval($obj->max);
123  else $max=0;
124  }
125  else
126  {
127  dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG);
128  return -1;
129  }
130 
131  $date = time();
132  $yymm = strftime("%y%m",$date);
133 
134  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
135  else $num = sprintf("%04s",$max+1);
136 
137  dol_syslog(get_class($this)."::getNextValue return ".$this->prefix.$yymm."-".$num);
138  return $this->prefix.$yymm."-".$num;
139  }
140 
148  function getNumRef($objsoc,$objforref)
149  {
150  return $this->getNextValue($objsoc,$objforref);
151  }
152 
153 }
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.
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
Classe mere des modeles de numerotation des references de propales.