dolibarr  17.0.4
mod_supplier_proposal_marbre.php
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/supplier_proposal/modules_supplier_proposal.php';
27 
28 
33 {
38  public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr'
39 
40  public $prefix = 'RQ'; // RQ = Request for quotation
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 = '';
94  $max = '';
95 
96  $posindice = strlen($this->prefix) + 6;
97  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
98  $sql .= " FROM ".MAIN_DB_PREFIX."supplier_proposal";
99  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
100  $sql .= " AND entity = ".$conf->entity;
101 
102  $resql = $db->query($sql);
103  if ($resql) {
104  $row = $db->fetch_row($resql);
105  if ($row) {
106  $pryymm = substr($row[0], 0, 6);
107  $max = $row[0];
108  }
109  }
110 
111  if (!$pryymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $pryymm)) {
112  return true;
113  } else {
114  $langs->load("errors");
115  $this->error = $langs->trans('ErrorNumRefModel', $max);
116  return false;
117  }
118  }
119 
127  public function getNextValue($objsoc, $supplier_proposal)
128  {
129  global $db, $conf;
130 
131  // First, we get the max value
132  $posindice = strlen($this->prefix) + 6;
133  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL
134  $sql .= " FROM ".MAIN_DB_PREFIX."supplier_proposal";
135  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
136  $sql .= " AND entity = ".$conf->entity;
137 
138  $resql = $db->query($sql);
139  if ($resql) {
140  $obj = $db->fetch_object($resql);
141  if ($obj) {
142  $max = intval($obj->max);
143  } else {
144  $max = 0;
145  }
146  } else {
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)) {
155  $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is
156  } else {
157  $num = sprintf("%04s", $max + 1);
158  }
159 
160  dol_syslog(get_class($this)."::getNextValue return ".$this->prefix.$yymm."-".$num);
161  return $this->prefix.$yymm."-".$num;
162  }
163 
171  public function getNumRef($objsoc, $objforref)
172  {
173  return $this->getNextValue($objsoc, $objforref);
174  }
175 }
Classe mere des modeles de numerotation des references de propales.
Class to manage the Marbre numbering rule for Request for quotation.
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
getNextValue($objsoc, $supplier_proposal)
Return next value.
getNumRef($objsoc, $objforref)
Return next free value.
info()
Return description of numbering module.
getExample()
Return an example of numbering module values.
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') &&!empty($user->rights->don->lire)) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
Definition: index.php:745
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.