1<?php 2/* Copyright (C) 2010 Regis Houssin <regis.houssin@inodbox.com> 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 19/** 20 * \file htdocs/core/modules/project/mod_project_universal.php 21 * \ingroup project 22 * \brief Fichier contenant la classe du modele de numerotation de reference de projet Universal 23 */ 24 25require_once DOL_DOCUMENT_ROOT.'/core/modules/project/modules_project.php'; 26 27 28/** 29 * Classe du modele de numerotation de reference de projet Universal 30 */ 31class mod_project_universal extends ModeleNumRefProjects 32{ 33 /** 34 * Dolibarr version of the loaded document 35 * @var string 36 */ 37 public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' 38 39 /** 40 * @var string Error code (or message) 41 */ 42 public $error = ''; 43 44 /** 45 * @var string Nom du modele 46 * @deprecated 47 * @see $name 48 */ 49 public $nom = 'Universal'; 50 51 /** 52 * @var string model name 53 */ 54 public $name = 'Universal'; 55 56 57 /** 58 * Returns the description of the numbering model 59 * 60 * @return string Texte descripif 61 */ 62 public function info() 63 { 64 global $conf, $langs; 65 66 // Load translation files required by the page 67 $langs->loadLangs(array("projects", "admin")); 68 69 $form = new Form($this->db); 70 71 $texte = $langs->trans('GenericNumRefModelDesc')."<br>\n"; 72 $texte .= '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">'; 73 $texte .= '<input type="hidden" name="token" value="'.newToken().'">'; 74 $texte .= '<input type="hidden" name="action" value="updateMask">'; 75 $texte .= '<input type="hidden" name="maskconstproject" value="PROJECT_UNIVERSAL_MASK">'; 76 $texte .= '<table class="nobordernopadding" width="100%">'; 77 78 $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("Project"), $langs->transnoentities("Project")); 79 $tooltip .= $langs->trans("GenericMaskCodes2"); 80 $tooltip .= $langs->trans("GenericMaskCodes3"); 81 $tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("Project"), $langs->transnoentities("Project")); 82 $tooltip .= $langs->trans("GenericMaskCodes5"); 83 84 // Parametrage du prefix 85 $texte .= '<tr><td>'.$langs->trans("Mask").':</td>'; 86 $texte .= '<td class="right">'.$form->textwithpicto('<input type="text" class="flat" size="24" name="maskproject" value="'.$conf->global->PROJECT_UNIVERSAL_MASK.'">', $tooltip, 1, 1).'</td>'; 87 88 $texte .= '<td class="left" rowspan="2"> <input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button"></td>'; 89 90 $texte .= '</tr>'; 91 92 $texte .= '</table>'; 93 $texte .= '</form>'; 94 95 return $texte; 96 } 97 98 /** 99 * Return an example of numbering 100 * 101 * @return string Example 102 */ 103 public function getExample() 104 { 105 global $conf, $langs, $mysoc; 106 107 $old_code_client = $mysoc->code_client; 108 $mysoc->code_client = 'CCCCCCCCCC'; 109 $numExample = $this->getNextValue($mysoc, ''); 110 $mysoc->code_client = $old_code_client; 111 112 if (!$numExample) 113 { 114 $numExample = $langs->trans('NotConfigured'); 115 } 116 return $numExample; 117 } 118 119 /** 120 * Return next value 121 * 122 * @param Societe $objsoc Object third party 123 * @param Project $project Object project 124 * @return string Value if OK, 0 if KO 125 */ 126 public function getNextValue($objsoc, $project) 127 { 128 global $db, $conf; 129 130 require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; 131 132 // On defini critere recherche compteur 133 $mask = $conf->global->PROJECT_UNIVERSAL_MASK; 134 135 if (!$mask) 136 { 137 $this->error = 'NotConfigured'; 138 return 0; 139 } 140 141 $date = empty($project->date_c) ?dol_now() : $project->date_c; 142 $numFinal = get_next_value($db, $mask, 'projet', 'ref', '', (is_object($objsoc) ? $objsoc->code_client : ''), $date); 143 144 return $numFinal; 145 } 146 147 148 // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps 149 /** 150 * Return next reference not yet used as a reference 151 * 152 * @param Societe $objsoc Object third party 153 * @param Project $project Object project 154 * @return string Next not used reference 155 */ 156 public function project_get_num($objsoc = 0, $project = '') 157 { 158 // phpcs:enable 159 return $this->getNextValue($objsoc, $project); 160 } 161} 162