dolibarr  13.0.2
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 = ''; $max = '';
92 
93  $posindice = strlen($this->prefix) + 6;
94  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
95  $sql .= " FROM ".MAIN_DB_PREFIX."paiementfourn";
96  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
97  $sql .= " AND entity = ".$conf->entity;
98 
99  $resql = $db->query($sql);
100  if ($resql)
101  {
102  $row = $db->fetch_row($resql);
103  if ($row) { $payyymm = substr($row[0], 0, 6); $max = $row[0]; }
104  }
105  if ($payyymm && !preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i', $payyymm))
106  {
107  $langs->load("errors");
108  $this->error = $langs->trans('ErrorNumRefModel', $max);
109  return false;
110  }
111 
112  return true;
113  }
114 
122  public function getNextValue($objsoc, $object)
123  {
124  global $db, $conf;
125 
126  // First, we get the max value
127  $posindice = strlen($this->prefix) + 6;
128  $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max";
129  $sql .= " FROM ".MAIN_DB_PREFIX."paiementfourn";
130  $sql .= " WHERE ref LIKE '".$db->escape($this->prefix)."____-%'";
131  $sql .= " AND entity = ".$conf->entity;
132 
133  $resql = $db->query($sql);
134  if ($resql)
135  {
136  $obj = $db->fetch_object($resql);
137  if ($obj) $max = intval($obj->max);
138  else $max = 0;
139  } else {
140  dol_syslog(__METHOD__, LOG_DEBUG);
141  return -1;
142  }
143 
144  //$date=time();
145  $date = $object->datepaye;
146  $yymm = strftime("%y%m", $date);
147 
148  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
149  else $num = sprintf("%04s", $max + 1);
150 
151  dol_syslog(__METHOD__." return ".$this->prefix.$yymm."-".$num);
152  return $this->prefix.$yymm."-".$num;
153  }
154 
155 
156  // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
164  public function payment_get_num($objsoc, $objforref)
165  {
166  // phpcs:enable
167  return $this->getNextValue($objsoc, $objforref);
168  }
169 }
Class to manage customer payment numbering rules Cicada.
payment_get_num($objsoc, $objforref)
Return next free value.
getNextValue($objsoc, $object)
Return next free value.
canBeActivated()
Checks if the numbers already in the database do not cause conflicts that would prevent this numberin...
getExample()
Return an example of numbering.
info()
Return description of numbering module.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
Payment numbering references mother class.
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