From 58d77a14af7118a7ae9060c34c52488de668367e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 29 Jan 2017 23:05:20 +0100 Subject: [PATCH 1/4] FIX #4758 PHP warning when installing to PostgreSQL with incorrect credentials Closes #4758 --- htdocs/core/db/pgsql.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index 3b9ad9ac3e4..89f2a66bdea 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -412,8 +412,8 @@ class DoliDBPgsql extends DoliDB { $this->database_name = $name; pg_set_error_verbosity($this->db, PGSQL_ERRORS_VERBOSE); // Set verbosity to max + pg_query($this->db, "set datestyle = 'ISO, YMD';"); } - pg_query($this->db, "set datestyle = 'ISO, YMD';"); return $this->db; } From e1e2c49d93b77017473638ec1ff478b33ce9d91b Mon Sep 17 00:00:00 2001 From: aspangaro Date: Tue, 31 Jan 2017 06:08:40 +0100 Subject: [PATCH 2/4] NEW : [FP17] Accountancy - Add select field in list of accounts --- htdocs/accountancy/admin/account.php | 216 ++++++++++++++++++--------- 1 file changed, 142 insertions(+), 74 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index e82522df26f..a7ad5d14e90 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -1,6 +1,6 @@ - * Copyright (C) 2013-2016 Alexandre Spangaro + * Copyright (C) 2013-2017 Alexandre Spangaro * Copyright (C) 2016 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify @@ -41,6 +41,7 @@ $action = GETPOST('action'); $cancel = GETPOST('cancel'); $id = GETPOST('id', 'int'); $rowid = GETPOST('rowid', 'int'); + $search_account = GETPOST("search_account"); $search_label = GETPOST("search_label"); $search_accountparent = GETPOST("search_accountparent"); @@ -68,6 +69,15 @@ if (! $sortfield) if (! $sortorder) $sortorder = "ASC"; +$arrayfields=array( + 'aa.account_number'=>array('label'=>$langs->trans("AccountNumber"), 'checked'=>1), + 'aa.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1), + 'aa.account_parent'=>array('label'=>$langs->trans("Accountparent"), 'checked'=>0), + 'aa.pcg_type'=>array('label'=>$langs->trans("Pcgtype"), 'checked'=>0), + 'aa.pcg_subtype'=>array('label'=>$langs->trans("Pcgsubtype"), 'checked'=>0), + 'aa.active'=>array('label'=>$langs->trans("Activated"), 'checked'=>1) +); + $accounting = new AccountingAccount($db); @@ -95,6 +105,7 @@ if (empty($reshook)) $search_accountparent = ""; $search_pcgtype = ""; $search_pcgsubtype = ""; + $search_array_options=array(); } if (GETPOST('change_chart')) @@ -135,6 +146,7 @@ if (empty($reshook)) /* * View */ +$form=new Form($db); llxHeader('', $langs->trans("ListAccounts")); @@ -145,8 +157,6 @@ if ($action == 'delete') { $pcgver = $conf->global->CHARTOFACCOUNTS; - - $sql = "SELECT aa.rowid, aa.fk_pcg_version, aa.pcg_type, aa.pcg_subtype, aa.account_number, aa.account_parent , aa.label, aa.active, "; $sql .= " a2.rowid as rowid2, a2.label as label2, a2.account_number as account_number2"; $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_account as aa"; @@ -154,21 +164,12 @@ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_system as asy ON aa.fk_pcg_vers $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as a2 ON aa.account_parent = a2.rowid"; $sql .= " WHERE asy.rowid = " . $pcgver; -if (strlen(trim($search_account))) { - $sql .= natural_search("aa.account_number", $search_account); -} -if (strlen(trim($search_label))) { - $sql .= natural_search("aa.label", $search_label); -} -if (strlen(trim($search_accountparent))) { - $sql .= natural_search("aa.account_parent", $search_accountparent); -} -if (strlen(trim($search_pcgtype))) { - $sql .= natural_search("aa.pcg_type", $search_pcgtype); -} -if (strlen(trim($search_pcgsubtype))) { - $sql .= natural_search("aa.pcg_subtype", $search_pcgsubtype); -} +if (strlen(trim($search_account))) $sql .= natural_search("aa.account_number", $search_account); +if (strlen(trim($search_label))) $sql .= natural_search("aa.label", $search_label); +if (strlen(trim($search_accountparent))) $sql .= natural_search("aa.account_parent", $search_accountparent); +if (strlen(trim($search_pcgtype))) $sql .= natural_search("aa.pcg_type", $search_pcgtype); +if (strlen(trim($search_pcgsubtype))) $sql .= natural_search("aa.pcg_subtype", $search_pcgsubtype); + $sql .= $db->order($sortfield, $sortorder); // Count total nb of records @@ -184,18 +185,19 @@ $sql .= $db->plimit($limit + 1, $offset); dol_syslog('accountancy/admin/account.php:: $sql=' . $sql); $resql = $db->query($sql); -if ($resql) { - +if ($resql) +{ $num = $db->num_rows($resql); - + $params=''; - if ($search_account != "") $params.= '&search_account='.urlencode($search_account); - if ($search_label != "") $params.= '&search_label='.urlencode($search_label); - if ($search_accountparent != "") $params.= '&search_accountparent='.urlencode($search_accountparent); - if ($search_pcgtype != "") $params.= '&search_pcgtype='.urlencode($search_pcgtype); - if ($search_pcgsubtype != "") $params.= '&search_pcgsubtype='.urlencode($search_pcgsubtype); - if ($optioncss != '') $param.='&optioncss='.$optioncss; - + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; + if ($search_account) $params.= '&search_account='.urlencode($search_account); + if ($search_label) $params.= '&search_label='.urlencode($search_label); + if ($search_accountparent) $params.= '&search_accountparent='.urlencode($search_accountparent); + if ($search_pcgtype) $params.= '&search_pcgtype='.urlencode($search_pcgtype); + if ($search_pcgsubtype) $params.= '&search_pcgsubtype='.urlencode($search_pcgsubtype); + if ($optioncss) $param.='&optioncss='.$optioncss; + print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $params, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy'); print '
'; @@ -207,7 +209,7 @@ if ($resql) { $sql = "SELECT rowid, pcg_version, label, active"; $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_system"; $sql .= " WHERE active = 1"; - dol_syslog('accountancy/admin/index.php:: $sql=' . $sql); + dol_syslog('accountancy/admin/account.php:: $sql=' . $sql); $resqlchart = $db->query($sql); $var = true; if ($resqlchart) { @@ -228,34 +230,53 @@ if ($resql) { print ''; print '
'; print "
\n"; + + print '
'; + $i = 0; + print '
'."\n"; + if ($optioncss != '') print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print '' . $langs->trans("Addanaccount") . ''; print '' . $langs->trans("ApplyMassCategories") . ''; // print '' . $langs->trans("ImportAccount") . ''; // print '' . $langs->trans("CheckProductAccountancyCode") . ''; print '

