dolibarr  13.0.2
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 <https://www.gnu.org/licenses/>.
17  * or see https://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  public function info()
66  {
67  global $langs;
68  return $langs->trans("SimpleNumRefModelDesc", $this->prefix);
69  }
70 
71 
77  public function getExample()
78  {
79  return $this->prefix."0501-0001";
80  }
81 
82 
89  public function canBeActivated()
90  {
91  global $conf, $langs, $db;
92 
93  $pryymm = ''; $max = '';
94 
95  $posindice = strlen($this->prefix) + 6;
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  } else {
112  $langs->load("errors");
113  $this->error = $langs->trans('ErrorNumRefModel', $max);
114  return false;
115  }
116  }
117 
125  public function getNextValue($objsoc, $propal)
126  {
127  global $db, $conf;
128 
129  // First, we get the max value
130  $posindice = strlen($this->prefix) + 6;
131  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL
132  $sql .= " FROM ".MAIN_DB_PREFIX."propal";
133  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
134  $sql .= " AND entity IN (".getEntity('proposalnumber', 1, $propal).")";
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  } else {
143  dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG);
144  return -1;
145  }
146 
147  $date = time();
148  $yymm = strftime("%y%m", $date);
149 
150  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
151  else $num = sprintf("%04s", $max + 1);
152 
153  dol_syslog(get_class($this)."::getNextValue return ".$this->prefix.$yymm."-".$num);
154  return $this->prefix.$yymm."-".$num;
155  }
156 
164  public function getNumRef($objsoc, $objforref)
165  {
166  return $this->getNextValue($objsoc, $objforref);
167  }
168 }
getNextValue($objsoc, $propal)
Return next value.
Class to manage customer order numbering rules Marbre.
info()
Return description of numbering module.
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
getExample()
Return an example of numbering module values.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
getNumRef($objsoc, $objforref)
Return next free value.
if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) if(!empty($conf->don->enabled)&&$user->rights->don->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)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
Definition: index.php:1232
Classe mere des modeles de numerotation des references de propales.