dolibarr 23.0.3
supplier_invoice.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@inodbox.com>
5 * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
6 * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
7 * Copyright (C) 2010-2013 Juanjo Menent <jmenent@2byte.es>
8 * Copyright (C) 2011-2018 Philippe Grand <philippe.grand@atoo-net.com>
9 * Copyright (C) 2024-2025 MDW <mdeweerd@users.noreply.github.com>
10 * Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 3 of the License, or
15 * (at your option) any later version.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program. If not, see <https://www.gnu.org/licenses/>.
24 */
25
32// Load Dolibarr environment
33require '../main.inc.php';
34require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
35require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
36require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php';
37require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
38require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
39
49// Load translation files required by the page
50$langs->loadLangs(array("admin", "other", "orders"));
51
52$action = GETPOST('action', 'aZ09');
53
54$type = GETPOST('type', 'alpha');
55$value = GETPOST('value', 'alpha');
56$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php
57
58$label = GETPOST('label', 'alpha');
59$scandir = GETPOST('scan_dir', 'alpha');
60
61$specimenthirdparty = new Societe($db);
62$specimenthirdparty->initAsSpecimen();
63
64$error = 0;
65
66if (!$user->admin) {
68}
69
70
71/*
72 * Actions
73 */
74
75include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
76
77if ($action == 'updateMask') {
78 $maskconstinvoice = GETPOST('maskconstinvoice', 'aZ09');
79 $maskconstcredit = GETPOST('maskconstcredit', 'aZ09');
80 $maskconstdeposit = GETPOST('maskconstdeposit', 'aZ09');
81 $maskinvoice = GETPOST('maskinvoice', 'alpha');
82 $maskcredit = GETPOST('maskcredit', 'alpha');
83 $maskdeposit = GETPOST('maskdeposit', 'alpha');
84 $res = 0;
85
86 if ($maskconstinvoice && preg_match('/_MASK$/', $maskconstinvoice)) {
87 $res = dolibarr_set_const($db, $maskconstinvoice, $maskinvoice, 'chaine', 0, '', $conf->entity);
88 }
89 if ($maskconstcredit && preg_match('/_MASK$/', $maskconstcredit)) {
90 $res = dolibarr_set_const($db, $maskconstcredit, $maskcredit, 'chaine', 0, '', $conf->entity);
91 }
92 if ($maskconstdeposit && preg_match('/_MASK$/', $maskconstdeposit)) {
93 $res = dolibarr_set_const($db, $maskconstdeposit, $maskdeposit, 'chaine', 0, '', $conf->entity);
94 }
95
96 if (!($res > 0)) {
97 $error++;
98 }
99
100 if (!$error) {
101 setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
102 } else {
103 setEventMessages($langs->trans("Error"), null, 'errors');
104 }
105}
106
107if ($action == 'specimen') { // For invoices
108 $modele = GETPOST('module', 'alpha');
109
110 $facture = new FactureFournisseur($db);
111 $facture->initAsSpecimen();
112 $facture->thirdparty = $specimenthirdparty; // Define who should has build the invoice (so the supplier)
113
114 // Search template files
115 $file = '';
116 $classname = '';
117 $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
118 foreach ($dirmodels as $reldir) {
119 $file = dol_buildpath($reldir."core/modules/supplier_invoice/doc/pdf_".$modele.".modules.php", 0);
120 if (file_exists($file)) {
121 $classname = "pdf_".$modele;
122 break;
123 }
124 }
125
126 if ($classname !== '') {
127 require_once $file;
128
129 $module = new $classname($db, $facture);
130 '@phan-var-force ModelePDFSuppliersInvoices $module';
131
132 if ($module->write_file($facture, $langs) > 0) {
133 header("Location: ".DOL_URL_ROOT."/document.php?modulepart=facture_fournisseur&file=SPECIMEN.pdf");
134 return;
135 } else {
136 setEventMessages($module->error, $module->errors, 'errors');
137 dol_syslog($module->error, LOG_ERR);
138 }
139 } else {
140 setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors');
141 dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
142 }
143} elseif ($action == 'set') {
144 // Activate a model
145 $ret = addDocumentModel($value, $type, $label, $scandir);
146} elseif ($action == 'del') {
147 $ret = delDocumentModel($value, $type);
148 if ($ret > 0) {
149 if (getDolGlobalString('INVOICE_SUPPLIER_ADDON_PDF') == "$value") {
150 dolibarr_del_const($db, 'INVOICE_SUPPLIER_ADDON_PDF', $conf->entity);
151 }
152 }
153} elseif ($action == 'setdoc') {
154 // Set default model
155 if (dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON_PDF", $value, 'chaine', 0, '', $conf->entity)) {
156 // La constante qui a ete lue en avant du nouveau set
157 // on passe donc par une variable pour avoir un affichage coherent
158 $conf->global->INVOICE_SUPPLIER_ADDON_PDF = $value;
159 }
160
161 // On active le modele
162 $ret = delDocumentModel($value, $type);
163 if ($ret > 0) {
164 $ret = addDocumentModel($value, $type, $label, $scandir);
165 }
166} elseif ($action == 'unsetdoc') {
167 dolibarr_del_const($db, "INVOICE_SUPPLIER_ADDON_PDF", $conf->entity);
168}
169
170if ($action == 'setmod') {
171 // TODO Verify if the chosen numbering module can be activated
172 // by calling method canBeActivated
173
174 dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON_NUMBER", $value, 'chaine', 0, '', $conf->entity);
175}
176
177if ($action == 'addcat') {
178 $fourn = new Fournisseur($db);
179 $fourn->CreateCategory($user, GETPOST('cat', 'alphanohtml'));
180}
181
182if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT') {
183 $freetext = GETPOST('SUPPLIER_INVOICE_FREE_TEXT', 'restricthtml'); // No alpha here, we want exact string
184
185 $res = dolibarr_set_const($db, "SUPPLIER_INVOICE_FREE_TEXT", $freetext, 'chaine', 0, '', $conf->entity);
186
187 if (!($res > 0)) {
188 $error++;
189 }
190
191 if (!$error) {
192 setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
193 } else {
194 setEventMessages($langs->trans("Error"), null, 'errors');
195 }
196}
197
198
199/*
200 * View
201 */
202
203$form = new Form($db);
204
205$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
206
207llxHeader('', '', '', '', 0, 0, '', '', '', 'mod-admin page-supplier_invoice');
208
209$linkback = '<a href="'.dolBuildUrl(DOL_URL_ROOT.'/admin/modules.php', ['restore_lastsearch_values' => 1]).'">'.img_picto($langs->trans("BackToModuleList"), 'back', 'class="pictofixedwidth"').'<span class="hideonsmartphone">'.$langs->trans("BackToModuleList").'</span></a>';
210
211print load_fiche_titre($langs->trans("SuppliersSetup"), $linkback, 'title_setup');
212
213print "<br>";
214
216
217print dol_get_fiche_head($head, 'invoice', $langs->trans("Suppliers"), -1, 'company');
218
219
220// Supplier invoice numbering module
221
222print load_fiche_titre($langs->trans("SuppliersInvoiceNumberingModel"), '', '');
223
224print '<div class="div-table-responsive-no-min">';
225print '<table class="noborder centpercent">';
226print '<tr class="liste_titre">';
227print '<td width="100">'.$langs->trans("Name").'</td>';
228print '<td>'.$langs->trans("Description").'</td>';
229print '<td>'.$langs->trans("Example").'</td>';
230print '<td align="center" width="60">'.$langs->trans("Status").'</td>';
231print '<td align="center" width="16">'.$langs->trans("ShortInfo").'</td>';
232print "</tr>\n";
233
234clearstatcache();
235
236foreach ($dirmodels as $reldir) {
237 $dir = dol_buildpath($reldir."core/modules/supplier_invoice");
238
239 if (is_dir($dir)) {
240 $handle = opendir($dir);
241 if (is_resource($handle)) {
242 while (($file = readdir($handle)) !== false) {
243 if (substr($file, 0, 24) == 'mod_facture_fournisseur_' && substr($file, dol_strlen($file) - 3, 3) == 'php') {
244 $file = substr($file, 0, dol_strlen($file) - 4);
245
246 require_once $dir.'/'.$file.'.php';
247
248 $module = new $file();
249
250 '@phan-var-force ModeleNumRefSuppliersInvoices $module';
251
252 if ($module->isEnabled()) {
253 // Show modules according to features level
254 if ($module->version == 'development' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 2) {
255 continue;
256 }
257 if ($module->version == 'experimental' && getDolGlobalInt('MAIN_FEATURES_LEVEL') < 1) {
258 continue;
259 }
260
261
262 print '<tr class="oddeven"><td>'.$module->getName($langs)."</td><td>\n";
263 print $module->info($langs);
264 print '</td>';
265
266 // Show example of numbering module
267 print '<td class="nowrap">';
268 $tmp = $module->getExample();
269 if (preg_match('/^Error/', $tmp)) {
270 $langs->load("errors");
271 print '<div class="error">'.$langs->trans($tmp).'</div>';
272 } elseif ($tmp == 'NotConfigured') {
273 print '<span class="opacitymedium">'.$langs->trans($tmp).'</span>';
274 } else {
275 print $tmp;
276 }
277 print '</td>'."\n";
278
279 print '<td class="center">';
280 if (getDolGlobalString('INVOICE_SUPPLIER_ADDON_NUMBER') == "$file") {
281 print img_picto($langs->trans("Activated"), 'switch_on');
282 } else {
283 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=setmod&token='.newToken().'&value='.urlencode($file).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
284 }
285 print '</td>';
286
287 $invoice = new FactureFournisseur($db);
288 $invoice->initAsSpecimen();
289
290 // Info
291 $htmltooltip = '';
292 $htmltooltip .= ''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
293 $nextval = $module->getNextValue($mysoc, $invoice);
294 if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval
295 $htmltooltip .= ''.$langs->trans("NextValue").': ';
296 if ($nextval) {
297 if (preg_match('/^Error/', $nextval) || $nextval == 'NotConfigured') {
298 $nextval = $langs->trans($nextval);
299 }
300 $htmltooltip .= $nextval.'<br>';
301 } else {
302 $htmltooltip .= $langs->trans($module->error).'<br>';
303 }
304 }
305
306 print '<td class="center">';
307 print $form->textwithpicto('', $htmltooltip, 1, 'info');
308 print '</td>';
309
310 print '</tr>';
311 }
312 }
313 }
314 closedir($handle);
315 }
316 }
317}
318
319print '</table></div><br>';
320
321
322
323
324/*
325 * Documents models for supplier invoices
326 */
327
328print load_fiche_titre($langs->trans("BillsPDFModules"), '', '');
329
330// Defini tableau def de modele
331$def = array();
332
333$sql = "SELECT nom";
334$sql .= " FROM ".MAIN_DB_PREFIX."document_model";
335$sql .= " WHERE type = 'invoice_supplier'";
336$sql .= " AND entity = ".((int) $conf->entity);
337
338$resql = $db->query($sql);
339if ($resql) {
340 $i = 0;
341 $num_rows = $db->num_rows($resql);
342 while ($i < $num_rows) {
343 $array = $db->fetch_array($resql);
344 if (is_array($array)) {
345 array_push($def, $array[0]);
346 }
347 $i++;
348 }
349} else {
350 dol_print_error($db);
351}
352
353print '<div class="div-table-responsive-no-min">';
354print '<table class="noborder centpercent">'."\n";
355print '<tr class="liste_titre">'."\n";
356print '<td width="100">'.$langs->trans("Name").'</td>'."\n";
357print '<td>'.$langs->trans("Description").'</td>'."\n";
358print '<td align="center" width="60">'.$langs->trans("Status").'</td>'."\n";
359print '<td align="center" width="60">'.$langs->trans("Default").'</td>'."\n";
360print '<td align="center" width="40">'.$langs->trans("ShortInfo").'</td>';
361print '<td align="center" width="40">'.$langs->trans("Preview").'</td>';
362print '</tr>'."\n";
363
364clearstatcache();
365
366foreach ($dirmodels as $reldir) {
367 $realpath = $reldir."core/modules/supplier_invoice/doc";
368 $dir = dol_buildpath($realpath);
369
370 if (is_dir($dir)) {
371 $handle = opendir($dir);
372
373
374 if (is_resource($handle)) {
375 while (($file = readdir($handle)) !== false) {
376 if (preg_match('/\.modules\.php$/i', $file) && preg_match('/^(pdf_|doc_)/', $file)) {
377 $name = substr($file, 4, dol_strlen($file) - 16);
378 $classname = substr($file, 0, dol_strlen($file) - 12);
379
380 require_once $dir.'/'.$file;
381 $module = new $classname($db, new FactureFournisseur($db));
382
383 '@phan-var-force ModelePDFSuppliersInvoices $module';
384
385
386 print "<tr class=\"oddeven\">\n";
387 print "<td>";
388 print(empty($module->name) ? $name : $module->name);
389 print "</td>\n";
390 print "<td>\n";
391 require_once $dir.'/'.$file;
392 $module = new $classname($db, $specimenthirdparty);
393 '@phan-var-force ModelePDFSuppliersInvoices $module';
394 if (method_exists($module, 'info')) {
395 print $module->info($langs); // @phan-suppress-current-line PhanUndeclaredMethod
396 } else {
397 print $module->description;
398 }
399
400 print "</td>\n";
401
402 // Active
403 if (in_array($name, $def)) {
404 print '<td class="center">'."\n";
405 //if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF != "$name")
406 //{
407 // Even if choice is the default value, we allow to disable it: For supplier invoice, we accept to have no doc generation at all
408 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=del&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&amp;type=invoice_supplier">';
409 print img_picto($langs->trans("Enabled"), 'switch_on');
410 print '</a>';
411 /*}
412 else
413 {
414 print img_picto($langs->trans("Enabled"),'switch_on');
415 }*/
416 print "</td>";
417 } else {
418 print '<td class="center">'."\n";
419 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=set&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&amp;type=invoice_supplier">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
420 print "</td>";
421 }
422
423 // Default
424 print '<td class="center">';
425 if (getDolGlobalString("INVOICE_SUPPLIER_ADDON_PDF") == "$name") {
426 //print img_picto($langs->trans("Default"),'on');
427 // Even if choice is the default value, we allow to disable it: For supplier invoice, we accept to have no doc generation at all
428 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
429 } else {
430 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
431 }
432 print '</td>';
433
434 // Info
435 $htmltooltip = ''.$langs->trans("Name").': '.$module->name;
436 $htmltooltip .= '<br>'.$langs->trans("Type").': '.($module->type ? $module->type : $langs->trans("Unknown"));
437 $htmltooltip .= '<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
438 $htmltooltip .= '<br>'.$langs->trans("Path").': '.preg_replace('/^\//', '', $realpath).'/'.$file;
439
440 $htmltooltip .= '<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
441 $htmltooltip .= '<br>'.$langs->trans("Logo").': '.yn($module->option_logo, 1, 1);
442 $htmltooltip .= '<br>'.$langs->trans("PaymentMode").': '.yn($module->option_modereg, 1, 1);
443 $htmltooltip .= '<br>'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg, 1, 1);
444 print '<td class="center">';
445 print $form->textwithpicto('', $htmltooltip, 1, 'info');
446 print '</td>';
447 print '<td class="center">';
448 print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.urlencode($name).'">'.img_object($langs->trans("Preview"), 'pdf').'</a>';
449 print '</td>';
450
451 print "</tr>\n";
452 }
453 }
454
455 closedir($handle);
456 }
457 }
458}
459
460print '</table></div><br>';
461
462/*
463 * Other options
464 */
465
466print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
467print '<input type="hidden" name="token" value="'.newToken().'">';
468print '<input type="hidden" name="action" value="set_SUPPLIER_INVOICE_FREE_TEXT">';
469
470print load_fiche_titre($langs->trans("OtherOptions"), '', '');
471
472print '<div class="div-table-responsive-no-min">';
473print '<table class="noborder centpercent">';
474print '<tr class="liste_titre">';
475print '<td>'.$langs->trans("Parameter").'</td>';
476print '<td></td>';
477print '<td width="80">&nbsp;</td>';
478print "</tr>\n";
479
480$substitutionarray = pdf_getSubstitutionArray($langs, null, null, 2);
481$substitutionarray['__(AnyTranslationKey)__'] = $langs->trans("Translation");
482$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
483foreach ($substitutionarray as $key => $val) {
484 $htmltext .= $key.'<br>';
485}
486$htmltext .= '</i>';
487
488print '<tr class="oddeven"><td colspan="2">';
489print $form->textwithpicto($langs->trans("FreeLegalTextOnInvoices"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
490$variablename = 'SUPPLIER_INVOICE_FREE_TEXT';
491if (!getDolGlobalString('PDF_ALLOW_HTML_FOR_FREE_TEXT')) {
492 print '<textarea name="'.$variablename.'" class="flat" cols="120">'.getDolGlobalString($variablename).'</textarea>';
493} else {
494 include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
495 $doleditor = new DolEditor($variablename, getDolGlobalString($variablename), '', 80, 'dolibarr_notes');
496 print $doleditor->Create();
497}
498print '</td><td class="right">';
499print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
500print "</td></tr>\n";
501
502
503// Notifications
504print '<tr class="oddeven">';
505print '<td>'.img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("Notifications").'</td>';
506print '<td colspan="2">';
507print $langs->trans("YouMayFindNotificationsFeaturesIntoModuleNotification");
508print '</td></tr>';
509
510// More PDF options
511/*
512print '<tr class="oddeven">';
513print '<td>'.img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("MoreOptionsRelatedToPDF").'</td>';
514print '<td colspan="2">';
515print img_picto('', 'url', 'class="pictofixedwidth"').'<a href="'.DOL_URL_ROOT.'/admin/pdf_other.php">'.$langs->trans("SeeInPDFSetupPage").'</a>';
516print '</td></tr>';
517*/
518
519print '</table></div><br>';
520
521print '</form>';
522
523print '</table>';
524print '</div>';
525
526// End of page
527llxFooter();
528$db->close();
addDocumentModel($name, $type, $label='', $description='')
Add document model used by doc generator.
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
dolibarr_del_const($db, $name, $entity=1)
Delete a constant.
delDocumentModel($name, $type)
Delete document model used by doc generator.
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
Definition wrapper.php:91
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:73
Class to manage a WYSIWYG editor.
Class to manage suppliers invoices.
Class to manage generation of HTML components Only common components must be here.
Class to manage suppliers.
Class to manage third parties objects (customers, suppliers, prospects...)
global $mysoc
supplierorder_admin_prepare_head()
Return array head with list of tabs to view object information.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $allowothertags=array())
Show a picto called object_picto (generic function)
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
yn($yesno, $format=1, $color=0)
Return yes or no in current language.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
pdf_getSubstitutionArray($outputlangs, $exclude=null, $object=null, $onlykey=0, $include=null)
Return array of possible substitutions for PDF content (without external module substitutions).
Definition pdf.lib.php:824
$conf db name
Only used if Module[ID]Name translation string is not found.
Definition repair.php:128
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.