dolibarr 18.0.6
supplier_order.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3* Copyright (C) 2004-2011 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*
10* This program is free software; you can redistribute it and/or modify
11* it under the terms of the GNU General Public License as published by
12* the Free Software Foundation; either version 3 of the License, or
13* (at your option) any later version.
14*
15* This program is distributed in the hope that it will be useful,
16* but WITHOUT ANY WARRANTY; without even the implied warranty of
17* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18* GNU General Public License for more details.
19*
20* You should have received a copy of the GNU General Public License
21* along with this program. If not, see <https://www.gnu.org/licenses/>.
22*/
23
30// Load Dolibarr environment
31require '../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
33require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php';
34require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php';
35require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php';
36require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
37
38// Load translation files required by the page
39$langs->loadLangs(array("admin", "other", "orders", "stocks"));
40
41$action = GETPOST('action', 'aZ09');
42
43$type = GETPOST('type', 'alpha');
44$value = GETPOST('value', 'alpha');
45$modulepart = GETPOST('modulepart', 'aZ09'); // Used by actions_setmoduleoptions.inc.php
46
47$label = GETPOST('label', 'alpha');
48$scandir = GETPOST('scan_dir', 'alpha');
49
50$specimenthirdparty = new Societe($db);
51$specimenthirdparty->initAsSpecimen();
52
53$error = 0;
54
55if (!$user->admin) {
57}
58
59
60/*
61 * Actions
62 */
63
64include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php';
65
66if ($action == 'updateMask') {
67 $maskconstorder = GETPOST('maskconstorder', 'aZ09');
68 $maskvalue = GETPOST('maskorder', 'alpha');
69
70 if ($maskconstorder && preg_match('/_MASK$/', $maskconstorder)) {
71 $res = dolibarr_set_const($db, $maskconstorder, $maskvalue, 'chaine', 0, '', $conf->entity);
72 }
73
74 if (!($res > 0)) {
75 $error++;
76 }
77
78 if (!$error) {
79 setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
80 } else {
81 setEventMessages($langs->trans("Error"), null, 'errors');
82 }
83}
84
85if ($action == 'specimen') { // For orders
86 $modele = GETPOST('module', 'alpha');
87
88 $commande = new CommandeFournisseur($db);
89 $commande->initAsSpecimen();
90 $commande->thirdparty = $specimenthirdparty;
91
92 // Search template files
93 $file = '';
94 $classname = '';
95 $filefound = 0;
96 $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
97 foreach ($dirmodels as $reldir) {
98 $file = dol_buildpath($reldir."core/modules/supplier_order/doc/pdf_".$modele.".modules.php", 0);
99 if (file_exists($file)) {
100 $filefound = 1;
101 $classname = "pdf_".$modele;
102 break;
103 }
104 }
105
106 if ($filefound) {
107 require_once $file;
108
109 $module = new $classname($db, $commande);
110
111 if ($module->write_file($commande, $langs) > 0) {
112 header("Location: ".DOL_URL_ROOT."/document.php?modulepart=commande_fournisseur&file=SPECIMEN.pdf");
113 return;
114 } else {
115 setEventMessages($module->error, $module->errors, 'errors');
116 dol_syslog($module->error, LOG_ERR);
117 }
118 } else {
119 setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors');
120 dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
121 }
122} elseif ($action == 'set') {
123 // Activate a model
124 $ret = addDocumentModel($value, $type, $label, $scandir);
125} elseif ($action == 'del') {
126 $ret = delDocumentModel($value, $type);
127 if ($ret > 0) {
128 if ($conf->global->COMMANDE_SUPPLIER_ADDON_PDF == "$value") {
129 dolibarr_del_const($db, 'COMMANDE_SUPPLIER_ADDON_PDF', $conf->entity);
130 }
131 }
132} elseif ($action == 'setdoc') {
133 // Set default model
134 if (dolibarr_set_const($db, "COMMANDE_SUPPLIER_ADDON_PDF", $value, 'chaine', 0, '', $conf->entity)) {
135 // La constante qui a ete lue en avant du nouveau set
136 // on passe donc par une variable pour avoir un affichage coherent
137 $conf->global->COMMANDE_SUPPLIER_ADDON_PDF = $value;
138 }
139
140 // On active le modele
141 $ret = delDocumentModel($value, $type);
142 if ($ret > 0) {
143 $ret = addDocumentModel($value, $type, $label, $scandir);
144 }
145} elseif ($action == 'unsetdoc') {
146 dolibarr_del_const($db, "COMMANDE_SUPPLIER_ADDON_PDF", $conf->entity);
147} elseif ($action == 'setmod') {
148 // TODO Verifier si module numerotation choisi peut etre active
149 // par appel methode canBeActivated
150
151 dolibarr_set_const($db, "COMMANDE_SUPPLIER_ADDON_NUMBER", $value, 'chaine', 0, '', $conf->entity);
152} elseif ($action == 'addcat') {
153 $fourn = new Fournisseur($db);
154 $fourn->CreateCategory($user, GETPOST('cat', 'alphanohtml'));
155} elseif ($action == 'set_SUPPLIER_ORDER_OTHER') {
156 $freetext = GETPOST('SUPPLIER_ORDER_FREE_TEXT', 'restricthtml'); // No alpha here, we want exact string
157 $doubleapproval = GETPOST('SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED', 'alpha');
158 $doubleapproval = price2num($doubleapproval);
159
160 $res1 = dolibarr_set_const($db, "SUPPLIER_ORDER_FREE_TEXT", $freetext, 'chaine', 0, '', $conf->entity);
161 $res2 = dolibarr_set_const($db, "SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED", $doubleapproval, 'chaine', 0, '', $conf->entity);
162
163 // TODO We add/delete permission here until permission can have a condition on a global var
164 include_once DOL_DOCUMENT_ROOT.'/core/modules/modFournisseur.class.php';
165 $newmodule = new modFournisseur($db);
166
167 if ($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) {
168 // clear default rights array
169 $newmodule->rights = array();
170 // add new right
171 $r = 0;
172 $newmodule->rights[$r][0] = 1190;
173 $newmodule->rights[$r][1] = $langs->trans("Permission1190");
174 $newmodule->rights[$r][2] = 'w';
175 $newmodule->rights[$r][3] = 0;
176 $newmodule->rights[$r][4] = 'commande';
177 $newmodule->rights[$r][5] = 'approve2';
178
179 // Insert
180 $newmodule->insert_permissions(1);
181 } else {
182 // Remove all rights with Permission1190
183 $newmodule->delete_permissions();
184
185 // Add all right without Permission1190
186 $newmodule->insert_permissions(1);
187 }
188} elseif ($action == 'set_BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER') {
189 // Activate ask for payment bank
190 $res = dolibarr_set_const($db, "BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER", $value, 'chaine', 0, '', $conf->entity);
191
192 if (!($res > 0)) {
193 $error++;
194 }
195
196 if (!$error) {
197 setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
198 } else {
199 setEventMessages($langs->trans("Error"), null, 'errors');
200 }
201}
202
203
204/*
205* View
206*/
207
208$form = new Form($db);
209
210$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
211
212llxHeader("", "");
213
214$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
215print load_fiche_titre($langs->trans("SuppliersSetup"), $linkback, 'title_setup');
216
217print "<br>";
218
220
221print dol_get_fiche_head($head, 'order', $langs->trans("Suppliers"), -1, 'company');
222
223
224// Supplier order numbering module
225
226print load_fiche_titre($langs->trans("OrdersNumberingModules"), '', '');
227
228print '<div class="div-table-responsive-no-min">';
229print '<table class="noborder centpercent">';
230print '<tr class="liste_titre">';
231print '<td width="100">'.$langs->trans("Name").'</td>';
232print '<td>'.$langs->trans("Description").'</td>';
233print '<td>'.$langs->trans("Example").'</td>';
234print '<td align="center" width="60">'.$langs->trans("Status").'</td>';
235print '<td align="center" width="16">'.$langs->trans("ShortInfo").'</td>';
236print "</tr>\n";
237
238clearstatcache();
239
240foreach ($dirmodels as $reldir) {
241 $dir = dol_buildpath($reldir."core/modules/supplier_order/");
242
243 if (is_dir($dir)) {
244 $handle = opendir($dir);
245 if (is_resource($handle)) {
246 while (($file = readdir($handle)) !== false) {
247 if (substr($file, 0, 25) == 'mod_commande_fournisseur_' && substr($file, dol_strlen($file) - 3, 3) == 'php') {
248 $file = substr($file, 0, dol_strlen($file) - 4);
249
250 require_once $dir.$file.'.php';
251
252 $module = new $file;
253
254 if ($module->isEnabled()) {
255 // Show modules according to features level
256 if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
257 continue;
258 }
259 if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
260 continue;
261 }
262
263
264 print '<tr class="oddeven"><td>'.$module->nom."</td><td>\n";
265 print $module->info();
266 print '</td>';
267
268 // Show example of numbering module
269 print '<td class="nowrap">';
270 $tmp = $module->getExample();
271 if (preg_match('/^Error/', $tmp)) {
272 $langs->load("errors");
273 print '<div class="error">'.$langs->trans($tmp).'</div>';
274 } elseif ($tmp == 'NotConfigured') {
275 print '<span class="opacitymedium">'.$langs->trans($tmp).'</span>';
276 } else {
277 print $tmp;
278 }
279 print '</td>'."\n";
280
281 print '<td class="center">';
282 if ($conf->global->COMMANDE_SUPPLIER_ADDON_NUMBER == "$file") {
283 print img_picto($langs->trans("Activated"), 'switch_on');
284 } else {
285 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>';
286 }
287 print '</td>';
288
289 $commande = new CommandeFournisseur($db);
290 $commande->initAsSpecimen();
291
292 // Info
293 $htmltooltip = '';
294 $htmltooltip .= ''.$langs->trans("Version").': <b>'.$module->getVersion().'</b><br>';
295 $nextval = $module->getNextValue($mysoc, $commande);
296 if ("$nextval" != $langs->trans("NotAvailable")) { // Keep " on nextval
297 $htmltooltip .= ''.$langs->trans("NextValue").': ';
298 if ($nextval) {
299 if (preg_match('/^Error/', $nextval) || $nextval == 'NotConfigured') {
300 $nextval = $langs->trans($nextval);
301 }
302 $htmltooltip .= $nextval.'<br>';
303 } else {
304 $htmltooltip .= $langs->trans($module->error).'<br>';
305 }
306 }
307
308 print '<td class="center">';
309 print $form->textwithpicto('', $htmltooltip, 1, 0);
310 print '</td>';
311
312 print '</tr>';
313 }
314 }
315 }
316 closedir($handle);
317 }
318 }
319}
320
321print '</table></div><br>';
322
323
324/*
325 * Documents models for supplier orders
326 */
327
328print load_fiche_titre($langs->trans("OrdersModelModule"), '', '');
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 = 'order_supplier'";
336$sql .= " AND entity = ".$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 array_push($def, $array[0]);
345 $i++;
346 }
347} else {
348 dol_print_error($db);
349}
350
351print '<div class="div-table-responsive-no-min">';
352print '<table class="noborder centpercent">'."\n";
353print '<tr class="liste_titre">'."\n";
354print '<td width="100">'.$langs->trans("Name").'</td>'."\n";
355print '<td>'.$langs->trans("Description").'</td>'."\n";
356print '<td align="center" width="60">'.$langs->trans("Status").'</td>'."\n";
357print '<td align="center" width="60">'.$langs->trans("Default").'</td>'."\n";
358print '<td align="center" width="40">'.$langs->trans("ShortInfo").'</td>';
359print '<td align="center" width="40">'.$langs->trans("Preview").'</td>';
360print '</tr>'."\n";
361
362clearstatcache();
363
364foreach ($dirmodels as $reldir) {
365 $realpath = $reldir."core/modules/supplier_order/doc";
366 $dir = dol_buildpath($realpath);
367
368 if (is_dir($dir)) {
369 $handle = opendir($dir);
370 if (is_resource($handle)) {
371 while (($file = readdir($handle)) !== false) {
372 if (preg_match('/\.modules\.php$/i', $file) && preg_match('/^(pdf_|doc_)/', $file)) {
373 $name = substr($file, 4, dol_strlen($file) - 16);
374 $classname = substr($file, 0, dol_strlen($file) - 12);
375
376 require_once $dir.'/'.$file;
377 $module = new $classname($db, new CommandeFournisseur($db));
378
379
380 print "<tr class=\"oddeven\">\n";
381 print "<td>";
382 print(empty($module->name) ? $name : $module->name);
383 print "</td>\n";
384 print "<td>\n";
385 require_once $dir.'/'.$file;
386 $module = new $classname($db, $specimenthirdparty);
387 if (method_exists($module, 'info')) {
388 print $module->info($langs);
389 } else {
390 print $module->description;
391 }
392 print "</td>\n";
393
394 // Active
395 if (in_array($name, $def)) {
396 print '<td class="center">'."\n";
397 if ($conf->global->COMMANDE_SUPPLIER_ADDON_PDF != "$name") {
398 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=del&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type=order_supplier">';
399 print img_picto($langs->trans("Enabled"), 'switch_on');
400 print '</a>';
401 } else {
402 print img_picto($langs->trans("Enabled"), 'switch_on');
403 }
404 print "</td>";
405 } else {
406 print '<td class="center">'."\n";
407 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=set&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type=order_supplier">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
408 print "</td>";
409 }
410
411 // Default
412 print '<td class="center">';
413 if ($conf->global->COMMANDE_SUPPLIER_ADDON_PDF == "$name") {
414 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=unsetdoc&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type=order_supplier" alt="'.$langs->trans("Disable").'">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
415 } else {
416 print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.urlencode($name).'&scan_dir='.urlencode($module->scandir).'&label='.urlencode($module->name).'&type=order_supplier" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
417 }
418 print '</td>';
419
420 // Info
421 $htmltooltip = ''.$langs->trans("Name").': '.$module->name;
422 $htmltooltip .= '<br>'.$langs->trans("Type").': '.($module->type ? $module->type : $langs->trans("Unknown"));
423 $htmltooltip .= '<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
424 $htmltooltip .= '<br>'.$langs->trans("Path").': '.preg_replace('/^\//', '', $realpath).'/'.$file;
425
426 $htmltooltip .= '<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
427 $htmltooltip .= '<br>'.$langs->trans("Logo").': '.yn($module->option_logo, 1, 1);
428 $htmltooltip .= '<br>'.$langs->trans("PaymentMode").': '.yn($module->option_modereg, 1, 1);
429 $htmltooltip .= '<br>'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg, 1, 1);
430 print '<td class="center">';
431 print $form->textwithpicto('', $htmltooltip, 1, 0);
432 print '</td>';
433 print '<td class="center">';
434 print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.urlencode($name).'">'.img_object($langs->trans("Preview"), 'pdf').'</a>';
435 print '</td>';
436
437 print "</tr>\n";
438 }
439 }
440
441 closedir($handle);
442 }
443 }
444}
445
446print '</table></div><br>';
447
448/*
449 * Other options
450 */
451
452print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
453print '<input type="hidden" name="token" value="'.newToken().'">';
454print '<input type="hidden" name="action" value="set_SUPPLIER_ORDER_OTHER">';
455
456print load_fiche_titre($langs->trans("OtherOptions"), '', '');
457
458print '<div class="div-table-responsive-no-min">';
459print '<table class="noborder centpercent">';
460print '<tr class="liste_titre">';
461print '<td>'.$langs->trans("Parameter").'</td>';
462print '<td align="center" width="60">'.$langs->trans("Value").'</td>';
463print '<td width="80">&nbsp;</td>';
464print "</tr>\n";
465
466print '<tr class="oddeven"><td>';
467print $form->textwithpicto($langs->trans("UseDoubleApproval"), $langs->trans("Use3StepsApproval"), 1, 'help').'<br>';
468print $langs->trans("IfSetToYesDontForgetPermission");
469print '</td><td>';
470print '<input type="text" size="6" name="SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED" value="'.getDolGlobalString("SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED").'">';
471print '</td><td class="right">';
472print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
473print "</td></tr>\n";
474
475
476// Ask for payment bank during supplier order
477/* Kept as hidden for the moment
478if (isModEnabled('banque')) {
479
480print '<tr class="oddeven"><td>';
481print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER").'</td><td>&nbsp;</td><td align="center">';
482if (!empty($conf->use_javascript_ajax))
483{
484print ajax_constantonoff('BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER');
485}
486else
487{
488if (empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER))
489{
490print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER&token='.newToken().'&value=1">'.img_picto($langs->trans("Disabled"),'switch_off').'</a>';
491}
492else
493{
494print '<a href="'.$_SERVER['PHP_SELF'].'?action=set_BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER&token='.newToken().'&value=0">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>';
495}
496}
497print '</td></tr>';
498}
499else
500{
501
502print '<tr class="oddeven"><td>';
503print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER").'</td><td>&nbsp;</td><td align="center">'.$langs->trans('NotAvailable').'</td></tr>';
504}
505*/
506
507$substitutionarray = pdf_getSubstitutionArray($langs, null, null, 2);
508$substitutionarray['__(AnyTranslationKey)__'] = $langs->trans("Translation");
509$htmltext = '<i>'.$langs->trans("AvailableVariables").':<br>';
510foreach ($substitutionarray as $key => $val) {
511 $htmltext .= $key.'<br>';
512}
513$htmltext .= '</i>';
514
515print '<tr class="oddeven"><td colspan="2">';
516print $form->textwithpicto($langs->trans("FreeLegalTextOnOrders"), $langs->trans("AddCRIfTooLong").'<br><br>'.$htmltext, 1, 'help', '', 0, 2, 'freetexttooltip').'<br>';
517$variablename = 'SUPPLIER_ORDER_FREE_TEXT';
518if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) {
519 print '<textarea name="'.$variablename.'" class="flat" cols="120">'.getDolGlobalString($variablename).'</textarea>';
520} else {
521 include_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
522 $doleditor = new DolEditor($variablename, getDolGlobalString($variablename), '', 80, 'dolibarr_notes');
523 print $doleditor->Create();
524}
525print '</td><td class="right">';
526print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
527print "</td></tr>\n";
528
529// Option to add a quality/validation step, on products, after reception.
530print '<tr class="oddeven">';
531print '<td>'.$langs->trans("UseDispatchStatus").'</td>';
532print '<td></td>';
533print '<td class="center">';
534if (isModEnabled('reception')) {
535 print '<span class="opacitymedium">'.$langs->trans("FeatureNotAvailableWithReceptionModule").'</span>';
536} else {
537 if ($conf->use_javascript_ajax) {
538 print ajax_constantonoff('SUPPLIER_ORDER_USE_DISPATCH_STATUS');
539 } else {
540 $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes"));
541 print $form->selectarray("SUPPLIER_ORDER_USE_DISPATCH_STATUS", $arrval, $conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS);
542 }
543}
544print "</td>\n";
545print "</tr>\n";
546
547print '</table></div><br>';
548
549print '</form>';
550
551
552/*
553* Notifications
554*/
555
556print load_fiche_titre($langs->trans("Notifications"), '', '');
557
558print '<div class="div-table-responsive-no-min">';
559print '<table class="noborder centpercent">';
560print '<tr class="liste_titre">';
561print '<td>'.$langs->trans("Parameter").'</td>';
562print '<td align="center" width="60"></td>';
563print '<td width="80">&nbsp;</td>';
564print "</tr>\n";
565
566print '<tr class="oddeven"><td colspan="2">';
567print $langs->trans("YouMayFindNotificationsFeaturesIntoModuleNotification").'<br>';
568print '</td><td class="right">';
569print "</td></tr>\n";
570
571print '</table>';
572print '</div>';
573
574// End of page
575llxFooter();
576$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.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:56
llxFooter()
Empty footer.
Definition wrapper.php:70
Class to manage predefined suppliers products.
Class to manage a WYSIWYG editor.
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...)
Description and activation class for module Fournisseur.
supplierorder_admin_prepare_head()
Return array head with list of tabs to view object informations.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
getDolGlobalString($key, $default='')
Return 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:758
$conf db name
Only used if Module[ID]Name translation string is not found.
Definition repair.php:123
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.