34require
'../main.inc.php';
35require_once DOL_DOCUMENT_ROOT.
'/core/lib/usergroups.lib.php';
36require_once DOL_DOCUMENT_ROOT.
'/core/lib/bank.lib.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
38require_once DOL_DOCUMENT_ROOT.
'/user/class/userbankaccount.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
41if (isModEnabled(
'holiday')) {
42 require_once DOL_DOCUMENT_ROOT.
'/holiday/class/holiday.class.php';
44if (isModEnabled(
'expensereport')) {
45 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
47if (isModEnabled(
'salaries')) {
48 require_once DOL_DOCUMENT_ROOT.
'/salaries/class/salary.class.php';
49 require_once DOL_DOCUMENT_ROOT.
'/salaries/class/paymentsalary.class.php';
53$langs->loadLangs(array(
'companies',
'commercial',
'banks',
'bills',
'trips',
'holiday',
'salaries'));
56$ref =
GETPOST(
'ref',
'alphanohtml');
58$action =
GETPOST(
"action",
'alpha');
59$cancel =
GETPOST(
'cancel',
'alpha');
62$hookmanager->initHooks(array(
'usercardBank',
'globalcard'));
66if ($user->socid > 0) {
67 $socid = $user->socid;
69$feature2 = (($socid && $user->hasRight(
'user',
'self',
'creer')) ?
'' :
'user');
72if ($id > 0 || !empty($ref)) {
73 $result =
$object->fetch($id, $ref,
'', 1);
80 $account->fetch(0,
'', $id);
82 $account->fetch($bankid);
84if (empty($account->userid)) {
89$selfpermission = ($user->id ==
$id && $user->hasRight(
'user',
'self',
'creer'));
90$usercanadd = (!empty($user->admin) || $user->hasRight(
'user',
'user',
'creer') || $user->hasRight(
'hrm',
'write_personal_information',
'write') );
91$usercanread = (!empty($user->admin) || $user->hasRight(
'user',
'user',
'lire') || $user->hasRight(
'hrm',
'read_personal_information',
'read') );
92$permissiontoaddbankaccount = ($user->hasRight(
'salaries',
'write') || $user->hasRight(
'hrm',
'employee',
'write') || $user->hasRight(
'user',
'user',
'creer') || $selfpermission);
93$permissiontoreadhr = $user->hasRight(
'hrm',
'read_personal_information',
'read') || $user->hasRight(
'hrm',
'write_personal_information',
'write');
94$permissiontowritehr = $user->hasRight(
'hrm',
'write_personal_information',
'write');
95$permissiontosimpleedit = ($selfpermission || $usercanadd);
100if ($user->id == $id) {
103if ($user->hasRight(
'salaries',
'readall')) {
106if ($user->hasRight(
'hrm',
'read')) {
109if ($user->hasRight(
'expensereport',
'lire') && ($user->id ==
$object->id || $user->hasRight(
'expensereport',
'readall'))) {
121if ($action ==
'add' && !$cancel && $permissiontoaddbankaccount) {
122 $account->userid =
$object->id;
124 $account->bank =
GETPOST(
'bank',
'alpha');
125 $account->label =
GETPOST(
'label',
'alpha');
127 $account->code_banque =
GETPOST(
'code_banque',
'alpha');
128 $account->code_guichet =
GETPOST(
'code_guichet',
'alpha');
129 $account->number =
GETPOST(
'number',
'alpha');
130 $account->cle_rib =
GETPOST(
'cle_rib',
'alpha');
131 $account->bic =
GETPOST(
'bic',
'alpha');
132 $account->iban =
GETPOST(
'iban',
'alpha');
133 $account->address =
GETPOST(
'address',
'alpha');
135 $account->owner_name =
GETPOST(
'proprio',
'alpha');
136 $account->proprio = $account->owner_name;
137 $account->owner_address =
GETPOST(
'owner_address',
'alpha');
139 $account->currency_code = trim(
GETPOST(
"account_currency_code"));
140 $account->state_id =
GETPOSTINT(
"account_state_id");
141 $account->country_id =
GETPOSTINT(
"account_country_id");
143 $result = $account->create($user);
154if ($action ==
'update' && !$cancel && $permissiontoaddbankaccount) {
155 $account->userid =
$object->id;
157 $account->bank =
GETPOST(
'bank',
'alpha');
158 $account->label =
GETPOST(
'label',
'alpha');
160 $account->code_banque =
GETPOST(
'code_banque',
'alpha');
161 $account->code_guichet =
GETPOST(
'code_guichet',
'alpha');
162 $account->number =
GETPOST(
'number',
'alpha');
163 $account->cle_rib =
GETPOST(
'cle_rib',
'alpha');
164 $account->bic =
GETPOST(
'bic',
'alpha');
165 $account->iban =
GETPOST(
'iban',
'alpha');
166 $account->address =
GETPOST(
'address',
'alpha');
167 $account->owner_name =
GETPOST(
'proprio',
'alpha');
168 $account->proprio = $account->owner_name;
169 $account->owner_address =
GETPOST(
'owner_address',
'alpha');
171 $account->currency_code = trim(
GETPOST(
"account_currency_code"));
172 $account->state_id =
GETPOSTINT(
"account_state_id");
173 $account->country_id =
GETPOSTINT(
"account_country_id");
175 $result = $account->update($user);
186if ($action ==
'delete_confirmed' && !$cancel && $permissiontoaddbankaccount) {
187 $result = $account->delete($user);
192 header(
"Location: ".DOL_URL_ROOT.
'/user/bank.php?id='.
$object->id);
199if ($action ==
'setbirth' && $usercanadd && !$cancel) {
201 $result =
$object->update($user);
208if ($action ==
'setpersonal_email' && $permissiontosimpleedit && !$cancel) {
209 $object->personal_email = (string)
GETPOST(
'personal_email',
'alphanohtml');
210 $result =
$object->update($user);
217if ($action ==
'setpersonal_mobile' && $permissiontosimpleedit && !$cancel) {
218 $object->personal_mobile = (string)
GETPOST(
'personal_mobile',
'alphanohtml');
219 $result =
$object->update($user);
226if ($action ==
'setaccountancy_code' && $usercanadd && !$cancel) {
227 $object->accountancy_code = (string)
GETPOST(
'accountancy_code',
'alphanohtml');
228 $result =
$object->update($user);
235if ($action ==
'setref_employee' && $usercanadd && !$cancel) {
236 $object->ref_employee = (string)
GETPOST(
'ref_employee',
'alphanohtml');
237 $result =
$object->update($user);
244if ($action ==
'setnational_registration_number' && $usercanadd && !$cancel) {
245 $object->national_registration_number = (string)
GETPOST(
'national_registration_number',
'alphanohtml');
246 $result =
$object->update($user);
254 if ($action ==
'setdefault_c_exp_tax_cat' && $usercanadd) {
256 $result =
$object->update($user);
263 if ($action ==
'setdefault_range' && $usercanadd) {
265 $result =
$object->update($user);
277$form =
new Form($db);
280$childids = $user->getAllChildIds(1);
283$title = $person_name.
" - ".$langs->trans(
'BankAccounts');
285llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-user page-bank');
289if ($id && $bankid && $action ==
'edit' && !$cancel && $permissiontoaddbankaccount) {
290 if ($conf->use_javascript_ajax) {
292 print
'jQuery(document).ready(function () {
293 jQuery("#type").change(function() {
294 document.formbank.action.value="edit";
295 document.formbank.submit();
297 jQuery("#selectaccount_country_id").change(function() {
298 document.formbank.action.value="edit";
299 document.formbank.submit();
304 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'" name="formbank" method="post">';
305 print
'<input type="hidden" name="token" value="'.newToken().
'">';
306 print
'<input type="hidden" name="action" value="update">';
307 print
'<input type="hidden" name="id" value="'.GETPOSTINT(
"id").
'">';
308 print
'<input type="hidden" name="bankid" value="'.$bankid.
'">';
310if ($id && $action ==
'create' && !$cancel && $permissiontoaddbankaccount) {
311 if ($conf->use_javascript_ajax) {
313 print
'jQuery(document).ready(function () {
314 jQuery("#type").change(function() {
315 document.formbank.action.value="create";
316 document.formbank.submit();
318 jQuery("#selectaccount_country_id").change(function() {
319 document.formbank.action.value="create";
320 document.formbank.submit();
325 print
'<form action="'.$_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'" name="formbank" method="post">';
326 print
'<input type="hidden" name="token" value="'.newToken().
'">';
327 print
'<input type="hidden" name="action" value="add">';
328 print
'<input type="hidden" name="bankid" value="'.$bankid.
'">';
333if ($action !=
'edit' && $action !=
'create') {
334 $title = $langs->trans(
"User");
339 if ($user->hasRight(
'user',
'user',
'lire') || $user->admin) {
340 $linkback =
'<a href="'.DOL_URL_ROOT.
'/user/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
343 $morehtmlref =
'<a href="'.DOL_URL_ROOT.
'/user/vcard.php?id='.
$object->id.
'&output=file&file='.urlencode(
dol_sanitizeFileName(
$object->getFullName($langs).
'.vcf')).
'" class="refid" rel="noopener">';
344 $morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard.png',
'class="valignmiddle marginleftonly paddingrightonly"');
345 $morehtmlref .=
'</a>';
347 $urltovirtualcard =
'/user/virtualcard.php?id='.((int)
$object->id);
348 $morehtmlref .=
dolButtonToOpenUrlInDialogPopup(
'publicvirtualcard', $langs->transnoentitiesnoconv(
"PublicVirtualCardUrl").
' - '.
$object->getFullName($langs),
img_picto($langs->trans(
"PublicVirtualCardUrl"),
'card',
'class="valignmiddle marginleftonly paddingrightonly"'), $urltovirtualcard,
'',
'nohover');
350 dol_banner_tab(
$object,
'id', $linkback, $user->hasRight(
'user',
'user',
'lire') || $user->admin,
'rowid',
'ref', $morehtmlref);
352 print
'<div class="fichecenter"><div class="fichehalfleft">';
354 print
'<div class="underbanner clearboth"></div>';
356 print
'<table class="border centpercent tableforfield">';
358 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Login").
'</td>';
360 print
'<td class="error">';
361 print $langs->trans(
"LoginAccountDisableInDolibarr");
366 if (property_exists(
$object,
'admin')) {
367 if (isModEnabled(
'multicompany') && !empty(
$object->admin) && empty(
$object->entity)) {
368 $addadmin .=
img_picto($langs->trans(
"SuperAdministratorDesc"),
"redstar",
'class="paddingleft"');
369 } elseif (!empty(
$object->admin)) {
370 $addadmin .=
img_picto($langs->trans(
"AdministratorDesc"),
"star",
'class="paddingleft"');
380 print
'<tr><td>'.$langs->trans(
"HierarchicalResponsible").
'</td>';
383 print
'<span class="opacitymedium">'.$langs->trans(
"None").
'</span>';
385 $huser =
new User($db);
387 $huser->fetch(
$object->fk_user);
388 print $huser->getNomUrl(1);
390 print
'<span class="opacitymedium">'.$langs->trans(
"None").
'</span>';
397 if (isModEnabled(
'expensereport')) {
399 $text = $langs->trans(
"ForceUserExpenseValidator");
400 print $form->textwithpicto($text, $langs->trans(
"ValidatorIsSupervisorByDefault"), 1,
'help');
403 if (!empty(
$object->fk_user_expense_validator)) {
404 $evuser =
new User($db);
405 $evuser->fetch(
$object->fk_user_expense_validator);
406 print $evuser->getNomUrl(1);
413 if (isModEnabled(
'holiday')) {
415 $text = $langs->trans(
"ForceUserHolidayValidator");
416 print $form->textwithpicto($text, $langs->trans(
"ValidatorIsSupervisorByDefault"), 1,
'help');
419 if (!empty(
$object->fk_user_holiday_validator)) {
420 $hvuser =
new User($db);
421 $hvuser->fetch(
$object->fk_user_holiday_validator);
422 print $hvuser->getNomUrl(1);
429 print
'<tr><td>'.$langs->trans(
"PostOrFunction").
'</td>';
430 print
'<td>'.dol_escape_htmltag(
$object->job).
'</td>';
434 print
'<tr><td>'.$langs->trans(
"WeeklyHours").
'</td>';
441 if ((empty($user->socid) && in_array($id, $childids))
442 || (isModEnabled(
'salaries') && $user->hasRight(
'salaries',
'readall'))
443 || (isModEnabled(
'hrm') && $user->hasRight(
'hrm',
'employee',
'read'))) {
444 $langs->load(
"salaries");
447 print
'<tr><td>'.$langs->trans(
"Salary").
'</td>';
449 print(
$object->salary !=
'' ?
img_picto(
'',
'salary',
'class="pictofixedwidth paddingright"').
'<span class="amount">'.
price(
$object->salary, 0, $langs, 1, -1, -1, $conf->currency) :
'').
'</span>';
455 $text = $langs->trans(
"THM");
456 print $form->textwithpicto($text, $langs->trans(
"THMDescription"), 1,
'help',
'classthm');
459 print(
$object->thm !=
'' ?
price(
$object->thm, 0, $langs, 1, -1, -1, $conf->currency) :
'');
465 $text = $langs->trans(
"TJM");
466 print $form->textwithpicto($text, $langs->trans(
"TJMDescription"), 1,
'help',
'classtjm');
469 print(
$object->tjm !=
'' ?
price(
$object->tjm, 0, $langs, 1, -1, -1, $conf->currency) :
'');
475 print
'<tr><td>'.$langs->trans(
"DateOfEmployment").
'</td>';
478 print
'<span class="opacitymedium">'.$langs->trans(
"FromDate").
'</span> ';
481 if (
$object->dateemploymentend) {
482 print
'<span class="opacitymedium"> - '.$langs->trans(
"To").
'</span> ';
489 if ($user->hasRight(
'hrm',
'read_personal_information',
'read') || $user->hasRight(
'hrm',
'write_personal_information',
'write')) {
492 print $form->editfieldkey(
"DateOfBirth",
'birth',
$object->birth,
$object, $user->hasRight(
'user',
'user',
'creer'));
494 print $form->editfieldval(
"DateOfBirth",
'birth',
$object->birth,
$object, $user->hasRight(
'user',
'user',
'creer'),
'day',
$object->birth);
500 if ($user->hasRight(
'hrm',
'read_personal_information',
'read') || $user->hasRight(
'hrm',
'write_personal_information',
'write') || $permissiontosimpleedit) {
501 print
'<tr class="nowrap">';
503 print $form->editfieldkey(
"UserPersonalEmail",
'personal_email',
$object->personal_email,
$object, $user->hasRight(
'user',
'user',
'creer') || $user->hasRight(
'hrm',
'write_personal_information',
'write'));
505 print $form->editfieldval(
"UserPersonalEmail",
'personal_email',
$object->personal_email,
$object, $user->hasRight(
'user',
'user',
'creer') || $user->hasRight(
'hrm',
'write_personal_information',
'write'),
'email',
'',
null,
null,
'', 0,
'');
511 if ($user->hasRight(
'hrm',
'read_personal_information',
'read') || $user->hasRight(
'hrm',
'write_personal_information',
'write') || $permissiontosimpleedit) {
512 print
'<tr class="nowrap">';
514 print $form->editfieldkey(
"UserPersonalMobile",
'personal_mobile',
$object->personal_mobile,
$object, $user->hasRight(
'user',
'user',
'creer') || $user->hasRight(
'hrm',
'write_personal_information',
'write'));
516 print $form->editfieldval(
"UserPersonalMobile",
'personal_mobile',
$object->personal_mobile,
$object, $user->hasRight(
'user',
'user',
'creer') || $user->hasRight(
'hrm',
'write_personal_information',
'write'),
'phone',
'',
null,
null,
'', 0,
'');
522 print
'<tr class="nowrap">';
524 print $form->editfieldkey(
"DefaultCategoryCar",
'default_c_exp_tax_cat',
$object->default_c_exp_tax_cat,
$object, $user->hasRight(
'user',
'user',
'creer'));
526 if ($action ==
'editdefault_c_exp_tax_cat') {
527 $ret =
'<form method="post" action="'.$_SERVER[
"PHP_SELF"].($moreparam ?
'?'.$moreparam :
'').
'">';
528 $ret .=
'<input type="hidden" name="action" value="setdefault_c_exp_tax_cat">';
529 $ret .=
'<input type="hidden" name="token" value="'.newToken().
'">';
530 $ret .=
'<input type="hidden" name="id" value="'.$object->id.
'">';
531 $ret .= $form->selectExpenseCategories(
$object->default_c_exp_tax_cat,
'default_c_exp_tax_cat', 1);
532 $ret .=
'<input type="submit" class="button" name="modify" value="'.$langs->trans(
"Modify").
'"> ';
533 $ret .=
'<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
538 print $langs->trans($label_exp_tax_cat);
544 print
'<tr class="nowrap">';
546 print $form->editfieldkey(
"DefaultRangeNumber",
'default_range',
$object->default_range,
$object, $user->hasRight(
'user',
'user',
'creer'));
548 if ($action ==
'editdefault_range') {
549 $ret =
'<form method="post" action="'.$_SERVER[
"PHP_SELF"].($moreparam ?
'?'.$moreparam :
'').
'">';
550 $ret .=
'<input type="hidden" name="action" value="setdefault_range">';
551 $ret .=
'<input type="hidden" name="token" value="'.newToken().
'">';
552 $ret .=
'<input type="hidden" name="id" value="'.$object->id.
'">';
555 $maxRangeNum = $expensereportik->getMaxRangeNumber(
$object->default_c_exp_tax_cat);
557 $ret .= $form->selectarray(
'default_range', range(0, $maxRangeNum),
$object->default_range);
558 $ret .=
'<input type="submit" class="button" name="modify" value="'.$langs->trans(
"Modify").
'"> ';
559 $ret .=
'<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
570 if (isModEnabled(
'accounting')) {
571 print
'<tr class="nowrap">';
573 print $form->editfieldkey(
"AccountancyCode",
'accountancy_code',
$object->accountancy_code,
$object, $user->hasRight(
'user',
'user',
'creer'));
575 print $form->editfieldval(
"AccountancyCode",
'accountancy_code',
$object->accountancy_code,
$object, $user->hasRight(
'user',
'user',
'creer'),
'string',
'',
null,
null,
'', 0,
'');
581 if ($permissiontoreadhr) {
582 print
'<tr class="nowrap">';
584 print $form->editfieldkey(
"RefEmployee",
'ref_employee',
$object->ref_employee,
$object, $permissiontowritehr);
586 print $form->editfieldval(
"RefEmployee",
'ref_employee',
$object->ref_employee,
$object, $permissiontowritehr,
'string',
$object->ref_employee);
592 if ($permissiontoreadhr) {
593 print
'<tr class="nowrap">';
595 print $form->editfieldkey(
"NationalRegistrationNumber",
'national_registration_number',
$object->national_registration_number,
$object, $permissiontowritehr);
597 print $form->editfieldval(
"NationalRegistrationNumber",
'national_registration_number',
$object->national_registration_number,
$object, $permissiontowritehr,
'string',
$object->national_registration_number);
604 print
'</div><div class="fichehalfright">';
610 if (isModEnabled(
'salaries') &&
611 (($user->hasRight(
'salaries',
'read') && (in_array(
$object->id, $childids) ||
$object->id == $user->id)) || ($user->hasRight(
'salaries',
'readall')))
614 $salary =
new Salary($db);
616 $sql =
"SELECT s.rowid as sid, s.ref as sref, s.label, s.datesp, s.dateep, s.paye, s.amount, SUM(ps.amount) as alreadypaid";
617 $sql .=
" FROM ".MAIN_DB_PREFIX.
"salary as s";
618 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"payment_salary as ps ON (s.rowid = ps.fk_salary)";
619 $sql .=
" WHERE s.fk_user = ".((int)
$object->id);
620 $sql .=
" AND s.entity IN (".getEntity(
'salary').
")";
621 $sql .=
" GROUP BY s.rowid, s.ref, s.label, s.datesp, s.dateep, s.paye, s.amount";
622 $sql .=
" ORDER BY s.dateep DESC";
624 $resql = $db->query($sql);
626 $num = $db->num_rows($resql);
628 print
'<div class="div-table-responsive-no-min">';
629 print
'<table class="noborder centpercent">';
631 print
'<tr class="liste_titre">';
632 print
'<td colspan="5"><table class="nobordernopadding centpercent"><tr><td>'.$langs->trans(
"LastSalaries", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/salaries/list.php?search_user='.
$object->login.
'">'.$langs->trans(
"AllSalaries").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
633 print
'</tr></table></td>';
637 while ($i < $num && $i < $MAXLIST) {
638 $objp = $db->fetch_object($resql);
640 $salary->id = $objp->sid;
641 $salary->ref = $objp->sref ? $objp->sref : $objp->sid;
642 $salary->label = $objp->label;
643 $salary->datesp = $db->jdate($objp->datesp);
644 $salary->dateep = $db->jdate($objp->dateep);
645 $salary->paye = $objp->paye;
646 $salary->amount = $objp->amount;
648 $payment_salary->id = !empty($objp->rowid) ? $objp->rowid : 0;
649 $payment_salary->ref = !empty($objp->ref) ? $objp->ref :
"";
650 $payment_salary->datep = $db->jdate(!empty($objp->datep) ? $objp->datep :
"");
652 print
'<tr class="oddeven">';
653 print
'<td class="nowraponall">';
654 print $salary->getNomUrl(1);
656 print
'<td class="right nowraponall">'.dol_print_date($db->jdate($objp->datesp),
'day').
"</td>\n";
657 print
'<td class="right nowraponall">'.dol_print_date($db->jdate($objp->dateep),
'day').
"</td>\n";
658 print
'<td class="right nowraponall"><span class="amount">'.price($objp->amount).
'</span></td>';
659 print
'<td class="right nowraponall">'.$salary->getLibStatut(5, $objp->alreadypaid).
'</td>';
666 print
'<td colspan="5"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></a>';
676 if (isModEnabled(
'holiday') && ($user->hasRight(
'holiday',
'readall') || ($user->hasRight(
'holiday',
'read') &&
$object->id == $user->id))) {
679 $sql =
"SELECT h.rowid, h.statut as status, h.fk_type, h.date_debut, h.date_fin, h.halfday";
680 $sql .=
" FROM ".MAIN_DB_PREFIX.
"holiday as h";
681 $sql .=
" WHERE h.fk_user = ".((int)
$object->id);
682 $sql .=
" AND h.entity IN (".getEntity(
'holiday').
")";
683 $sql .=
" ORDER BY h.date_debut DESC";
685 $resql = $db->query($sql);
687 $num = $db->num_rows($resql);
689 print
'<div class="div-table-responsive-no-min">';
690 print
'<table class="noborder centpercent">';
692 print
'<tr class="liste_titre">';
693 print
'<td colspan="4"><table class="nobordernopadding centpercent"><tr><td>'.$langs->trans(
"LastHolidays", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/holiday/list.php?id='.
$object->id.
'">'.$langs->trans(
"AllHolidays").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
694 print
'</tr></table></td>';
698 while ($i < $num && $i < $MAXLIST) {
699 $objp = $db->fetch_object($resql);
701 $holiday->id = $objp->rowid;
702 $holiday->ref = $objp->rowid;
704 $holiday->fk_type = $objp->fk_type;
705 $holiday->statut = $objp->status;
706 $holiday->status = $objp->status;
708 $nbopenedday =
num_open_day($db->jdate($objp->date_debut,
'gmt'), $db->jdate($objp->date_fin,
'gmt'), 0, 1, $objp->halfday);
710 print
'<tr class="oddeven">';
711 print
'<td class="nowraponall">';
712 print $holiday->getNomUrl(1);
713 print
'</td><td class="right nowraponall">'.dol_print_date($db->jdate($objp->date_debut),
'day').
"</td>\n";
714 print
'<td class="right nowraponall">'.$nbopenedday.
' '.$langs->trans(
'DurationDays').
'</td>';
715 print
'<td class="right nowraponall">'.$holiday->LibStatut($objp->status, 5).
'</td>';
722 print
'<td colspan="4"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></a>';
732 if (isModEnabled(
'expensereport') &&
733 ($user->hasRight(
'expensereport',
'readall') || ($user->hasRight(
'expensereport',
'lire') &&
$object->id == $user->id))
737 $sql =
"SELECT e.rowid, e.ref, e.fk_statut as status, e.date_debut, e.total_ttc";
738 $sql .=
" FROM ".MAIN_DB_PREFIX.
"expensereport as e";
739 $sql .=
" WHERE e.fk_user_author = ".((int)
$object->id);
740 $sql .=
" AND e.entity = ".((int) $conf->entity);
741 $sql .=
" ORDER BY e.date_debut DESC";
743 $resql = $db->query($sql);
745 $num = $db->num_rows($resql);
747 print
'<div class="div-table-responsive-no-min">';
748 print
'<table class="noborder centpercent">';
750 print
'<tr class="liste_titre">';
751 print
'<td colspan="4"><table class="nobordernopadding centpercent"><tr><td>'.$langs->trans(
"LastExpenseReports", ($num <= $MAXLIST ?
"" : $MAXLIST)).
'</td><td class="right"><a class="notasortlink" href="'.DOL_URL_ROOT.
'/expensereport/list.php?id='.
$object->id.
'">'.$langs->trans(
"AllExpenseReports").
'<span class="badge marginleftonlyshort">'.$num.
'</span></a></td>';
752 print
'</tr></table></td>';
756 while ($i < $num && $i < $MAXLIST) {
757 $objp = $db->fetch_object($resql);
759 $exp->id = $objp->rowid;
760 $exp->ref = $objp->ref;
761 $exp->status = $objp->status;
763 print
'<tr class="oddeven">';
764 print
'<td class="nowraponall">';
765 print $exp->getNomUrl(1);
766 print
'</td><td class="right nowraponall">'.dol_print_date($db->jdate($objp->date_debut),
'day').
"</td>\n";
767 print
'<td class="right nowraponall"><span class="amount">'.price($objp->total_ttc).
'</span></td>';
768 print
'<td class="right nowraponall">'.$exp->LibStatut($objp->status, 5).
'</td>';
775 print
'<td colspan="4"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></a>';
784 print
'</div></div>';
785 print
'<div class="clearboth"></div>';
792 if ($account->id == 0) {
793 if ($permissiontoaddbankaccount) {
794 $morehtmlright =
dolGetButtonTitle($langs->trans(
'Add'),
'',
'fa fa-plus-circle', $_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&action=create');
796 $morehtmlright =
dolGetButtonTitle($langs->trans(
'Add'), $langs->trans(
'NotEnoughPermissions'),
'fa fa-plus-circle',
'',
'', -2);
799 $morehtmlright =
dolGetButtonTitle($langs->trans(
'Add'), $langs->trans(
'AlreadyOneBankAccount'),
'fa fa-plus-circle',
'',
'', -2);
802 print
load_fiche_titre($langs->trans(
"BankAccounts"), $morehtmlright,
'bank_account');
804 print
'<div class="div-table-responsive-no-min">';
805 print
'<table class="liste centpercent">';
807 print
'<tr class="liste_titre">';
817 if ($account->id > 0) {
818 print
'<tr class="oddeven">';
820 print
'<td>'.dol_escape_htmltag($account->label).
'</td>';
822 print
'<td>'.dol_escape_htmltag($account->bank).
'</td>';
826 foreach ($account->getFieldsToShow() as $val) {
827 if ($val ==
'BankCode') {
829 } elseif ($val ==
'BankAccountNumber') {
831 } elseif ($val ==
'DeskCode') {
833 } elseif ($val ==
'BankAccountNumberKey') {
837 if (!empty($account->label) && $account->number) {
839 $stringescaped .=
' '.img_picto($langs->trans(
"ValueIsNotValid"),
'warning');
841 $stringescaped .=
' '.img_picto($langs->trans(
"ValueIsValid"),
'info');
845 print $stringescaped;
848 print
'<td class="tdoverflowmax200" title="'.dol_escape_htmltag(
getIbanHumanReadable($account)).
'">';
849 if (!empty($account->iban)) {
851 print
' '.img_picto($langs->trans(
"IbanNotValid"),
'warning');
857 print
'<td class="tdoverflowmax150" title="'.dol_escape_htmltag($account->bic).
'">';
858 if (!empty($account->bic)) {
860 print
' '.img_picto($langs->trans(
"SwiftNotValid"),
'warning');
867 print
'<td>'.$account->currency_code.
'</td>';
870 print
'<td class="right nowraponall">';
871 if ($permissiontoaddbankaccount) {
872 print
'<a class="editfielda marginleftonly marginrightonly" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&bankid='.$account->id.
'&action=edit&token='.
newToken().
'">';
873 print
img_picto($langs->trans(
"Modify"),
'edit');
876 print
'<a class="editfielda marginleftonly marginrightonly reposition" href="'.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'&bankid='.$account->id.
'&action=delete_confirmed&token='.
newToken().
'">';
877 print
img_picto($langs->trans(
"Delete"),
'delete');
886 if ($account->id == 0) {
888 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoBANRecord").
'</span></td></tr>';
897 $parameters = array(
'colspan' =>
' colspan="2"');
898 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters,
$object, $action);
902if ($id && ($action ==
'edit' || $action ==
'create') && $permissiontoaddbankaccount) {
903 $title = $langs->trans(
"User");
906 $linkback =
'<a href="'.DOL_URL_ROOT.
'/user/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
908 dol_banner_tab(
$object,
'id', $linkback, $user->hasRight(
'user',
'user',
'lire') || $user->admin);
910 print
'<div class="underbanner clearboth"></div>';
913 print
'<table class="border centpercent">';
915 print
'<tr><td class="titlefield fieldrequired">'.$langs->trans(
"Label").
'</td>';
916 print
'<td><input size="30" type="text" name="label" value="'.$account->label.
'" autofocus></td></tr>';
918 print
'<tr><td class="">'.$langs->trans(
"BankName").
'</td>';
919 print
'<td><input size="30" type="text" name="bank" value="'.$account->bank.
'"></td></tr>';
922 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Currency");
923 print
'<input type="hidden" value="'.$account->currency_code.
'">';
925 print
'<td class="maxwidth200onsmartphone">';
926 $selectedcode = $account->currency_code;
927 if (!$selectedcode) {
928 $selectedcode = $conf->currency;
930 print
img_picto(
'',
'multicurrency',
'class="pictofixedwidth"');
931 print $form->selectCurrency((GETPOSTISSET(
"account_currency_code") ?
GETPOST(
"account_currency_code") : $selectedcode),
'account_currency_code');
935 $account->country_id = $account->country_id ? $account->country_id : $mysoc->country_id;
936 $selectedcode = $account->country_code;
937 if (GETPOSTISSET(
"account_country_id")) {
938 $selectedcode =
GETPOST(
"account_country_id");
939 } elseif (empty($selectedcode)) {
940 $selectedcode = $mysoc->country_code;
942 $account->country_code =
getCountry($selectedcode,
'2');
944 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Country").
'</td>';
945 print
'<td class="maxwidth200onsmartphone">';
946 print
img_picto(
'',
'country',
'class="pictofixedwidth"').$form->select_country($selectedcode,
'account_country_id');
948 print
info_admin($langs->trans(
"YouCanChangeValuesForThisListFromDictionarySetup"), 1);
953 print
'<tr><td>'.$langs->trans(
'State').
'</td><td class="maxwidth200onsmartphone">';
955 print
img_picto(
'',
'state',
'class="pictofixedwidth"');
956 print $formcompany->select_state(GETPOSTISSET(
"account_state_id") ?
GETPOST(
"account_state_id") : $account->state_id, $selectedcode,
'account_state_id');
958 print $countrynotdefined;
964 $bankaccount = $account;
967 foreach ($bankaccount->getFieldsToShow(1) as $val) {
970 if ($val ==
'BankCode') {
971 $name =
'code_banque';
973 $content = $bankaccount->code_banque;
974 } elseif ($val ==
'DeskCode') {
975 $name =
'code_guichet';
977 $content = $bankaccount->code_guichet;
978 } elseif ($val ==
'BankAccountNumber') {
981 $content = $bankaccount->number;
982 } elseif ($val ==
'BankAccountNumberKey') {
985 $content = $bankaccount->cle_rib;
986 } elseif ($val ==
'IBAN') {
989 $content = $bankaccount->iban;
990 if ($bankaccount->needIBAN()) {
993 $tooltip = $langs->trans(
"Example").
':<br>CH93 0076 2011 6238 5295 7<br>LT12 1000 0111 0100 1000<br>FR14 2004 1010 0505 0001 3M02 606<br>LU28 0019 4006 4475 0000<br>DE89 3704 0044 0532 0130 00';
994 } elseif ($val ==
'BIC') {
997 $content = $bankaccount->bic;
998 if ($bankaccount->needIBAN()) {
1001 $tooltip = $langs->trans(
"Example").
': LIABLT2XXXX';
1004 print
'<td'.($require ?
' class="fieldrequired" ' :
'').
'>';
1006 print $form->textwithpicto($langs->trans($val), $tooltip, 4,
'help',
'', 0, 3, $name);
1008 print $langs->trans($val);
1011 print
'<td><input size="'.$size.
'" type="text" class="flat" name="'.$name.
'" value="'.$content.
'"></td>';
1015 print
'<tr><td class="tdtop">'.$langs->trans(
"BankAccountDomiciliation").
'</td><td colspan="4">';
1016 print
'<textarea name="address" rows="4" class="quatrevingtpercent">';
1018 print
"</textarea></td></tr>";
1020 print
'<tr><td>'.$langs->trans(
"BankAccountOwner").
'</td>';
1021 print
'<td colspan="4"><input size="30" type="text" name="proprio" value="'.$account->owner_name.
'"></td></tr>';
1022 print
"</td></tr>\n";
1024 print
'<tr><td class="tdtop">'.$langs->trans(
"BankAccountOwnerAddress").
'</td><td colspan="4">';
1025 print
'<textarea name="owner_address" rows="4" class="quatrevingtpercent">';
1027 print
"</textarea></td></tr>";
1035 print $form->buttonsSaveCancel($action ==
'create' ?
"Create" :
"Modify");
1038if ($id && $action ==
'edit' && $permissiontoaddbankaccount) {
1042if ($id && $action ==
'create' && $permissiontoaddbankaccount) {
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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.
checkIbanForAccount($account=null, $ibantocheck=null)
Check IBAN number information for a bank account.
checkBanForAccount($account)
Check account number information for a bank account.
getIbanHumanReadable(Account $account)
Returns the iban human readable.
checkSwiftForAccount($account=null, $swift=null)
Check SWIFT information for a bank account.
Class to manage Trips and Expenses.
Class to manage inventories.
Class of the module paid holiday.
Class to manage payments of salaries.
Class to manage salary payments.
Class to manage bank accounts description of users.
Class to manage Dolibarr users.
getCountry($searchkey, $withcode='', $dbtouse=null, $outputlangs=null, $entconv=1, $searchlabel='')
Return country label, code or id from an id, code or label.
num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $halfday=0, $country_code='')
Function to return number of working days (and text of units) between two dates (working days)
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
showValueWithClipboardCPButton($valuetocopy, $showonlyonhover=1, $texttoshow='')
Create a button to copy $valuetocopy in the clipboard (for copy and paste feature).
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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 '.
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.
dolButtonToOpenUrlInDialogPopup($name, $label, $buttonstring, $url, $disabled='', $morecss='classlink button bordertransp', $jsonopen='', $backtopagejsfields='', $accesskey='')
Return HTML code to output a button to open a dialog popup box.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_getIdFromCode($db, $key, $tablename, $fieldkey='code', $fieldid='id', $entityfilter=0, $filters='')
Return an id or code from a code or id.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
newToken()
Return the value of token currently saved into session with name 'newtoken'.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='')
Show information in HTML for admin users or standard users.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.
user_prepare_head(User $object)
Prepare array with list of tabs.