dolibarr  19.0.0-dev
card.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
3  * Copyright (C) 2018 Alexandre Spangaro <aspangaro@open-dsi.fr>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17  */
18 
25 // Load Dolibarr environment
26 require '../main.inc.php';
27 require_once DOL_DOCUMENT_ROOT.'/core/lib/asset.lib.php';
28 require_once DOL_DOCUMENT_ROOT.'/asset/class/asset.class.php';
29 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
30 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
31 
32 // Load translation files required by the page
33 $langs->loadLangs(array("assets", "other"));
34 
35 // Get parameters
36 $id = GETPOST('id', 'int');
37 $ref = GETPOST('ref', 'alpha');
38 $action = GETPOST('action', 'aZ09');
39 $confirm = GETPOST('confirm', 'alpha');
40 $cancel = GETPOST('cancel', 'aZ09');
41 $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'assetcard'; // To manage different context of search
42 $backtopage = GETPOST('backtopage', 'alpha');
43 $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha');
44 
45 // Initialize technical objects
46 $object = new Asset($db);
47 $extrafields = new ExtraFields($db);
48 $diroutputmassaction = $conf->asset->dir_output.'/temp/massgeneration/'.$user->id;
49 $hookmanager->initHooks(array('assetcard', 'globalcard')); // Note that conf->hooks_modules contains array
50 
51 // Fetch optionals attributes and labels
52 $extrafields->fetch_name_optionals_label($object->table_element);
53 
54 $search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');
55 
56 // Initialize array of search criterias
57 $search_all = GETPOST("search_all", 'alpha');
58 $search = array();
59 foreach ($object->fields as $key => $val) {
60  if (GETPOST('search_'.$key, 'alpha')) {
61  $search[$key] = GETPOST('search_'.$key, 'alpha');
62  }
63 }
64 
65 if (empty($action) && empty($id) && empty($ref)) {
66  $action = 'view';
67 }
68 
69 // Load object
70 include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once.
71 
72 $permissiontoread = $user->hasRight('asset', 'read');
73 $permissiontoadd = $user->hasRight('asset', 'write'); // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
74 $permissiontodelete = $user->hasRight('asset', 'delete') || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT);
75 $permissionnote = $user->hasRight('asset', 'write'); // Used by the include of actions_setnotes.inc.php
76 $permissiondellink = $user->hasRight('asset', 'write'); // Used by the include of actions_dellink.inc.php
77 $upload_dir = $conf->asset->multidir_output[isset($object->entity) ? $object->entity : 1];
78 
79 // Security check (enable the most restrictive one)
80 if ($user->socid > 0) accessforbidden();
81 if ($user->socid > 0) $socid = $user->socid;
82 $isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0);
83 restrictedArea($user, $object->element, $object->id, $object->table_element, '', 'fk_soc', 'rowid', $isdraft);
84 if (!isModEnabled('asset')) accessforbidden();
85 if (!$permissiontoread) accessforbidden();
86 
87 
88 /*
89  * Actions
90  */
91 
92 $parameters = array();
93 $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
94 if ($reshook < 0) {
95  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
96 }
97 
98 if (empty($reshook)) {
99  $error = 0;
100 
101  $backurlforlist = DOL_URL_ROOT.'/asset/list.php';
102 
103  if (empty($backtopage) || ($cancel && empty($id))) {
104  if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) {
105  if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) {
106  $backtopage = $backurlforlist;
107  } else {
108  $backtopage = DOL_URL_ROOT.'/asset/card.php?id='.((!empty($id) && $id > 0) ? $id : '__ID__');
109  }
110  }
111  }
112 
113  $object->oldcopy = dol_clone($object);
114  $triggermodname = 'ASSET_MODIFY'; // Name of trigger action code to execute when we modify record
115 
116  // Action dispose object
117  if ($action == 'confirm_disposal' && $confirm == 'yes' && $permissiontoadd) {
118  $object->disposal_date = dol_mktime(12, 0, 0, GETPOST('disposal_datemonth', 'int'), GETPOST('disposal_dateday', 'int'), GETPOST('disposal_dateyear', 'int')); // for date without hour, we use gmt
119  $object->disposal_amount_ht = GETPOST('disposal_amount', 'int');
120  $object->fk_disposal_type = GETPOST('fk_disposal_type', 'int');
121  $disposal_invoice_id = GETPOST('disposal_invoice_id', 'int');
122  $object->disposal_depreciated = ((GETPOST('disposal_depreciated') == '1' || GETPOST('disposal_depreciated') == 'on') ? 1 : 0);
123  $object->disposal_subject_to_vat = ((GETPOST('disposal_subject_to_vat') == '1' || GETPOST('disposal_subject_to_vat') == 'on') ? 1 : 0);
124 
125  $result = $object->dispose($user, $disposal_invoice_id);
126  if ($result < 0) {
127  setEventMessages($object->error, $object->errors, 'errors');
128  }
129  $action = '';
130  } elseif ($action == "add") {
131  $object->supplier_invoice_id = GETPOST('supplier_invoice_id', 'int');
132  }
133 
134  // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen
135  include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php';
136 
137  // Actions when linking object each other
138  include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php';
139 
140  // Actions when printing a doc from card
141  include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php';
142 
143  // Action to move up and down lines of object
144  //include DOL_DOCUMENT_ROOT.'/core/actions_lineupdown.inc.php';
145 
146  // Action to build doc
147  include DOL_DOCUMENT_ROOT.'/core/actions_builddoc.inc.php';
148 
149  // Actions to send emails
150  $triggersendname = 'ASSET_SENTBYMAIL';
151  $autocopy = 'MAIN_MAIL_AUTOCOPY_ASSET_TO';
152  $trackid = 'asset'.$object->id;
153  include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';
154 }
155 
156 
157 /*
158  * View
159  *
160  */
161 
162 $form = new Form($db);
163 $formfile = new FormFile($db);
164 
165 $title = $langs->trans("Asset").' - '.$langs->trans("Card");
166 $help_url = '';
167 llxHeader('', $title, $help_url);
168 
169 // Part to create
170 if ($action == 'create') {
171  print load_fiche_titre($langs->trans("NewObject", $langs->transnoentitiesnoconv("Asset")), '', 'object_'.$object->picto);
172 
173  print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
174  print '<input type="hidden" name="token" value="'.newToken().'">';
175  print '<input type="hidden" name="action" value="add">';
176  if ($backtopage) {
177  print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
178  }
179  if ($backtopageforcancel) {
180  print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
181  }
182  if (GETPOSTISSET('supplier_invoice_id')) {
183  $object->fields['supplier_invoice_id'] = array('type' => 'integer:FactureFournisseur:fourn/class/fournisseur.facture.class.php:1:entity IN (__SHARED_ENTITIES__)', 'label' => 'SupplierInvoice', 'enabled' => '1', 'noteditable' => '1', 'position' => 280, 'notnull' => 0, 'visible' => 1, 'index' => 1, 'validate' => '1',);
184  print '<input type="hidden" name="supplier_invoice_id" value="' . GETPOST('supplier_invoice_id', 'int') . '">';
185  }
186 
187  print dol_get_fiche_head(array(), '');
188 
189  // Set some default values
190  //if (! GETPOSTISSET('fieldname')) $_POST['fieldname'] = 'myvalue';
191 
192  print '<table class="border centpercent tableforfieldcreate">'."\n";
193 
194  // Common attributes
195  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php';
196 
197  // Other attributes
198  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
199 
200  print '</table>'."\n";
201 
202  print dol_get_fiche_end();
203 
204  print $form->buttonsSaveCancel("Create");
205 
206  print '</form>';
207 
208  //dol_set_focus('input[name="ref"]');
209 }
210 
211 // Part to edit record
212 if (($id || $ref) && $action == 'edit') {
213  print load_fiche_titre($langs->trans("Asset"), '', 'object_'.$object->picto);
214 
215  print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
216  print '<input type="hidden" name="token" value="'.newToken().'">';
217  print '<input type="hidden" name="action" value="update">';
218  print '<input type="hidden" name="id" value="'.$object->id.'">';
219  if ($backtopage) {
220  print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
221  }
222  if ($backtopageforcancel) {
223  print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
224  }
225 
226  print dol_get_fiche_head();
227 
228  print '<table class="border centpercent tableforfieldedit">'."\n";
229 
230  // Common attributes
231  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php';
232 
233  // Other attributes
234  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php';
235 
236  print '</table>';
237 
238  print dol_get_fiche_end();
239 
240  print $form->buttonsSaveCancel();
241 
242  print '</form>';
243 }
244 
245 // Part to show record
246 if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) {
247  $res = $object->fetch_optionals();
248 
249  $head = assetPrepareHead($object);
250  print dol_get_fiche_head($head, 'card', $langs->trans("Asset"), -1, $object->picto);
251 
252  $formconfirm = '';
253 
254  // Confirmation to delete
255  if ($action == 'delete') {
256  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteAsset'), $langs->trans('ConfirmDeleteObject'), 'confirm_delete', '', 0, 1);
257  } elseif ($action == 'disposal') {
258  // Disposal
259  $langs->load('bills');
260 
261  $disposal_date = dol_mktime(12, 0, 0, GETPOST('disposal_datemonth', 'int'), GETPOST('disposal_dateday', 'int'), GETPOST('disposal_dateyear', 'int')); // for date without hour, we use gmt
262  $disposal_amount = GETPOST('disposal_amount', 'int');
263  $fk_disposal_type = GETPOST('fk_disposal_type', 'int');
264  $disposal_invoice_id = GETPOST('disposal_invoice_id', 'int');
265  $disposal_depreciated = GETPOSTISSET('disposal_depreciated') ? GETPOST('disposal_depreciated') : 1;
266  $disposal_depreciated = !empty($disposal_depreciated) ? 1 : 0;
267  $disposal_subject_to_vat = GETPOSTISSET('disposal_subject_to_vat') ? GETPOST('disposal_subject_to_vat') : 1;
268  $disposal_subject_to_vat = !empty($disposal_subject_to_vat) ? 1 : 0;
269 
270  $object->fields['fk_disposal_type']['visible'] = 1;
271  $disposal_type_form = $object->showInputField(null, 'fk_disposal_type', $fk_disposal_type, '', '', '', 0);
272  $object->fields['fk_disposal_type']['visible'] = -2;
273 
274  $object->fields['disposal_invoice_id'] = array('type' => 'integer:Facture:compta/facture/class/facture.class.php::entity IN (__SHARED_ENTITIES__)', 'enabled' => '1', 'notnull' => 1, 'visible' => 1, 'index' => 1, 'validate' => '1',);
275  $disposal_invoice_form = $object->showInputField(null, 'disposal_invoice_id', $disposal_invoice_id, '', '', '', 0);
276  unset($object->fields['disposal_invoice_id']);
277 
278  // Create an array for form
279  $formquestion = array(
280  array('type' => 'date', 'name' => 'disposal_date', 'tdclass' => 'fieldrequired', 'label' => $langs->trans("AssetDisposalDate"), 'value' => $disposal_date),
281  array('type' => 'text', 'name' => 'disposal_amount', 'tdclass' => 'fieldrequired', 'label' => $langs->trans("AssetDisposalAmount"), 'value' => $disposal_amount),
282  array('type' => 'other', 'name' => 'fk_disposal_type', 'tdclass' => 'fieldrequired', 'label' => $langs->trans("AssetDisposalType"), 'value' => $disposal_type_form),
283  array('type' => 'other', 'name' => 'disposal_invoice_id', 'label' => $langs->trans("InvoiceCustomer"), 'value' => $disposal_invoice_form),
284  array('type' => 'checkbox', 'name' => 'disposal_depreciated', 'label' => $langs->trans("AssetDisposalDepreciated"), 'value' => $disposal_depreciated),
285  array('type' => 'checkbox', 'name' => 'disposal_subject_to_vat', 'label' => $langs->trans("AssetDisposalSubjectToVat"), 'value' => $disposal_subject_to_vat),
286  );
287  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('AssetDisposal'), $langs->trans('AssetConfirmDisposalAsk', $object->ref . ' - ' . $object->label), 'confirm_disposal', $formquestion, 'yes', 1);
288  } elseif ($action == 'reopen') {
289  // Re-open
290  // Create an array for form
291  $formquestion = array();
292  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ReOpen'), $langs->trans('AssetConfirmReOpenAsk', $object->ref), 'confirm_reopen', $formquestion, 'yes', 1);
293  }
294  // Clone confirmation
295  /* elseif ($action == 'clone') {
296  // Create an array for form
297  $formquestion = array();
298  $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneAsk', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
299  }*/
300 
301  // Call Hook formConfirm
302  $parameters = array('formConfirm' => $formconfirm);
303  $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
304  if (empty($reshook)) {
305  $formconfirm .= $hookmanager->resPrint;
306  } elseif ($reshook > 0) {
307  $formconfirm = $hookmanager->resPrint;
308  }
309 
310  // Print form confirm
311  print $formconfirm;
312 
313 
314  // Object card
315  // ------------------------------------------------------------
316  $linkback = '<a href="'.DOL_URL_ROOT.'/asset/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>';
317 
318  $morehtmlref = '<div class="refidno">';
319  $morehtmlref .= '</div>';
320 
321 
322  dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
323 
324 
325  print '<div class="fichecenter">';
326  print '<div class="fichehalfleft">';
327  print '<div class="underbanner clearboth"></div>';
328  print '<table class="border centpercent tableforfield">'."\n";
329 
330  // Common attributes
331  $keyforbreak='date_acquisition'; // We change column just before this field
332  //unset($object->fields['fk_project']); // Hide field already shown in banner
333  //unset($object->fields['fk_soc']); // Hide field already shown in banner
334  include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
335 
336  // Other attributes. Fields from hook formObjectOptions and Extrafields.
337  include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
338 
339  print '</table>';
340  print '</div>';
341  print '</div>';
342 
343  print '<div class="clearboth"></div>';
344 
345  print dol_get_fiche_end();
346 
347  // Buttons for actions
348  if ($action != 'presend' && $action != 'editline') {
349  print '<div class="tabsAction">' . "\n";
350  $parameters = array();
351  $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
352  if ($reshook < 0) {
353  setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
354  }
355 
356  if (empty($reshook)) {
357  // Send
358  if (empty($user->socid)) {
359  print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=presend&mode=init&token=' . newToken() . '#formmailbeforetitle');
360  }
361 
362  if ($object->status == $object::STATUS_DRAFT) {
363  print dolGetButtonAction($langs->trans('Modify'), '', 'default', $_SERVER["PHP_SELF"] . '?id=' . $object->id . '&action=edit&token=' . newToken(), '', $permissiontoadd);
364  }
365 
366  // Clone
367  //print dolGetButtonAction($langs->trans('ToClone'), '', 'default', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=clone&token=' . newToken(), '', false && $permissiontoadd);
368 
369  if ($object->status == $object::STATUS_DRAFT) {
370  print dolGetButtonAction($langs->trans('AssetDisposal'), '', 'default', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=disposal&token=' . newToken(), '', $permissiontoadd);
371  } else {
372  print dolGetButtonAction($langs->trans('ReOpen'), '', 'default', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=reopen&token=' . newToken(), '', $permissiontoadd);
373  }
374 
375  // Delete (need delete permission, or if draft, just need create/modify permission)
376  print dolGetButtonAction($langs->trans('Delete'), '', 'delete', $_SERVER['PHP_SELF'] . '?id=' . $object->id . '&action=delete&token=' . newToken(), '', $permissiontodelete || ($object->status == $object::STATUS_DRAFT && $permissiontoadd));
377  }
378  print '</div>' . "\n";
379  }
380 
381  // Select mail models is same action as presend
382  if (GETPOST('modelselected')) {
383  $action = 'presend';
384  }
385 
386  if ($action != 'presend') {
387  print '<div class="fichecenter"><div class="fichehalfleft">';
388  print '<a name="builddoc"></a>'; // ancre
389 
390  $includedocgeneration = 0;
391 
392  // Documents
393  if ($includedocgeneration) {
394  $objref = dol_sanitizeFileName($object->ref);
395  $relativepath = $objref.'/'.$objref.'.pdf';
396  $filedir = $conf->asset->dir_output.'/'.$objref;
397  $urlsource = $_SERVER["PHP_SELF"]."?id=".$object->id;
398  $genallowed = $user->hasRight('asset', 'read'); // If you can read, you can build the PDF to read content
399  $delallowed = $user->hasRight('asset', 'write'); // If you can create/edit, you can remove a file on card
400  print $formfile->showdocuments('asset:Asset', $objref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 1, 0, 0, 28, 0, '', '', '', $langs->defaultlang);
401  }
402 
403  // Show links to link elements
404  $linktoelem = $form->showLinkToObjectBlock($object, null, array('asset'));
405  $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem);
406 
407 
408  print '</div><div class="fichehalfright">';
409 
410  $morehtmlcenter = '';
411  $MAXEVENT = 10;
412 
413  $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/asset/agenda.php?id='.$object->id);
414 
415  // List of actions on element
416  include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
417  $formactions = new FormActions($db);
418  $somethingshown = $formactions->showactions($object, $object->element, 0, 1, '', $MAXEVENT, '', $morehtmlcenter);
419 
420  print '</div></div>';
421  }
422 
423  //Select mail models is same action as presend
424  if (GETPOST('modelselected')) {
425  $action = 'presend';
426  }
427 
428  // Presend form
429  $modelmail = 'asset';
430  $defaulttopic = 'InformationMessage';
431  $diroutput = $conf->asset->dir_output;
432  $trackid = 'asset'.$object->id;
433 
434  include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php';
435 }
436 
437 // End of page
438 llxFooter();
439 $db->close();
if(GETPOST('button_removefilter_x', 'alpha')||GETPOST('button_removefilter.x', 'alpha')||GETPOST('button_removefilter', 'alpha')) if(GETPOST('button_search_x', 'alpha')||GETPOST('button_search.x', 'alpha')||GETPOST('button_search', 'alpha')) if($action=="save" &&empty($cancel)) $help_url
View.
Definition: agenda.php:118
if(preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) if(preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) if($action=='set') elseif($action=='specimen') elseif($action=='setmodel') elseif($action=='del') elseif($action=='setdoc') $formactions
View.
assetPrepareHead(Asset $object)
Prepare array of tabs for Asset.
Definition: asset.lib.php:87
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 for Asset.
Definition: asset.class.php:31
Class to manage standard extra fields.
Class to manage building of HTML components.
Class to offer components to list and upload files.
Class to manage generation of HTML components Only common components must be here.
$parameters
Actions.
Definition: card.php:83
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
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.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dol_clone($object, $native=0)
Create a clone of instance of object (new instance with same value for each properties) With native =...
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
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_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
isModEnabled($module)
Is Dolibarr module enabled.
$formconfirm
if ($action == 'delbookkeepingyear') {
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.