dolibarr  19.0.0-dev
bank.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net>
3  * Copyright (C) 2010-2016 Juanjo Menent <jmenent@2byte.es>
4  * Copyright (C) 2013-2018 Philippe Grand <philippe.grand@atoo-net.com>
5  * Copyright (C) 2015 Jean-Fran├žois Ferry <jfefe@aternatik.fr>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <https://www.gnu.org/licenses/>.
19  */
20 
21 
27 require '../main.inc.php';
28 require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
29 require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php';
30 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php';
33 
34 // Load translation files required by the page
35 $langs->loadLangs(array("admin", "companies", "bills", "other", "banks"));
36 
37 if (!$user->admin) {
39 }
40 
41 $action = GETPOST('action', 'aZ09');
42 $actionsave = GETPOST('save', 'alpha');
43 $value = GETPOST('value', 'alpha');
44 $label = GETPOST('label', 'alpha');
45 $scandir = GETPOST('scan_dir', 'alpha');
46 $type = 'bankaccount';
47 
48 
49 /*
50  * Actions
51  */
52 
53 // Order display of bank account
54 if ($action == 'setbankorder') {
55  if (dolibarr_set_const($db, "BANK_SHOW_ORDER_OPTION", GETPOST('value', 'alpha'), 'chaine', 0, '', $conf->entity) > 0) {
56  } else {
57  dol_print_error($db);
58  }
59 }
60 
61 // Auto report last num releve on conciliate
62 if ($action == 'setreportlastnumreleve') {
63  if (dolibarr_set_const($db, "BANK_REPORT_LAST_NUM_RELEVE", 1, 'chaine', 0, '', $conf->entity) > 0) {
64  } else {
65  dol_print_error($db);
66  }
67 } elseif ($action == 'unsetreportlastnumreleve') {
68  if (dolibarr_set_const($db, "BANK_REPORT_LAST_NUM_RELEVE", 0, 'chaine', 0, '', $conf->entity) > 0) {
69  } else {
70  dol_print_error($db);
71  }
72 }
73 
74 // Colorize movements
75 if ($action == 'setbankcolorizemovement') {
76  if (dolibarr_set_const($db, "BANK_COLORIZE_MOVEMENT", 1, 'chaine', 0, '', $conf->entity) > 0) {
77  } else {
78  dol_print_error($db);
79  }
80 } elseif ($action == 'unsetbankcolorizemovement') {
81  if (dolibarr_set_const($db, "BANK_COLORIZE_MOVEMENT", 0, 'chaine', 0, '', $conf->entity) > 0) {
82  } else {
83  dol_print_error($db);
84  }
85 }
86 
87 if ($actionsave) {
88  $db->begin();
89 
90  $i = 1; $errorsaved = 0;
91  $error = 0;
92 
93  // Save colors
94  while ($i <= 2) {
95  $color = GETPOST('BANK_COLORIZE_MOVEMENT_COLOR'.$i, 'alpha');
96  if ($color == '-1') {
97  $color = '';
98  }
99 
100  $res = dolibarr_set_const($db, 'BANK_COLORIZE_MOVEMENT_COLOR'.$i, $color, 'chaine', 0, '', $conf->entity);
101  if (!($res > 0)) {
102  $error++;
103  }
104  $i++;
105  }
106 
107  if (!$error) {
108  $db->commit();
109  setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
110  } else {
111  $db->rollback();
112  if (empty($errorsaved)) {
113  setEventMessages($langs->trans("Error"), null, 'errors');
114  }
115  }
116 }
117 
118 
119 if ($action == 'specimen') {
120  $modele = GETPOST('module', 'alpha');
121 
122  if ($modele == 'sepamandate') {
123  $object = new CompanyBankAccount($db);
124  } else {
125  $object = new Account($db);
126  }
127  $object->initAsSpecimen();
128 
129  // Search template files
130  $file = '';
131  $classname = '';
132  $filefound = 0;
133  $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
134  foreach ($dirmodels as $reldir) {
135  $file = dol_buildpath($reldir."core/modules/bank/doc/pdf_".$modele.".modules.php", 0);
136  if (file_exists($file)) {
137  $filefound = 1;
138  $classname = "pdf_".$modele;
139  break;
140  }
141  }
142 
143  if ($filefound) {
144  require_once $file;
145 
146  $module = new $classname($db);
147 
148  if ($module->write_file($object, $langs) > 0) {
149  header("Location: ".DOL_URL_ROOT."/document.php?modulepart=bank&file=SPECIMEN.pdf");
150  return;
151  } else {
152  setEventMessages($module->error, null, 'errors');
153  dol_syslog($module->error, LOG_ERR);
154  }
155  } else {
156  setEventMessages($langs->trans("ErrorModuleNotFound"), null, 'errors');
157  dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR);
158  }
159 }
160 
161 // Activate a model
162 if ($action == 'set') {
163  $ret = addDocumentModel($value, $type, $label, $scandir);
164 } elseif ($action == 'del') {
165  $ret = delDocumentModel($value, $type);
166  if ($ret > 0) {
167  if ($conf->global->BANKADDON_PDF == "$value") {
168  dolibarr_del_const($db, 'BANKADDON_PDF', $conf->entity);
169  }
170  }
171 } elseif ($action == 'setdoc') {
172  // Set default model
173  if (dolibarr_set_const($db, "BANKADDON_PDF", $value, 'chaine', 0, '', $conf->entity)) {
174  // The constant that was read before the new set
175  // We therefore requires a variable to have a coherent view
176  $conf->global->BANKADDON_PDF = $value;
177  }
178 
179  // On active le modele
180  $ret = delDocumentModel($value, $type);
181  if ($ret > 0) {
182  $ret = addDocumentModel($value, $type, $label, $scandir);
183  }
184 }
185 
186 
187 
188 /*
189  * View
190  */
191 
192 $form = new Form($db);
193 $formother = new FormOther($db);
194 
195 $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
196 
197 llxHeader("", $langs->trans("BankSetupModule"));
198 
199 $linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
200 print load_fiche_titre($langs->trans("BankSetupModule"), $linkback, 'title_setup');
201 
202 print '<form name="bankmovementcolorconfig" action="'.$_SERVER["PHP_SELF"].'" method="post">';
203 print '<input type="hidden" name="token" value="'.newToken().'">';
204 print '<input type="hidden" name="action" value="save">';
205 
206 $head = bank_admin_prepare_head(null);
207 print dol_get_fiche_head($head, 'general', $langs->trans("BankSetupModule"), -1, 'account');
208 
209 //Show bank account order
210 print load_fiche_titre($langs->trans("BankOrderShow"), '', '');
211 
212 print '<table class="noborder centpercent">';
213 print '<tr class="liste_titre">';
214 print '<td width="140">'.$langs->trans("Name").'</td>';
215 print '<td>'.$langs->trans("Description").'</td>';
216 print '<td>'.$langs->trans("Example").'</td>';
217 print '<td class="center">'.$langs->trans("Status").'</td>';
218 print '<td class="center" width="60">&nbsp;</td>';
219 print "</tr>\n";
220 
221 $bankorder[0][0] = $langs->trans("BankOrderGlobal");
222 $bankorder[0][1] = $langs->trans("BankOrderGlobalDesc");
223 $bankorder[0][2] = 'BankCode DeskCode BankAccountNumber BankAccountNumberKey';
224 $bankorder[1][0] = $langs->trans("BankOrderES");
225 $bankorder[1][1] = $langs->trans("BankOrderESDesc");
226 $bankorder[1][2] = 'BankCode DeskCode BankAccountNumberKey BankAccountNumber';
227 
228 $i = 0;
229 
230 $nbofbank = count($bankorder);
231 while ($i < $nbofbank) {
232  print '<tr class="oddeven">';
233  print '<td>'.$bankorder[$i][0]."</td><td>\n";
234  print $bankorder[$i][1];
235  print '</td>';
236  print '<td class="nowrap">';
237  $tmparray = explode(' ', $bankorder[$i][2]);
238  foreach ($tmparray as $key => $val) {
239  if ($key > 0) {
240  print ', ';
241  }
242  print $langs->trans($val);
243  }
244  print "</td>\n";
245 
246  if ($conf->global->BANK_SHOW_ORDER_OPTION == $i) {
247  print '<td class="center">';
248  print img_picto($langs->trans("Activated"), 'on');
249  print '</td>';
250  } else {
251  print '<td class="center"><a href="'.$_SERVER['PHP_SELF'].'?action=setbankorder&token='.newToken().'&value='.$i.'">';
252  print img_picto($langs->trans("Disabled"), 'off');
253  print '</a></td>';
254  }
255  print '<td>&nbsp;</td>';
256  print '</tr>'."\n";
257  $i++;
258 }
259 
260 print '</table>'."\n";
261 
262 print '<br><br>';
263 
264 
265 /*
266  * Document templates generators
267  */
268 
269 print load_fiche_titre($langs->trans("BankAccountModelModule"), '', '');
270 
271 // Load array def with activated templates
272 $def = array();
273 $sql = "SELECT nom";
274 $sql .= " FROM ".MAIN_DB_PREFIX."document_model";
275 $sql .= " WHERE type = '".$db->escape($type)."'";
276 $sql .= " AND entity = ".$conf->entity;
277 $resql = $db->query($sql);
278 if ($resql) {
279  $i = 0;
280  $num_rows = $db->num_rows($resql);
281  while ($i < $num_rows) {
282  $array = $db->fetch_array($resql);
283  array_push($def, $array[0]);
284  $i++;
285  }
286 } else {
287  dol_print_error($db);
288 }
289 
290 print "<table class=\"noborder\" width=\"100%\">\n";
291 print "<tr class=\"liste_titre\">\n";
292 print '<td>'.$langs->trans("Name").'</td>';
293 print '<td>'.$langs->trans("Description").'</td>';
294 print '<td class="center" width="60">'.$langs->trans("Status")."</td>\n";
295 print '<td class="center" width="60">'.$langs->trans("Default")."</td>\n";
296 print '<td class="center" width="38">'.$langs->trans("ShortInfo").'</td>';
297 print '<td class="center" width="38">'.$langs->trans("Preview").'</td>';
298 print "</tr>\n";
299 
300 clearstatcache();
301 
302 foreach ($dirmodels as $reldir) {
303  foreach (array('', '/doc') as $valdir) {
304  $dir = dol_buildpath($reldir."core/modules/bank".$valdir);
305 
306  if (is_dir($dir)) {
307  $handle = opendir($dir);
308  if (is_resource($handle)) {
309  while (($file = readdir($handle)) !== false) {
310  $filelist[] = $file;
311  }
312  closedir($handle);
313  arsort($filelist);
314 
315  foreach ($filelist as $file) {
316  if (preg_match('/\.modules\.php$/i', $file) && preg_match('/^(pdf_|doc_)/', $file)) {
317  if (file_exists($dir.'/'.$file)) {
318  $name = substr($file, 4, dol_strlen($file) - 16);
319  $classname = substr($file, 0, dol_strlen($file) - 12);
320 
321  require_once $dir.'/'.$file;
322  $module = new $classname($db);
323 
324  $modulequalified = 1;
325  if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) {
326  $modulequalified = 0;
327  }
328  if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) {
329  $modulequalified = 0;
330  }
331 
332  if ($modulequalified) {
333  print '<tr class="oddeven"><td width="100">';
334  print(empty($module->name) ? $name : $module->name);
335  print "</td><td>\n";
336  if (method_exists($module, 'info')) {
337  print $module->info($langs);
338  } else {
339  print $module->description;
340  }
341  print '</td>';
342 
343  // Active
344  if (in_array($name, $def)) {
345  print '<td class="center">'."\n";
346  print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=del&token='.newToken().'&value='.$name.'">';
347  print img_picto($langs->trans("Enabled"), 'switch_on');
348  print '</a>';
349  print '</td>';
350  } else {
351  print '<td class="center">'."\n";
352  print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=set&value='.$name.'&token='.newToken().'&can_dir='.$module->scandir.'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
353  print "</td>";
354  }
355 
356  // Default
357  print '<td class="center">';
358  if ($conf->global->BANKADDON_PDF == $name) {
359  print img_picto($langs->trans("Default"), 'on');
360  } else {
361  print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=setdoc&token='.newToken().'&value='.$name.'&scan_dir='.$module->scandir.'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
362  }
363  print '</td>';
364 
365  // Info
366  $htmltooltip = ''.$langs->trans("Name").': '.$module->name;
367  $htmltooltip .= '<br>'.$langs->trans("Type").': '.($module->type ? $module->type : $langs->trans("Unknown"));
368  if ($module->type == 'pdf') {
369  $htmltooltip .= '<br>'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur;
370  }
371  $htmltooltip .= '<br><br><u>'.$langs->trans("FeaturesSupported").':</u>';
372  $htmltooltip .= '<br>'.$langs->trans("Logo").': '.yn($module->option_logo, 1, 1);
373  //$htmltooltip .= '<br>' . $langs->trans("PaymentMode") . ': ' . yn($module->option_modereg, 1, 1);
374  //$htmltooltip .= '<br>' . $langs->trans("PaymentConditions") . ': ' . yn($module->option_condreg, 1, 1);
375  $htmltooltip .= '<br>'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang, 1, 1);
376  // $htmltooltip.='<br>'.$langs->trans("Discounts").': '.yn($module->option_escompte,1,1);
377  // $htmltooltip.='<br>'.$langs->trans("CreditNote").': '.yn($module->option_credit_note,1,1);
378  //$htmltooltip .= '<br>' . $langs->trans("WatermarkOnDraftOrders") . ': ' . yn($module->option_draft_watermark, 1, 1);
379 
380  print '<td class="center">';
381  print $form->textwithpicto('', $htmltooltip, 1, 0);
382  print '</td>';
383 
384  // Preview
385  print '<td class="center">';
386  if ($module->type == 'pdf') {
387  print '<a href="'.$_SERVER["PHP_SELF"].'?action=specimen&module='.$name.'">'.img_object($langs->trans("Preview"), 'pdf').'</a>';
388  } else {
389  print img_object($langs->trans("PreviewNotAvailable"), 'generic');
390  }
391  print '</td>';
392 
393  print "</tr>\n";
394  }
395  }
396  }
397  }
398  }
399  }
400  }
401 }
402 print '</table>';
403 //}
404 
405 print '<br><br>';
406 
407 print load_fiche_titre($langs->trans("BankColorizeMovement"), '', '');
408 print '<table class="noborder centpercent">';
409 print "<tr class=\"liste_titre\">\n";
410 print '<td colspan="4">'.$langs->trans("Name").'</td>';
411 print '<td align="center" width="100">'.$langs->trans("Value").'</td>'."\n";
412 print "</tr>\n";
413 
414 print '<tr class="oddeven"><td colspan="4" width="100">';
415 print $langs->trans('BankColorizeMovementDesc');
416 print "</td>";
417 // Active
418 if ($conf->global->BANK_COLORIZE_MOVEMENT) {
419  print '<td class="center">'."\n";
420  print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=unsetbankcolorizemovement&token='.newToken().'">';
421  print img_picto($langs->trans("Enabled"), 'switch_on');
422  print '</a>';
423  print '</td>';
424 } else {
425  print '<td class="center">'."\n";
426  print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=setbankcolorizemovement&token='.newToken().'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
427  print "</td>";
428 }
429 
430 print "</tr>\n";
431 
432 if (!empty($conf->global->BANK_COLORIZE_MOVEMENT)) {
433  $i = 1;
434  while ($i <= 2) {
435  $key = $i;
436  $color = 'BANK_COLORIZE_MOVEMENT_COLOR'.$key;
437 
438  print '<tr class="oddeven">';
439 
440  // Label
441  print '<td colspan="4" width="180" class="nowrap">'.$langs->trans("BankColorizeMovementName".$key)."</td>";
442  // Color
443  print '<td class="nowrap right">';
444  print $formother->selectColor((GETPOST("BANK_COLORIZE_MOVEMENT_COLOR".$key) ?GETPOST("BANK_COLORIZE_MOVEMENT_COLOR".$key) : $conf->global->$color), "BANK_COLORIZE_MOVEMENT_COLOR".$key, 'bankmovementcolorconfig', 1, '', 'right hideifnotset');
445  print '</td>';
446  print "</tr>";
447  $i++;
448  }
449 }
450 print '</table>';
451 
452 print '<br><br>';
453 
454 
455 /*
456  * Document templates generators
457  */
458 
459 print load_fiche_titre($langs->trans("Other"), '', '');
460 
461 print "<table class=\"noborder\" width=\"100%\">\n";
462 print "<tr class=\"liste_titre\">\n";
463 print '<td>'.$langs->trans("Name").'</td>';
464 print '<td>'.$langs->trans("Description").'</td>';
465 print '<td class="center" width="60">'.$langs->trans("Status")."</td>\n";
466 print "</tr>\n";
467 
468 print '<tr class="oddeven"><td width="100">';
469 print $langs->trans('AccountStatement');
470 print "</td><td>\n";
471 print $langs->trans('AutoReportLastAccountStatement');
472 print '</td>';
473 // Active
474 if ($conf->global->BANK_REPORT_LAST_NUM_RELEVE) {
475  print '<td class="center">'."\n";
476  print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=unsetreportlastnumreleve&token='.newToken().'">';
477  print img_picto($langs->trans("Enabled"), 'switch_on');
478  print '</a>';
479  print '</td>';
480 } else {
481  print '<td class="center">'."\n";
482  print '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=setreportlastnumreleve&token='.newToken().'">'.img_picto($langs->trans("Disabled"), 'switch_off').'</a>';
483  print "</td>";
484 }
485 
486 print "</tr>\n";
487 print '</table>';
488 print dol_get_fiche_end();
489 
490 print $form->buttonsSaveCancel("Save", '');
491 
492 print "</form>\n";
493 
494 // End of page
495 llxFooter();
496 $db->close();
yn
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
Definition: functions.lib.php:6824
llxFooter
llxFooter()
Empty footer.
Definition: wrapper.php:70
dolibarr_del_const
dolibarr_del_const($db, $name, $entity=1)
Delete a constant.
Definition: admin.lib.php:562
bank_admin_prepare_head
bank_admin_prepare_head($object)
Prepare array with list of tabs.
Definition: bank.lib.php:132
load_fiche_titre
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
Definition: functions.lib.php:5477
GETPOST
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
Definition: functions.lib.php:609
dol_print_error
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
Definition: functions.lib.php:5107
dol_buildpath
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
Definition: functions.lib.php:1158
$form
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
FormOther
Classe permettant la generation de composants html autre Only common components are here.
Definition: html.formother.class.php:39
CompanyBankAccount
Class to manage bank accounts description of third parties.
Definition: companybankaccount.class.php:34
img_picto
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
Definition: functions.lib.php:4135
llxHeader
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
delDocumentModel
delDocumentModel($name, $type)
Delete document model used by doc generator.
Definition: admin.lib.php:1949
dol_syslog
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
Definition: functions.lib.php:1741
setEventMessages
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
Definition: functions.lib.php:8673
$sql
if(isModEnabled('facture') && $user->hasRight('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') && $user->hasRight('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)) $sql
Social contributions to pay.
Definition: index.php:746
dol_strlen
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
Definition: functions.lib.php:3997
newToken
newToken()
Return the value of token currently saved into session with name 'newtoken'.
Definition: functions.lib.php:11654
dol_get_fiche_end
dol_get_fiche_end($notab=0)
Return tab footer of a card.
Definition: functions.lib.php:2177
dol_get_fiche_head
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.
Definition: functions.lib.php:1979
dolibarr_set_const
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).
Definition: admin.lib.php:638
addDocumentModel
addDocumentModel($name, $type, $label='', $description='')
Add document model used by doc generator.
Definition: admin.lib.php:1918
Form
Class to manage generation of HTML components Only common components must be here.
Definition: html.form.class.php:53
img_object
img_object($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0)
Show a picto called object_picto (generic function)
Definition: functions.lib.php:4473
accessforbidden
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.
Definition: security.lib.php:1169
Account
Class to manage bank accounts.
Definition: account.class.php:40