dolibarr  17.0.4
mod_supplier_payment_bronan.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16  * or see https://www.gnu.org/
17  */
18 
25 require_once DOL_DOCUMENT_ROOT.'/core/modules/supplier_payment/modules_supplier_payment.php';
26 
31 {
36  public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr'
37 
38  public $prefix = 'SPAY';
39 
43  public $error = '';
44 
50  public $nom = 'Bronan';
51 
55  public $name = 'Bronan';
56 
57 
63  public function info()
64  {
65  global $langs;
66  return $langs->trans("SimpleNumRefModelDesc", $this->prefix);
67  }
68 
69 
75  public function getExample()
76  {
77  return $this->prefix."0501-0001";
78  }
79 
80 
87  public function canBeActivated()
88  {
89  global $conf, $langs, $db;
90 
91  $payyymm = '';
92  $max = '';
93 
94  $posindice = strlen($this->prefix) + 6;
95  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
96  $sql .= " FROM ".MAIN_DB_PREFIX."paiementfourn";
97  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
98  $sql .= " AND entity = ".$conf->entity;
99 
100  $resql = $db->query($sql);
101  if ($resql) {
102  $row = $db->fetch_row($resql);
103  if ($row) {
104  $payyymm = substr($row[0], 0, 6);
105  $max = $row[0];
106  }
107  }
108  if ($payyymm && !preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $payyymm)) {
109  $langs->load("errors");
110  $this->error = $langs->trans('ErrorNumRefModel', $max);
111  return false;
112  }
113 
114  return true;
115  }
116 
124  public function getNextValue($objsoc, $object)
125  {
126  global $db, $conf;
127 
128  // First, we get the max value
129  $posindice = strlen($this->prefix) + 6;
130  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
131  $sql .= " FROM ".MAIN_DB_PREFIX."paiementfourn";
132  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
133  $sql .= " AND entity = ".$conf->entity;
134 
135  $resql = $db->query($sql);
136  if ($resql) {
137  $obj = $db->fetch_object($resql);
138  if ($obj) {
139  $max = intval($obj->max);
140  } else {
141  $max = 0;
142  }
143  } else {
144  dol_syslog(__METHOD__, LOG_DEBUG);
145  return -1;
146  }
147 
148  //$date=time();
149  $date = $object->datepaye;
150  $yymm = strftime("%y%m", $date);
151 
152  if ($max >= (pow(10, 4) - 1)) {
153  $num = $max + 1; // If counter > 9999, we do not format on 4 chars, we take number as it is
154  } else {
155  $num = sprintf("%04s", $max + 1);
156  }
157 
158  dol_syslog(__METHOD__." return ".$this->prefix.$yymm."-".$num);
159  return $this->prefix.$yymm."-".$num;
160  }
161 
162 
163  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
171  public function payment_get_num($objsoc, $objforref)
172  {
173  // phpcs:enable
174  return $this->getNextValue($objsoc, $objforref);
175  }
176 }
Payment numbering references mother class.
Class to manage customer payment numbering rules Cicada.
payment_get_num($objsoc, $objforref)
Return next free value.
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.
getNextValue($objsoc, $object)
Return next free value.
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.