diff --git a/htdocs/accountancy/admin/subaccount.php b/htdocs/accountancy/admin/subaccount.php new file mode 100644 index 00000000000..30672eca8d6 --- /dev/null +++ b/htdocs/accountancy/admin/subaccount.php @@ -0,0 +1,418 @@ + + * Copyright (C) 2013-2020 Alexandre Spangaro + * Copyright (C) 2016-2018 Laurent Destailleur + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/accountancy/admin/subaccount.php + * \ingroup Accountancy (Double entries) + * \brief List accounting sub-account + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; + +// Load translation files required by the page +$langs->loadLangs(array("compta", "bills", "admin", "accountancy", "salaries", "hrm", "errors")); + +$mesg = ''; +$action = GETPOST('action', 'aZ09'); +$cancel = GETPOST('cancel', 'alpha'); +$id = GETPOST('id', 'int'); +$rowid = GETPOST('rowid', 'int'); +$massaction = GETPOST('massaction', 'aZ09'); +$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'accountingsubaccountlist'; // To manage different context of search + +$search_subaccount = GETPOST('search_subaccount', 'alpha'); +$search_label = GETPOST('search_label', 'alpha'); +$search_type = GETPOST('search_type', 'int'); + +// Security check +if ($user->socid > 0) accessforbidden(); +if (!$user->rights->accounting->chartofaccount) accessforbidden(); + +// Load variable for pagination +$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); +$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); +if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (!$sortfield) $sortfield = "label"; +if (!$sortorder) $sortorder = "ASC"; + +$arrayfields = array( + 'subaccount'=>array('label'=>$langs->trans("AccountNumber"), 'checked'=>1), + 'label'=>array('label'=>$langs->trans("Label"), 'checked'=>1), + 'type'=>array('label'=>$langs->trans("Type"), 'checked'=>1), + 'reconcilable'=>array('label'=>$langs->trans("Reconcilable"), 'checked'=>1) +); + +if ($conf->global->MAIN_FEATURES_LEVEL < 2) unset($arrayfields['reconcilable']); + +/* + * Actions + */ + +if (GETPOST('cancel', 'alpha')) { $action = 'list'; $massaction = ''; } +if (!GETPOST('confirmmassaction', 'alpha')) { $massaction = ''; } + +$parameters = array(); +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + +if (empty($reshook)) +{ + if (!empty($cancel)) $action = ''; + + include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + + if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All test are required to be compatible with all browsers + { + $search_subaccount = ""; + $search_label = ""; + $search_type = ""; + $search_array_options = array(); + } +} + + +/* + * View + */ + +$form = new Form($db); + +llxHeader('', $langs->trans("ReportThirdParty")); + +// Customer +$sql = "SELECT sa.rowid, sa.nom as label, sa.code_compta as subaccount, '0' as type, sa.entity"; +$sql .= " FROM ".MAIN_DB_PREFIX."societe sa"; +$sql .= ' WHERE sa.entity IN ('.getEntity('societe').')'; +$sql .= ' AND sa.code_compta <> ""'; +//print $sql; +if (strlen(trim($search_subaccount))) { + $lengthpaddingaccount = 0; + if ($conf->global->ACCOUNTING_LENGTH_AACCOUNT) { + $lengthpaddingaccount = max($conf->global->ACCOUNTING_LENGTH_AACCOUNT); + } + $search_subaccount_tmp = $search_subaccount; + $weremovedsomezero = 0; + if (strlen($search_subaccount_tmp) <= $lengthpaddingaccount) { + for ($i = 0; $i < $lengthpaddingaccount; $i++) { + if (preg_match('/0$/', $search_subaccount_tmp)) { + $weremovedsomezero++; + $search_subaccount_tmp = preg_replace('/0$/', '', $search_subaccount_tmp); + } + } + } + + //var_dump($search_subaccount); exit; + if ($search_subaccount_tmp) { + if ($weremovedsomezero) { + $search_subaccount_tmp_clean = $search_subaccount_tmp; + $search_subaccount_clean = $search_subaccount; + $startchar = '%'; + if (strpos($search_subaccount_tmp, '^') === 0) + { + $startchar = ''; + $search_subaccount_tmp_clean = preg_replace('/^\^/', '', $search_subaccount_tmp); + $search_subaccount_clean = preg_replace('/^\^/', '', $search_subaccount); + } + $sql .= " AND (sa.code_compta LIKE '".$db->escape($startchar.$search_subaccount_tmp_clean)."'"; + $sql .= " OR sa.code_compta LIKE '".$db->escape($startchar.$search_subaccount_clean)."%')"; + } else $sql .= natural_search("sa.code_compta", $search_subaccount_tmp); + } +} +if (strlen(trim($search_label))) $sql .= natural_search("sa.nom", $search_label); +if (!empty($search_type) && $search_type >= 0) $sql .= " HAVING type LIKE '".$search_type."'"; + +// Supplier +$sql .= " UNION "; +$sql .= " SELECT sa.rowid, sa.nom as label, sa.code_compta_fournisseur as subaccount, '1' as type, sa.entity FROM ".MAIN_DB_PREFIX."societe sa"; +$sql .= ' WHERE sa.entity IN ('.getEntity('societe').')'; +$sql .= ' AND sa.code_compta_fournisseur <> ""'; +//print $sql; +if (strlen(trim($search_subaccount))) { + $lengthpaddingaccount = 0; + if ($conf->global->ACCOUNTING_LENGTH_AACCOUNT) { + $lengthpaddingaccount = max($conf->global->ACCOUNTING_LENGTH_AACCOUNT); + } + $search_subaccount_tmp = $search_subaccount; + $weremovedsomezero = 0; + if (strlen($search_subaccount_tmp) <= $lengthpaddingaccount) { + for ($i = 0; $i < $lengthpaddingaccount; $i++) { + if (preg_match('/0$/', $search_subaccount_tmp)) { + $weremovedsomezero++; + $search_subaccount_tmp = preg_replace('/0$/', '', $search_subaccount_tmp); + } + } + } + + //var_dump($search_subaccount); exit; + if ($search_subaccount_tmp) { + if ($weremovedsomezero) { + $search_subaccount_tmp_clean = $search_subaccount_tmp; + $search_subaccount_clean = $search_subaccount; + $startchar = '%'; + if (strpos($search_subaccount_tmp, '^') === 0) + { + $startchar = ''; + $search_subaccount_tmp_clean = preg_replace('/^\^/', '', $search_subaccount_tmp); + $search_subaccount_clean = preg_replace('/^\^/', '', $search_subaccount); + } + $sql .= " AND (sa.code_compta_fournisseur LIKE '".$db->escape($startchar.$search_subaccount_tmp_clean)."'"; + $sql .= " OR sa.code_compta_fournisseur LIKE '".$db->escape($startchar.$search_subaccount_clean)."%')"; + } else $sql .= natural_search("sa.code_compta_fournisseur", $search_subaccount_tmp); + } +} +if (strlen(trim($search_label))) $sql .= natural_search("sa.nom", $search_label); +if (!empty($search_type) && $search_type >= 0) $sql .= " HAVING type LIKE '".$search_type."'"; + +// User +$sql .= " UNION "; +$sql .= " SELECT u.rowid, u.lastname as label, u.accountancy_code as subaccount, '2' as type, u.entity FROM ".MAIN_DB_PREFIX."user u"; +$sql .= ' WHERE u.entity IN ('.getEntity('user').')'; +$sql .= ' AND u.accountancy_code <> ""'; +//print $sql; +if (strlen(trim($search_subaccount))) { + $lengthpaddingaccount = 0; + if ($conf->global->ACCOUNTING_LENGTH_AACCOUNT) { + $lengthpaddingaccount = max($conf->global->ACCOUNTING_LENGTH_AACCOUNT); + } + $search_subaccount_tmp = $search_subaccount; + $weremovedsomezero = 0; + if (strlen($search_subaccount_tmp) <= $lengthpaddingaccount) { + for ($i = 0; $i < $lengthpaddingaccount; $i++) { + if (preg_match('/0$/', $search_subaccount_tmp)) { + $weremovedsomezero++; + $search_subaccount_tmp = preg_replace('/0$/', '', $search_subaccount_tmp); + } + } + } + + //var_dump($search_subaccount); exit; + if ($search_subaccount_tmp) { + if ($weremovedsomezero) { + $search_subaccount_tmp_clean = $search_subaccount_tmp; + $search_subaccount_clean = $search_subaccount; + $startchar = '%'; + if (strpos($search_subaccount_tmp, '^') === 0) + { + $startchar = ''; + $search_subaccount_tmp_clean = preg_replace('/^\^/', '', $search_subaccount_tmp); + $search_subaccount_clean = preg_replace('/^\^/', '', $search_subaccount); + } + $sql .= " AND (u.accountancy_code LIKE '".$db->escape($startchar.$search_subaccount_tmp_clean)."'"; + $sql .= " OR u.accountancy_code LIKE '".$db->escape($startchar.$search_subaccount_clean)."%')"; + } else $sql .= natural_search("u.accountancy_code", $search_subaccount_tmp); + } +} +if (strlen(trim($search_label))) $sql .= natural_search("u.lastname", $search_label); +if (!empty($search_type) && $search_type >= 0) $sql .= " HAVING type LIKE '".$search_type."'"; + +$sql .= $db->order($sortfield, $sortorder); + +// Count total nb of records +$nbtotalofrecords = ''; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) +{ + $resql = $db->query($sql); + $nbtotalofrecords = $db->num_rows($resql); + if (($page * $limit) > $nbtotalofrecords) // if total resultset is smaller then paging size (filtering), goto and load page 0 + { + $page = 0; + $offset = 0; + } +} + +$sql .= $db->plimit($limit + 1, $offset); + +dol_syslog('accountancy/admin/subaccount.php:: $sql='.$sql); +$resql = $db->query($sql); + +if ($resql) +{ + $num = $db->num_rows($resql); + + $param = ''; + if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); + if ($search_subaccount) $param .= '&search_subaccount='.urlencode($search_subaccount); + if ($search_label) $param .= '&search_label='.urlencode($search_label); + if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); + + print '
'; + if ($optioncss != '') print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print_barre_liste($langs->trans('ReportThirdParty'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit); + + print '
'.$langs->trans("WarningCreateSubAccounts").'
'; + + $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; + $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + + $moreforfilter = ''; + $massactionbutton = ''; + + print '
'; + print ''."\n"; + + // Line for search fields + print ''; + if (!empty($arrayfields['subaccount']['checked'])) print ''; + if (!empty($arrayfields['label']['checked'])) print ''; + if (!empty($arrayfields['type']['checked'])) print ''; + if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { if (!empty($arrayfields['reconcilable']['checked'])) print ''; } + print ''; + print ''; + + print ''; + if (!empty($arrayfields['subaccount']['checked'])) print_liste_field_titre($arrayfields['subaccount']['label'], $_SERVER["PHP_SELF"], "subaccount", "", $param, '', $sortfield, $sortorder); + if (!empty($arrayfields['label']['checked'])) print_liste_field_titre($arrayfields['label']['label'], $_SERVER["PHP_SELF"], "label", "", $param, '', $sortfield, $sortorder); + if (!empty($arrayfields['type']['checked'])) print_liste_field_titre($arrayfields['type']['label'], $_SERVER["PHP_SELF"], "type", "", $param, '', $sortfield, $sortorder, 'center '); + if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { if (!empty($arrayfields['reconcilable']['checked'])) print_liste_field_titre($arrayfields['reconcilable']['label'], $_SERVER["PHP_SELF"], 'reconcilable', '', $param, '', $sortfield, $sortorder, 'center '); } + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); + print "\n"; + + $totalarray = array(); + $i = 0; + while ($i < min($num, $limit)) + { + $obj = $db->fetch_object($resql); + + print ''; + + // Account number + if (!empty($arrayfields['subaccount']['checked'])) + { + print "\n"; + if (!$i) $totalarray['nbfield']++; + } + + // Subaccount label + if (!empty($arrayfields['label']['checked'])) + { + print "\n"; + if (!$i) $totalarray['nbfield']++; + } + + // Type + if (!empty($arrayfields['type']['checked'])) + { + print ''; + if (!$i) $totalarray['nbfield']++; + } + + if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { + // Activated or not reconciliation on accounting account + if (!empty($arrayfields['reconcilable']['checked'])) { + print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + } + + // Action + print ''."\n"; + if (!$i) $totalarray['nbfield']++; + + print ''."\n"; + $i++; + } + + $db->free($resql); + + $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); + $reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + + print "
'.$form->selectarray('search_type', array('0'=>$langs->trans('Customer'), '1'=>$langs->trans('Supplier'), '2'=>$langs->trans('Employee')), $search_type, 1).' '; + $searchpicto = $form->showFilterAndCheckAddButtons($massactionbutton ? 1 : 0, 'checkforselect', 1); + print $searchpicto; + print '
"; + print length_accounta($obj->subaccount); + print ""; + print $obj->label; + print "'; + $s = ''; + // Customer + if ($obj->type == 0) + { + $s .= ''.$langs->trans("Customer").''; + } + // Supplier + elseif ($obj->type == 1) + { + $s .= ''.$langs->trans("Supplier").''; + } + // User + elseif ($obj->type == 2) + { + $s .= ''.$langs->trans("Employee").''; + } + print $s; + print ''; + if (empty($obj->reconcilable)) { + print ''; + print img_picto($langs->trans("Disabled"), 'switch_off'); + print ''; + } else { + print ''; + print img_picto($langs->trans("Activated"), 'switch_on'); + print ''; + } + print ''; + $e = ''; + // Customer + if ($obj->type == 0) + { + $e .= ''.img_edit().''; + } + // Supplier + elseif ($obj->type == 1) + { + $e .= ''.img_edit().''; + } + // User + elseif ($obj->type == 2) + { + $e .= ''.img_edit().''; + } + print $e; + print '
"; + print "
"; + + print '
'; +} else { + dol_print_error($db); +} + +// End of page +llxFooter(); +$db->close(); diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index b1b5c708249..25ef112b39b 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -258,7 +258,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_admin"', __HANDLER__, 'left', 2454__+MAX_llx_menu__, 'accountancy', 'accountancy_admin_journal', 2451__+MAX_llx_menu__, '/accountancy/admin/journals_list.php?id=35&mainmenu=accountancy&leftmenu=accountancy_admin', 'AccountingJournals', 2, 'accountancy', '$user->rights->accounting->chartofaccount', '', 0, 20, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_admin"', __HANDLER__, 'left', 2455__+MAX_llx_menu__, 'accountancy', 'accountancy_admin_chartmodel', 2451__+MAX_llx_menu__, '/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin', 'Pcg_version', 2, 'accountancy', '$user->rights->accounting->chartofaccount', '', 0, 30, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_admin"', __HANDLER__, 'left', 2456__+MAX_llx_menu__, 'accountancy', 'accountancy_admin_chart', 2451__+MAX_llx_menu__, '/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin', 'Chartofaccounts', 2, 'accountancy', '$user->rights->accounting->chartofaccount', '', 0, 40, __ENTITY__); - insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_admin"', __HANDLER__, 'left', 2457__+MAX_llx_menu__, 'accountancy', 'accountancy_admin_chart_group', 2451__+MAX_llx_menu__, '/accountancy/admin/categories_list.php?id=32&mainmenu=accountancy&leftmenu=accountancy_admin', 'AccountingCategory', 2, 'accountancy', '$user->rights->accounting->chartofaccount', '', 0, 41, __ENTITY__); + insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_admin"', __HANDLER__, 'left', 2456__+MAX_llx_menu__, 'accountancy', 'accountancy_admin_chartsubledger',2451__+MAX_llx_menu__, '/accountancy/admin/subaccount.php?mainmenu=accountancy&leftmenu=accountancy_admin', 'ChartOfSubaccounts', 2, 'accountancy', '$user->rights->accounting->chartofaccount', '', 0, 41, __ENTITY__); + insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_admin"', __HANDLER__, 'left', 2457__+MAX_llx_menu__, 'accountancy', 'accountancy_admin_chart_group', 2451__+MAX_llx_menu__, '/accountancy/admin/categories_list.php?id=32&mainmenu=accountancy&leftmenu=accountancy_admin', 'AccountingCategory', 2, 'accountancy', '$user->rights->accounting->chartofaccount', '', 0, 45, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_admin"', __HANDLER__, 'left', 2458__+MAX_llx_menu__, 'accountancy', 'accountancy_admin_default', 2451__+MAX_llx_menu__, '/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin', 'MenuDefaultAccounts', 2, 'accountancy', '$user->rights->accounting->chartofaccount', '', 0, 50, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="accountancy_admin"', __HANDLER__, 'left', 2459__+MAX_llx_menu__, 'accountancy', 'accountancy_admin_vat', 2451__+MAX_llx_menu__, '/compta/bank/list.php?mainmenu=accountancy&leftmenu=accountancy_admin', 'MenuBankAccounts', 2, 'accountancy', '$user->rights->accounting->chartofaccount', '', 0, 51, __ENTITY__); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 7e808102bdd..3f99754b5cd 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1200,6 +1200,7 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $newmenu->add("/accountancy/admin/journals_list.php?id=35&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("AccountingJournals"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_journal', 30); $newmenu->add("/accountancy/admin/accountmodel.php?id=31&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Pcg_version"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chartmodel', 40); $newmenu->add("/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("Chartofaccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 41); + $newmenu->add("/accountancy/admin/subaccount.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("ChartOfSubaccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 41); $newmenu->add("/accountancy/admin/categories_list.php?id=32&search_country_id=".$mysoc->country_id."&mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("AccountingCategory"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_chart', 50); $newmenu->add("/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin", $langs->trans("MenuDefaultAccounts"), 1, $user->rights->accounting->chartofaccount, '', $mainmenu, 'accountancy_admin_default', 60); if (!empty($conf->banque->enabled)) { diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index adb87bcb8ca..76c02245b6f 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -24,6 +24,7 @@ Journaux=Journals JournalFinancial=Financial journals BackToChartofaccounts=Return chart of accounts Chartofaccounts=Chart of accounts +ChartOfSubaccounts=Chart of subaccounts CurrentDedicatedAccountingAccount=Current dedicated account AssignDedicatedAccountingAccount=New account to assign InvoiceLabel=Invoice label diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index ba3beb753b5..aa3becc90e9 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -273,3 +273,4 @@ WarningProjectClosed=Project is closed. You must re-open it first. WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list. WarningFailedToAddFileIntoDatabaseIndex=Warning, failed to add file entry into ECM database index table WarningTheHiddenOptionIsOn=Warning, the hidden option %s is on. +WarningCreateSubAccounts=Warning, you can't create directly a sub account, you must create a third party or a user and assign them an accounting code to find them in this list diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php index 4ce9de9b1ec..e77dc0a9d92 100644 --- a/htdocs/theme/eldy/info-box.inc.php +++ b/htdocs/theme/eldy/info-box.inc.php @@ -268,6 +268,13 @@ if (GETPOSTISSET('THEME_SATURATE_RATIO')) $conf->global->THEME_SATURATE_RATIO = margin: 2px; border-radius: 3px; } +.user-back { + background-color: #af4850 !important; + color: #FFF !important; + padding: 2px; + margin: 2px; + border-radius: 3px; +} diff --git a/htdocs/theme/md/info-box.inc.php b/htdocs/theme/md/info-box.inc.php index d024d824ea8..f1e1a0cfab6 100644 --- a/htdocs/theme/md/info-box.inc.php +++ b/htdocs/theme/md/info-box.inc.php @@ -33,6 +33,13 @@ if (GETPOSTISSET('THEME_SATURATE_RATIO')) $conf->global->THEME_SATURATE_RATIO = margin: 2px; border-radius: 3px; } +.user-back { + background-color: #af4850 !important; + color: #FFF !important; + padding: 2px; + margin: 2px; + border-radius: 3px; +} .bg-infobox-project{