'; - print ''; - print ''; - print_liste_field_titre($langs->trans("AccountNumber"), $_SERVER["PHP_SELF"], "aa.account_number", "", $params, "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Label"), $_SERVER["PHP_SELF"], "aa.label", "", $params, "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Accountparent"), $_SERVER["PHP_SELF"], "aa.account_parent", "", $params, "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Pcgtype"), $_SERVER["PHP_SELF"], "aa.pcg_type", "", $params, "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Pcgsubtype"), $_SERVER["PHP_SELF"], "aa.pcg_subtype", "", $params, "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Activated"), $_SERVER["PHP_SELF"], "aa.active", "", $params, "", $sortfield, $sortorder); - print_liste_field_titre('', $_SERVER["PHP_SELF"], "", $params, "", 'width="60" align="center"', $sortfield, $sortorder); - print ''; + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + print '
'; + print '
'."\n"; + print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + + if (! empty($arrayfields['aa.account_number']['checked'])) print_liste_field_titre($arrayfields['aa.account_number']['label'], $_SERVER["PHP_SELF"],"aa.account_number","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['aa.label']['checked'])) print_liste_field_titre($arrayfields['aa.label']['label'], $_SERVER["PHP_SELF"],"aa.label","",$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['aa.account_parent']['checked'])) print_liste_field_titre($arrayfields['aa.account_parent']['label'], $_SERVER["PHP_SELF"],"aa.account_parent", "", $param,'align="left"',$sortfield,$sortorder); + if (! empty($arrayfields['aa.pcg_type']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_type']['label'],$_SERVER["PHP_SELF"],'aa.pcg_type','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['aa.pcg_subtype']['checked'])) print_liste_field_titre($arrayfields['aa.pcg_subtype']['label'],$_SERVER["PHP_SELF"],'aa.pcg_subtype','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['aa.active']['checked'])) print_liste_field_titre($arrayfields['aa.active']['label'],$_SERVER["PHP_SELF"],'aa.active','',$param,'',$sortfield,$sortorder); + + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); + print "\n"; + + // Line for search fields + print ''; + if (! empty($arrayfields['aa.account_number']['checked'])) print ''; + if (! empty($arrayfields['aa.label']['checked'])) print ''; + if (! empty($arrayfields['aa.account_parent']['checked'])) print ''; + if (! empty($arrayfields['aa.pcg_type']['checked'])) print ''; + if (! empty($arrayfields['aa.pcg_subtype']['checked'])) print ''; + if (! empty($arrayfields['aa.active']['checked'])) print ''; print ''; print ''; @@ -263,8 +284,7 @@ if ($resql) { $accountstatic = new AccountingAccount($db); $accountparent = new AccountingAccount($db); - - $i = 0; + while ( $i < min($num, $limit) ) { $obj = $db->fetch_object($resql); @@ -274,35 +294,81 @@ if ($resql) { $accountstatic->account_number = $obj->account_number; print ''; - print ''; - print ''; - if (! empty($obj->account_parent)) - { - $accountparent->id = $obj->rowid2; - $accountparent->label = $obj->label2; - $accountparent->account_number = $obj->account_number2; - - print ''; - } - else + // Account number + if (! empty($arrayfields['aa.account_number']['checked'])) { - print ''; + print "\n"; + if (! $i) $totalarray['nbfield']++; } - print ''; - print ''; - print '\n"; + if (! $i) $totalarray['nbfield']++; } - print ''; - + + // Account parent + if (! empty($arrayfields['aa.account_parent']['checked'])) + { + if (! empty($obj->account_parent)) + { + $accountparent->id = $obj->rowid2; + $accountparent->label = $obj->label2; + $accountparent->account_number = $obj->account_number2; + + print "\n"; + if (! $i) $totalarray['nbfield']++; + } + else + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + } + + // Chart of accounts type + if (! empty($arrayfields['aa.pcg_type']['checked'])) + { + print "\n"; + if (! $i) $totalarray['nbfield']++; + } + + // Chart of accounts subtype + if (! empty($arrayfields['aa.pcg_subtype']['checked'])) + { + print "\n"; + if (! $i) $totalarray['nbfield']++; + } + + // Activated or not + if (! empty($arrayfields['aa.active']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Action print '' . "\n"; + if (! $i) $totalarray['nbfield']++; print "\n"; $var = ! $var; @@ -322,6 +389,7 @@ if ($resql) { } print "
 
 '; - $searchpitco=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1); - print $searchpitco; + $searchpicto=$form->showFilterAndCheckAddButtons($massactionbutton?1:0, 'checkforselect', 1); + print $searchpicto; print '
