dolibarr  19.0.0-dev
mod_commande_fournisseur_muguet.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-2009 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_order/modules_commandefournisseur.php';
27 
28 
33 {
38  public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr'
39 
43  public $error = '';
44 
50  public $nom = 'Muguet';
51 
55  public $name = 'Muguet';
56 
57  public $prefix = 'CF';
58 
59 
63  public function __construct()
64  {
65  global $conf;
66 
67  if ((float) $conf->global->MAIN_VERSION_LAST_INSTALL >= 5.0) {
68  $this->prefix = 'PO'; // We use correct standard code "PO = Purchase Order"
69  }
70  }
71 
77  public function info()
78  {
79  global $langs;
80  return $langs->trans("SimpleNumRefModelDesc", $this->prefix);
81  }
82 
83 
89  public function getExample()
90  {
91  return $this->prefix."0501-0001";
92  }
93 
94 
101  public function canBeActivated()
102  {
103  global $conf, $langs, $db;
104 
105  $coyymm = '';
106  $max = '';
107 
108  $posindice = strlen($this->prefix) + 6;
109  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
110  $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
111  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
112  $sql .= " AND entity = ".$conf->entity;
113  $resql = $db->query($sql);
114  if ($resql) {
115  $row = $db->fetch_row($resql);
116  if ($row) {
117  $coyymm = substr($row[0], 0, 6);
118  $max = $row[0];
119  }
120  }
121  if (!$coyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) {
122  return true;
123  } else {
124  $langs->load("errors");
125  $this->error = $langs->trans('ErrorNumRefModel', $max);
126  return false;
127  }
128  }
129 
137  public function getNextValue($objsoc = 0, $object = '')
138  {
139  global $db, $conf;
140 
141  // First, we get the max value
142  $posindice = strlen($this->prefix) + 6;
143  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
144  $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
145  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
146  $sql .= " AND entity = ".$conf->entity;
147 
148  $resql = $db->query($sql);
149  if ($resql) {
150  $obj = $db->fetch_object($resql);
151  if ($obj) {
152  $max = intval($obj->max);
153  } else {
154  $max = 0;
155  }
156  }
157 
158  //$date=time();
159  $date = $object->date_commande; // Not always defined
160  if (empty($date)) {
161  $date = $object->date; // Creation date is order date for suppliers orders
162  }
163  $yymm = strftime("%y%m", $date);
164 
165  if ($max >= (pow(10, 4) - 1)) {
166  $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is
167  } else {
168  $num = sprintf("%04s", $max + 1);
169  }
170 
171  return $this->prefix.$yymm."-".$num;
172  }
173 
174 
175  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
183  public function commande_get_num($objsoc = 0, $object = '')
184  {
185  // phpcs:enable
186  return $this->getNextValue($objsoc, $object);
187  }
188 }
Parent Class of numbering models of suppliers orders references.
Classe du modele de numerotation de reference de commande fournisseur Muguet.
getNextValue($objsoc=0, $object='')
Return next value.
commande_get_num($objsoc=0, $object='')
Renvoie la reference de commande suivante non utilisee.
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.
if(isModEnabled('facture') && $user->hasRight('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') && $user->hasRight('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)) $sql
Social contributions to pay.
Definition: index.php:746