dolibarr  16.0.1
mod_holiday_madonna.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
3  * Copyright (C) 2018 Charlene Benke <charlie@patas-monkey.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 
25 require_once DOL_DOCUMENT_ROOT.'/core/modules/holiday/modules_holiday.php';
26 
31 {
36  public $version = 'dolibarr';
37 
38  public $prefix = 'HL';
39 
43  public $error = '';
44 
50  public $nom = 'Madonna';
51 
55  public $name = 'Madonna';
56 
60  public $code_auto = 1;
61 
62 
68  public function info()
69  {
70  global $langs;
71  return $langs->trans("SimpleNumRefModelDesc", $this->prefix);
72  }
73 
74 
80  public function getExample()
81  {
82  return $this->prefix."0501-0001";
83  }
84 
85 
91  public function canBeActivated()
92  {
93  global $conf, $langs, $db;
94 
95  $coyymm = '';
96  $max = '';
97 
98  $posindice = strlen($this->prefix) + 6;
99  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
100  $sql .= " FROM ".MAIN_DB_PREFIX."holiday";
101  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
102  $sql .= " AND entity = ".$conf->entity;
103 
104  $resql = $db->query($sql);
105  if ($resql) {
106  $row = $db->fetch_row($resql);
107  if ($row) {
108  $coyymm = substr($row[0], 0, 6);
109  $max = $row[0];
110  }
111  }
112  if ($coyymm && !preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $coyymm)) {
113  $langs->load("errors");
114  $this->error = $langs->trans('ErrorNumRefModel', $max);
115  return false;
116  }
117 
118  return true;
119  }
120 
128  public function getNextValue($objsoc, $holiday)
129  {
130  global $db, $conf;
131 
132  $posindice = strlen($this->prefix) + 6;
133  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
134  $sql .= " FROM ".MAIN_DB_PREFIX."holiday";
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("mod_holiday_madonna::getNextValue", LOG_DEBUG);
148  return -1;
149  }
150 
151  $date = $holiday->date_debut;
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("mod_holiday_madonna::getNextValue return ".$this->prefix.$yymm."-".$num);
161  return $this->prefix.$yymm."-".$num;
162  }
163 
164 
165  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
173  public function holiday_get_num($fuser, $objforref)
174  {
175  // phpcs:enable
176  return $this->getNextValue($fuser, $objforref);
177  }
178 }
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
getNextValue($objsoc, $holiday)
Return next value.
if(isModEnabled('facture')&&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur')&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)&&$user->rights->fournisseur->facture->lire)||(isModEnabled('supplier_invoice')&&$user->rights->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->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
Definition: index.php:742
info()
Return default description of numbering model.
Parent class for all holidays numbering modules.
Class to manage contract numbering rules madonna.
canBeActivated()
Test if existing numbers make problems with numbering.
getExample()
Return numbering example.
holiday_get_num($fuser, $objforref)
Return next value.