' . $accountstatic->getNomUrl(1) . '' . $obj->label . '' . $accountparent->getNomUrl(1) . ' "; + print $accountstatic->getNomUrl(1); + print "' . $obj->pcg_type . '' . $obj->pcg_subtype . ''; - if (empty($obj->active)) { - print ''; - print img_picto($langs->trans("Disabled"), 'switch_off'); - print ''; - } else { - print ''; - print img_picto($langs->trans("Activated"), 'switch_on'); - print ''; + + // Account label + if (! empty($arrayfields['aa.label']['checked'])) + { + print ""; + print $obj->label; + print ""; + print $accountparent->getNomUrl(1); + print " "; + print $obj->pcg_type; + print ""; + print $obj->pcg_subtype; + print "'; + if (empty($obj->active)) { + print ''; + print img_picto($langs->trans("Disabled"), 'switch_off'); + print ''; + } else { + print ''; + print img_picto($langs->trans("Activated"), 'switch_on'); + print ''; + } + print ''; if ($user->admin) { @@ -315,6 +381,7 @@ if ($resql) { print ''; } print '
"; + print ""; print '
'; } else { dol_print_error($db); From 399aea179f08131379535525a712e880ed72d6d4 Mon Sep 17 00:00:00 2001 From: philippe-opendsi Date: Tue, 31 Jan 2017 10:15:04 +0100 Subject: [PATCH 3/4] New : Option to reload supplier order and invoice to retrieve payment terms & type Add RELOAD_PAGE_ON_SUPPLIER_CHANGE --- htdocs/fourn/commande/card.php | 13 +++++++++++++ htdocs/fourn/facture/card.php | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index d54a477aeee..d1100326f42 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1445,6 +1445,19 @@ if ($action=='create') else { print $form->select_company((empty($socid)?'':$socid), 'socid', 's.fournisseur = 1', 'SelectThirdParty'); + // reload page to retrieve customer informations + if (!empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE)) + { + print ''; + } } print ''; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index d756bc2b72a..1fce3965c6b 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1446,6 +1446,19 @@ if ($action == 'create') else { print $form->select_company($societe->id, 'socid', 's.fournisseur = 1', 'SelectThirdParty'); + // reload page to retrieve supplier informations + if (!empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE)) + { + print ''; + } } print ''; From 2ce4ba99fe4893c535c41d72c98aad9128fc2b0c Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 1 Feb 2017 06:54:01 +0100 Subject: [PATCH 4/4] Fix : [FP17] Correct some fix on category accounting account page --- htdocs/accountancy/admin/categories.php | 82 +++++++++---------- .../class/accountancycategory.class.php | 9 +- htdocs/langs/en_US/accountancy.lang | 2 + 3 files changed, 47 insertions(+), 46 deletions(-) diff --git a/htdocs/accountancy/admin/categories.php b/htdocs/accountancy/admin/categories.php index 12d9a707cbd..d052b4312a7 100644 --- a/htdocs/accountancy/admin/categories.php +++ b/htdocs/accountancy/admin/categories.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2016 Jamal Elbaz + * Copyright (C) 2017 Alexandre Spangaro * * 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 @@ -16,24 +17,24 @@ */ /** - * \file htdocs/accountancy/admin/categories.php + * \file htdocs/accountancy/admin/categories.php * \ingroup Advanced accountancy - * \brief Page to assign mass categories to accounts + * \brief Page to assign mass categories to accounts */ require '../../main.inc.php'; - -// Class require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountancycategory.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php'; $error = 0; -// Langs $langs->load("bills"); $langs->load("accountancy"); $mesg = ''; +$id = GETPOST('id', 'int'); +$rowid = GETPOST('rowid', 'int'); +$cancel = GETPOST('cancel'); $action = GETPOST('action'); $cat_id = GETPOST('account_category'); $selectcpt = GETPOST('cpt_bk', 'array'); @@ -43,36 +44,31 @@ if ($cat_id == 0) { $cat_id = null; } -$id = GETPOST('id', 'int'); -$rowid = GETPOST('rowid', 'int'); -$cancel = GETPOST('cancel'); - // Security check -if (! $user->admin) - accessforbidden(); +if (! $user->admin) accessforbidden(); -$AccCat = new AccountancyCategory($db); +$accountingcategory = new AccountancyCategory($db); // si ajout de comptes if (! empty($selectcpt)) { $cpts = array (); - foreach ( $selectcpt as $selectedOption ) { - if (! array_key_exists($selectedOption, $cpts)) - $cpts[$selectedOption] = "'" . $selectedOption . "'"; + foreach ( $selectcpt as $selectedoption ) { + if (! array_key_exists($selectedoption, $cpts)) + $cpts[$selectedoption] = "'" . $selectedoption . "'"; } - $return= $AccCat->updateAccAcc($cat_id, $cpts); + $return= $accountingcategory->updateAccAcc($cat_id, $cpts); if ($return<0) { - setEventMessages($langs->trans('errors'), $AccCat->errors, 'errors'); + setEventMessages($langs->trans('errors'), $accountingcategory->errors, 'errors'); } else { setEventMessages($langs->trans('Saved'), null, 'mesgs'); } } if ($action == 'delete') { if ($cpt_id) { - if ($AccCat->deleteCptCat($cpt_id)) { - setEventMessages($langs->trans('Deleted'), null, 'mesgs'); + if ($accountingcategory->deleteCptCat($cpt_id)) { + setEventMessages($langs->trans('CategoryDeleted'), null, 'mesgs'); } else { setEventMessages($langs->trans('errors'), null, 'errors'); } @@ -83,12 +79,11 @@ if ($action == 'delete') { /* * View */ +$form = new Form($db); +$formaccounting = new FormAccounting($db); llxheader('', $langs->trans('AccountAccounting')); -$formaccounting = new FormAccounting($db); -$form = new Form($db); - print load_fiche_titre($langs->trans('Categories')); print '
' . "\n"; @@ -102,22 +97,23 @@ print ''; print ''; print ''; if (! empty($cat_id)) { - $return = $AccCat->getCptBK($cat_id); + $return = $accountingcategory->getCptBK($cat_id); if ($return < 0) { - setEventMessages(null, $AccCat->errors, 'errors'); + setEventMessages(null, $accountingcategory->errors, 'errors'); } - print ''; + print ''; print ''; } @@ -131,26 +127,30 @@ print ''; if ($action == 'display' || $action == 'delete') { - print '
' . $langs->trans("AccountingCategory") . ''; $formaccounting->select_accounting_category($cat_id, 'account_category', 1); -print ''; +print ''; print '
' . $langs->trans("AddCompteFromBK") . '
' . $langs->trans("AddAccountFromBookKeepingWithNoCategories") . ''; - if (is_array($AccCat->lines_cptbk) && count($AccCat->lines_cptbk) > 0) { + if (is_array($accountingcategory->lines_cptbk) && count($accountingcategory->lines_cptbk) > 0) { print ' - '; + print ''; + print ' '; } print '
'; - - print ''; + print "
' . $langs->trans("Numerocompte") . '' . $langs->trans("Description") . 'Action
\n"; + print ''; + print '"; + print '"; + print "\n"; if (! empty($cat_id)) { - $return = $AccCat->display($cat_id); + $return = $accountingcategory->display($cat_id); if ($return < 0) { - setEventMessages(null, $AccCat->errors, 'errors'); + setEventMessages(null, $accountingcategory->errors, 'errors'); } - $j = 1; - if (is_array($AccCat->lines_display) && count($AccCat->lines_display) > 0) { - foreach ( $AccCat->lines_display as $cpt ) { + + if (is_array($accountingcategory->lines_display) && count($accountingcategory->lines_display) > 0) { + foreach ( $accountingcategory->lines_display as $cpt ) { $var = ! $var; print ''; print ''; print ''; - print $form->formconfirm($_SERVER["PHP_SELF"] . "?account_category=$cat_id&cptid=" . $cpt->rowid, $langs->trans("DeleteCptCategory"), $langs->trans("ConfirmDeleteCptCategory"), "delete", '', 0, "action-delete" . $j); - print ''; + print '"; print "\n"; - $j ++; } } } diff --git a/htdocs/accountancy/class/accountancycategory.class.php b/htdocs/accountancy/class/accountancycategory.class.php index 40290bd845b..b2564c342e5 100644 --- a/htdocs/accountancy/class/accountancycategory.class.php +++ b/htdocs/accountancy/class/accountancycategory.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2016 Alexandre Spangaro + * Copyright (C) 2016-2017 Alexandre Spangaro * * 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 @@ -17,9 +17,9 @@ */ /** - * \file htdocs/accountancy/class/accountancycategory.class.php + * \file htdocs/accountancy/class/accountancycategory.class.php * \ingroup Advanced accountancy - * \brief File of class to manage categories of an accounting category_type + * \brief File of class to manage categories of an accounting category_type */ // Class @@ -72,7 +72,6 @@ class AccountancyCategory $this->lines_display[] = $obj; } } - return $num; } else { $this->error = "Error " . $this->db->lasterror(); @@ -84,7 +83,7 @@ class AccountancyCategory } /** - * Function to select accountiing category of an accounting account present in chart of accounts + * Function to select accounting category of an accounting account present in chart of accounts * * @param int $id Id category * diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index dcefae7aecb..5ee68e605cd 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -194,6 +194,8 @@ ChangeBinding=Change the binding ## Admin ApplyMassCategories=Apply mass categories +AddAccountFromBookKeepingWithNoCategories=Add acccount already used with no categories +CategoryDeleted=Category for the accounting account has been removed ## Export Exports=Exports
'.$langs->trans("AccountAccounting")."'.$langs->trans("Label")."
' . length_accountg($cpt->account_number) . '' . $cpt->label . ''; + print ""; + print img_delete($langs->trans("DeleteFromCat")).' '; + print $langs->trans("DeleteFromCat").""; + print "