diff --git a/build/perl/virtualmin/dolibarr.pl b/build/perl/virtualmin/dolibarr.pl index a28fc430caa..343cebc6abe 100644 --- a/build/perl/virtualmin/dolibarr.pl +++ b/build/perl/virtualmin/dolibarr.pl @@ -1,7 +1,7 @@ #---------------------------------------------------------------------------- # \file dolibarr.pl # \brief Dolibarr script install for Virtualmin Pro -# \author (c)2009-2018 Regis Houssin +# \author (c)2009-2019 Regis Houssin #---------------------------------------------------------------------------- @@ -30,7 +30,7 @@ return "Regis Houssin"; # script_dolibarr_versions() sub script_dolibarr_versions { -return ( "9.0.0", "8.0.3", "7.0.4", "6.0.8", "5.0.7" ); +return ( "10.0.0", "9.0.3", "8.0.5", "7.0.5", "6.0.8" ); } sub script_dolibarr_release @@ -390,6 +390,7 @@ sub script_dolibarr_check_latest { local ($ver) = @_; local @vers = &osdn_package_versions("dolibarr", + $ver >= 10.0 ? "dolibarr\\-(10\\.0\\.[0-9\\.]+)\\.tgz" : $ver >= 9.0 ? "dolibarr\\-(9\\.0\\.[0-9\\.]+)\\.tgz" : $ver >= 8.0 ? "dolibarr\\-(8\\.0\\.[0-9\\.]+)\\.tgz" : $ver >= 7.0 ? "dolibarr\\-(7\\.0\\.[0-9\\.]+)\\.tgz" : diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index d1ef1377994..bacfdcb714a 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -348,7 +348,7 @@ while ($i < min($num, $limit)) $colspan = 9; print ""; print ''; - if (! empty($line->numero_compte) && $line->numero_compte != '-1') print length_accountg($line->numero_compte) . ' : ' . $object->get_compte_desc($line->numero_compte); + if ($line->numero_compte != "" && $line->numero_compte != '-1') print length_accountg($line->numero_compte) . ' : ' . $object->get_compte_desc($line->numero_compte); else print ''.$langs->trans("Unknown").''; print ''; print ''; diff --git a/htdocs/accountancy/class/lettering.class.php b/htdocs/accountancy/class/lettering.class.php index a0c977a8d5a..2a89c6c1c96 100644 --- a/htdocs/accountancy/class/lettering.class.php +++ b/htdocs/accountancy/class/lettering.class.php @@ -67,11 +67,11 @@ class Lettering extends BookKeeping $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu ON(bk.fk_doc = bu.fk_bank AND bu.type IN ('payment', 'payment_supplier') ) "; $sql .= " WHERE ( "; - if (! empty($object->code_compta)) + if ($object->code_compta != "") $sql .= " bk.subledger_account = '" . $object->code_compta . "' "; - if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) + if ($object->code_compta != "" && $object->code_compta_fournisseur != "") $sql .= " OR "; - if (! empty($object->code_compta_fournisseur)) + if ($object->code_compta_fournisseur != "") $sql .= " bk.subledger_account = '" . $object->code_compta_fournisseur . "' "; $sql .= " ) AND (bk.date_lettering ='' OR bk.date_lettering IS NULL) "; @@ -99,13 +99,13 @@ class Lettering extends BookKeeping $sql .= " AND facf.entity = ".$conf->entity; $sql .= " AND code_journal IN (SELECT code FROM " . MAIN_DB_PREFIX . "accounting_journal WHERE nature=4 AND entity=".$conf->entity.") "; $sql .= " AND ( "; - if (! empty($object->code_compta)) { + if ($object->code_compta != "") { $sql .= " bk.subledger_account = '" . $object->code_compta . "' "; } - if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) { + if ($object->code_compta != "" && $object->code_compta_fournisseur != "") { $sql .= " OR "; } - if (! empty($object->code_compta_fournisseur)) { + if ($object->code_compta_fournisseur != "") { $sql .= " bk.subledger_account = '" . $object->code_compta_fournisseur . "' "; } $sql .= " ) "; @@ -127,13 +127,13 @@ class Lettering extends BookKeeping $sql .= " WHERE bk.code_journal IN (SELECT code FROM " . MAIN_DB_PREFIX . "accounting_journal WHERE nature=3 AND entity=".$conf->entity.") "; $sql .= " AND facf.entity = ".$conf->entity; $sql .= " AND ( "; - if (! empty($object->code_compta)) { + if ($object->code_compta != "") { $sql .= " bk.subledger_account = '" . $object->code_compta . "' "; } - if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) { + if ($object->code_compta != "" && $object->code_compta_fournisseur != "") { $sql .= " OR "; } - if (! empty($object->code_compta_fournisseur)) { + if ($object->code_compta_fournisseur != "") { $sql .= " bk.subledger_account = '" . $object->code_compta_fournisseur . "' "; } $sql .= ") "; @@ -159,13 +159,13 @@ class Lettering extends BookKeeping $sql .= " AND bk.code_journal IN (SELECT code FROM " . MAIN_DB_PREFIX . "accounting_journal WHERE nature=4 AND entity=".$conf->entity.") "; $sql .= " AND fac.entity IN (".getEntity('invoice', 0).")";// We don't share object for accountancy $sql .= " AND ( "; - if (! empty($object->code_compta)) { + if ($object->code_compta != "") { $sql .= " bk.subledger_account = '" . $object->code_compta . "' "; } - if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) { + if ($object->code_compta != "" && $object->code_compta_fournisseur != "") { $sql .= " OR "; } - if (! empty($object->code_compta_fournisseur)) { + if ($object->code_compta_fournisseur != "") { $sql .= " bk.subledger_account = '" . $object->code_compta_fournisseur . "' "; } $sql .= " ) "; @@ -187,13 +187,13 @@ class Lettering extends BookKeeping $sql .= " WHERE code_journal IN (SELECT code FROM " . MAIN_DB_PREFIX . "accounting_journal WHERE nature=2 AND entity=".$conf->entity.") "; $sql .= " AND fac.entity IN (".getEntity('invoice', 0).")";// We don't share object for accountancy $sql .= " AND ( "; - if (! empty($object->code_compta)) { + if ($object->code_compta != "") { $sql .= " bk.subledger_account = '" . $object->code_compta . "' "; } - if (! empty($object->code_compta) && ! empty($object->code_compta_fournisseur)) { + if ($object->code_compta != "" && $object->code_compta_fournisseur != "") { $sql .= " OR "; } - if (! empty($object->code_compta_fournisseur)) { + if ($object->code_compta_fournisseur != "") { $sql .= " bk.subledger_account = '" . $object->code_compta_fournisseur . "' "; } $sql .= " ) "; diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index 0131f51d515..f063f832f54 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -211,10 +211,10 @@ if ($resql) { else print $row[1]; print ''; for($i = 2; $i <= 12; $i ++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; - print '' . price($row[14]) . ''; + print '' . price($row[13]) . ''; + print '' . price($row[14]) . ''; print ''; } $db->free($resql); @@ -289,10 +289,10 @@ if ($resql) { print ''; for($i = 2; $i <= 12; $i++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; - print '' . price($row[14]) . ''; + print '' . price($row[13]) . ''; + print '' . price($row[14]) . ''; print ''; } $db->free($resql); @@ -348,9 +348,9 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. while ($row = $db->fetch_row($resql)) { print '' . $row[0] . ''; for($i = 1; $i <= 12; $i ++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; + print '' . price($row[13]) . ''; print ''; } $db->free($resql); @@ -401,9 +401,9 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. print '' . $row[0] . ''; for($i = 1; $i <= 12; $i ++) { - print '' . price(price2num($row[$i])) . ''; + print '' . price(price2num($row[$i])) . ''; } - print '' . price(price2num($row[13])) . ''; + print '' . price(price2num($row[13])) . ''; print ''; } $db->free($resql); diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 19e85cdb651..ea174638a2a 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -385,7 +385,7 @@ if ($result) { print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->description); print ''; - print '' . price($objp->total_ht) . ''; + print '' . price($objp->total_ht) . ''; print '' . vatrate($objp->tva_tx.($objp->vat_src_code?' ('.$objp->vat_src_code.')':'')) . ''; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index ed1c40a6ad7..5314099db1f 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -503,7 +503,7 @@ if ($result) { print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->description); print ''; - print ''; + print ''; print price($objp->total_ht); print ''; diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index a5026f920a0..4fe2ee3120b 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -203,10 +203,10 @@ if ($resql) { else print $row[1]; print ''; for($i = 2; $i <= 12; $i ++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; - print '' . price($row[14]) . ''; + print '' . price($row[13]) . ''; + print '' . price($row[14]) . ''; print ''; } $db->free($resql); @@ -276,10 +276,10 @@ if ($resql) { else print $row[1]; print ''; for($i = 2; $i <= 12; $i ++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; - print '' . price($row[14]) . ''; + print '' . price($row[13]) . ''; + print '' . price($row[14]) . ''; print ''; } $db->free($resql); @@ -331,9 +331,9 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. while ($row = $db->fetch_row($resql)) { print '' . $row[0] . ''; for($i = 1; $i <= 12; $i ++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; + print '' . price($row[13]) . ''; print ''; } diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index 508dfb7136e..d15ef52ad39 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -319,7 +319,7 @@ if ($result) { print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->comments); print ''; - print '' . price($objp->total_ht) . ''; + print '' . price($objp->total_ht) . ''; print '' . vatrate($objp->tva_tx.($objp->vat_src_code?' ('.$objp->vat_src_code.')':'')) . ''; diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index 9f70d175d40..60b24638775 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -376,7 +376,7 @@ if ($result) { print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->comments); print ''; - print ''; + print ''; print price($objp->price); print ''; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index e4e07831b44..0f22789d630 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -171,8 +171,8 @@ if ($result) { //print $sql; // Variables - $account_supplier = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : 'NotDefined'); // NotDefined is a reserved word - $account_customer = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : 'NotDefined'); // NotDefined is a reserved word + $account_supplier = (($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER != "") ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : 'NotDefined'); // NotDefined is a reserved word + $account_customer = ($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER != "") ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : 'NotDefined'); // NotDefined is a reserved word $account_employee = (! empty($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT) ? $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT : 'NotDefined'); // NotDefined is a reserved word $account_pay_vat = (! empty($conf->global->ACCOUNTING_VAT_PAY_ACCOUNT) ? $conf->global->ACCOUNTING_VAT_PAY_ACCOUNT : 'NotDefined'); // NotDefined is a reserved word $account_pay_donation = (! empty($conf->global->DONATION_ACCOUNTINGACCOUNT) ? $conf->global->DONATION_ACCOUNTINGACCOUNT : 'NotDefined'); // NotDefined is a reserved word @@ -218,7 +218,7 @@ if ($result) { // Set accountancy code for thirdparty $compta_soc = 'NotDefined'; if ($lineisapurchase > 0) - $compta_soc = (! empty($obj->code_compta_fournisseur) ? $obj->code_compta_fournisseur : $account_supplier); + $compta_soc = (($obj->code_compta_fournisseur != "") ? $obj->code_compta_fournisseur : $account_supplier); if ($lineisasale > 0) $compta_soc = (! empty($obj->code_compta) ? $obj->code_compta : $account_customer); @@ -938,8 +938,8 @@ if (empty($action) || $action == 'view') { // Button to write into Ledger - if (empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1' - || empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1' + if (($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == "") || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1' + || ($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == "") || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1' || empty($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT) || $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT == '-1') { print '
'.img_warning().' '.$langs->trans("SomeMandatoryStepsOfSetupWereNotDone"); print ' : '.$langs->trans("AccountancyAreaDescMisc", 4, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").''); @@ -950,8 +950,8 @@ if (empty($action) || $action == 'view') { if (! empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) print ''; - if (empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1' - || empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1') { + if (($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == "") || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1' + || ($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == "") || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1') { print ''; } else { diff --git a/htdocs/accountancy/journal/expensereportsjournal.php b/htdocs/accountancy/journal/expensereportsjournal.php index 4c50015a2ba..d82381533cf 100644 --- a/htdocs/accountancy/journal/expensereportsjournal.php +++ b/htdocs/accountancy/journal/expensereportsjournal.php @@ -444,10 +444,10 @@ if ($action == 'exportcsv') { // ISO and not UTF8 ! foreach ($taber as $key => $val) { $date = dol_print_date($val["date"], 'day'); - + $userstatic->id = $tabuser[$key]['id']; $userstatic->name = $tabuser[$key]['name']; - + // Fees foreach ($tabht[$key] as $k => $mt) { $accountingaccount = new AccountingAccount($db); @@ -474,7 +474,7 @@ if ($action == 'exportcsv') { // ISO and not UTF8 ! print "\n"; } } - + // Third party foreach ($tabttc[$key] as $k => $mt) { print '"' . $date . '"' . $sep; @@ -585,7 +585,7 @@ if (empty($action) || $action == 'view') { // Account print ""; $accountoshow = length_accountg($k); - if (empty($accountoshow) || $accountoshow == 'NotDefined') + if (($accountoshow == "") || $accountoshow == 'NotDefined') { print ''.$langs->trans("FeeAccountNotDefined").''; } @@ -615,7 +615,7 @@ if (empty($action) || $action == 'view') { // Account print ""; $accountoshow = length_accounta($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT); - if (empty($accountoshow) || $accountoshow == 'NotDefined') + if (($accountoshow == "") || $accountoshow == 'NotDefined') { print ''.$langs->trans("MainAccountForUsersNotDefined").''; } @@ -624,7 +624,7 @@ if (empty($action) || $action == 'view') { // Subledger account print ""; $accountoshow = length_accounta($k); - if (empty($accountoshow) || $accountoshow == 'NotDefined') + if (($accountoshow == "") || $accountoshow == 'NotDefined') { print ''.$langs->trans("UserAccountNotDefined").''; } @@ -652,7 +652,7 @@ if (empty($action) || $action == 'view') { // Account print ""; $accountoshow = length_accountg($k); - if (empty($accountoshow) || $accountoshow == 'NotDefined') + if (($accountoshow == "") || $accountoshow == 'NotDefined') { print ''.$langs->trans("VATAccountNotDefined").''; } diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index cab5069e1f8..cd82e9f2f27 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -749,7 +749,7 @@ if (empty($action) || $action == 'view') { } print '
'; if (! empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) print ''; - if (empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1') { + if (($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == "") || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1') { print ''; } else { diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 8f82fd95afb..3b0607d34a7 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -146,7 +146,7 @@ if ($result) { $num = $db->num_rows($result); // Variables - $cptcli = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER)) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : 'NotDefined'; + $cptcli = (($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER != "")) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : 'NotDefined'; $cpttva = (! empty($conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT)) ? $conf->global->ACCOUNTING_VAT_SOLD_ACCOUNT : 'NotDefined'; $i = 0; @@ -679,14 +679,14 @@ if (empty($action) || $action == 'view') { journalHead($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => ''), '', $varlink); // Button to write into Ledger - if (empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1') { + if (($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == "") || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1') { print '
'; print img_warning().' '.$langs->trans("SomeMandatoryStepsOfSetupWereNotDone"); print ' : '.$langs->trans("AccountancyAreaDescMisc", 4, ''.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("MenuAccountancy").'-'.$langs->transnoentitiesnoconv("Setup")."-".$langs->transnoentitiesnoconv("MenuDefaultAccounts").''); } print '
'; if (! empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) print ''; - if (empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1') { + if (($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == "") || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1') { print ''; } else { @@ -813,7 +813,7 @@ if (empty($action) || $action == 'view') { // Account print ""; $accountoshow = length_accounta($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER); - if (empty($accountoshow) || $accountoshow == 'NotDefined') + if (($accountoshow == "") || $accountoshow == 'NotDefined') { print ''.$langs->trans("MainAccountForCustomersNotDefined").''; } @@ -822,7 +822,7 @@ if (empty($action) || $action == 'view') { // Subledger account print ""; $accountoshow = length_accounta($k); - if (empty($accountoshow) || $accountoshow == 'NotDefined') + if (($accountoshow == "") || $accountoshow == 'NotDefined') { print ''.$langs->trans("ThirdpartyAccountNotDefined").''; } @@ -849,7 +849,7 @@ if (empty($action) || $action == 'view') { // Account print ""; $accountoshow = length_accountg($k); - if (empty($accountoshow) || $accountoshow == 'NotDefined') + if (($accountoshow == "") || $accountoshow == 'NotDefined') { print ''.$langs->trans("ProductNotDefined").''; } @@ -884,7 +884,7 @@ if (empty($action) || $action == 'view') { // Account print ""; $accountoshow = length_accountg($k); - if (empty($accountoshow) || $accountoshow == 'NotDefined') + if (($accountoshow == "") || $accountoshow == 'NotDefined') { print ''.$langs->trans("VATAccountNotDefined").' ('.$langs->trans("Sale").')'.''; } diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index ca60735fcf0..bc632118da7 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -203,10 +203,10 @@ if ($resql) { else print $row[1]; print ''; for($i = 2; $i <= 12; $i ++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; - print '' . price($row[14]) . ''; + print '' . price($row[13]) . ''; + print '' . price($row[14]) . ''; print ''; } $db->free($resql); @@ -274,10 +274,10 @@ if ($resql) { else print $row[1]; print ''; for($i = 2; $i <= 12; $i++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; - print '' . price($row[14]) . ''; + print '' . price($row[13]) . ''; + print '' . price($row[14]) . ''; print ''; } $db->free($resql); @@ -329,9 +329,9 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) // This part of code looks strange. while ($row = $db->fetch_row($resql)) { print '' . $row[0] . ''; for($i = 1; $i <= 12; $i ++) { - print '' . price($row[$i]) . ''; + print '' . price($row[$i]) . ''; } - print '' . price($row[13]) . ''; + print '' . price($row[13]) . ''; print ''; } $db->free($resql); diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 352a73200fb..a67386f6fbd 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -396,7 +396,7 @@ if ($result) { print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->description); print ''; - print '' . price($objp->total_ht) . ''; + print '' . price($objp->total_ht) . ''; print '' . vatrate($objp->tva_tx.($objp->vat_src_code?' ('.$objp->vat_src_code.')':'')) . ''; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index fc8cc10fec4..17284513650 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -491,7 +491,7 @@ if ($result) { print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->description); print ''; - print ''; + print ''; print price($objp->total_ht); print ''; diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 731136fb7f4..99331de8c62 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -165,7 +165,7 @@ class BOM extends CommonObject */ public function __construct(DoliDB $db) { - global $conf, $langs, $user; + global $conf, $langs; $this->db = $db; @@ -184,11 +184,11 @@ class BOM extends CommonObject // Translate some data of arrayofkeyval foreach($this->fields as $key => $val) { - if (is_array($this->fields['status']['arrayofkeyval'])) + if (is_array($this->fields[$key]['arrayofkeyval'])) { - foreach($this->fields['status']['arrayofkeyval'] as $key2 => $val2) + foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2) { - $this->fields['status']['arrayofkeyval'][$key2]=$langs->trans($val2); + $this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2); } } } @@ -1066,7 +1066,7 @@ class BOMLine extends CommonObject */ public function __construct(DoliDB $db) { - global $conf, $langs, $user; + global $conf, $langs; $this->db = $db; @@ -1085,11 +1085,11 @@ class BOMLine extends CommonObject // Translate some data of arrayofkeyval foreach($this->fields as $key => $val) { - if (is_array($this->fields['status']['arrayofkeyval'])) + if (is_array($this->fields[$key]['arrayofkeyval'])) { - foreach($this->fields['status']['arrayofkeyval'] as $key2 => $val2) + foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2) { - $this->fields['status']['arrayofkeyval'][$key2]=$langs->trans($val2); + $this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2); } } } diff --git a/htdocs/categories/class/api_categories.class.php b/htdocs/categories/class/api_categories.class.php index c82d803f31c..c389e1b63d1 100644 --- a/htdocs/categories/class/api_categories.class.php +++ b/htdocs/categories/class/api_categories.class.php @@ -86,7 +86,7 @@ class Categories extends DolibarrApi throw new RestException(404, 'category not found'); } - if ( ! DolibarrApi::_checkAccessToResource('category', $this->category->id)) { + if ( ! DolibarrApi::_checkAccessToResource('categorie', $this->category->id)) { throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 754cb736bc9..d4020f4df92 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -1186,33 +1186,34 @@ function show_day_events2($username, $day, $month, $year, $monthshown, $style, & } } - $ids1='';$ids2=''; - if (count($cases1[$h]) && array_keys($cases1[$h])) $ids1=join(',', array_keys($cases1[$h])); - if (count($cases2[$h]) && array_keys($cases2[$h])) $ids2=join(',', array_keys($cases2[$h])); + $ids1=''; + $ids2=''; + if (is_array($cases1[$h]) && count($cases1[$h]) && array_keys($cases1[$h])) $ids1=join(',', array_keys($cases1[$h])); + if (is_array($cases2[$h]) && count($cases2[$h]) && array_keys($cases2[$h])) $ids2=join(',', array_keys($cases2[$h])); if ($h == $begin_h) echo ''; else echo ''; - if (count($cases1[$h]) == 1) // only 1 event + if (is_array($cases1[$h]) && count($cases1[$h]) == 1) // only 1 event { $output = array_slice($cases1[$h], 0, 1); $title1=$langs->trans("Ref").' '.$ids1.($title1?' - '.$title1:''); if ($output[0]['string']) $title1.=($title1?' - ':'').$output[0]['string']; if ($output[0]['color']) $color1 = $output[0]['color']; } - elseif (count($cases1[$h]) > 1) + elseif (is_array($cases1[$h]) && count($cases1[$h]) > 1) { $title1=$langs->trans("Ref").' '.$ids1.($title1?' - '.$title1:''); $color1='222222'; } - if (count($cases2[$h]) == 1) // only 1 event + if (is_array($cases2[$h]) && count($cases2[$h]) == 1) // only 1 event { $output = array_slice($cases2[$h], 0, 1); $title2=$langs->trans("Ref").' '.$ids2.($title2?' - '.$title2:''); if ($output[0]['string']) $title2.=($title2?' - ':'').$output[0]['string']; if ($output[0]['color']) $color2 = $output[0]['color']; } - elseif (count($cases2[$h]) > 1) + elseif (is_array($cases2[$h]) && count($cases2[$h]) > 1) { $title2=$langs->trans("Ref").' '.$ids2.($title2?' - '.$title2:''); $color2='222222'; diff --git a/htdocs/compta/bank/treso.php b/htdocs/compta/bank/treso.php index 5a4374f47dd..f17e622210e 100644 --- a/htdocs/compta/bank/treso.php +++ b/htdocs/compta/bank/treso.php @@ -293,9 +293,9 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) }else print ""; } print "".$refcomp.""; - if ($obj->total_ttc < 0) { print "".price(abs($total_ttc))." "; }; - if ($obj->total_ttc >= 0) { print " ".price($total_ttc).""; }; - print ''.price($solde).''; + if ($obj->total_ttc < 0) { print ''.price(abs($total_ttc))." "; }; + if ($obj->total_ttc >= 0) { print ' '.price($total_ttc).""; }; + print ''.price($solde).''; print ""; } diff --git a/htdocs/compta/journal/purchasesjournal.php b/htdocs/compta/journal/purchasesjournal.php index cd3bf06f43a..5b4e54fd807 100644 --- a/htdocs/compta/journal/purchasesjournal.php +++ b/htdocs/compta/journal/purchasesjournal.php @@ -123,7 +123,7 @@ if ($result) { $num = $db->num_rows($result); // les variables - $cptfour = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER)?$conf->global->ACCOUNTING_ACCOUNT_SUPPLIER:$langs->trans("CodeNotDef")); + $cptfour = (($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER != "")?$conf->global->ACCOUNTING_ACCOUNT_SUPPLIER:$langs->trans("CodeNotDef")); $cpttva = (! empty($conf->global->ACCOUNTING_VAT_BUY_ACCOUNT)?$conf->global->ACCOUNTING_VAT_BUY_ACCOUNT:$langs->trans("CodeNotDef")); $tabfac = array(); @@ -139,7 +139,7 @@ if ($result) { $obj = $db->fetch_object($result); // contrôles - $compta_soc = (! empty($obj->code_compta_fournisseur)?$obj->code_compta_fournisseur:$cptfour); + $compta_soc = (($obj->code_compta_fournisseur != "")?$obj->code_compta_fournisseur:$cptfour); $compta_prod = $obj->accountancy_code_buy; if (empty($compta_prod)) { diff --git a/htdocs/compta/journal/sellsjournal.php b/htdocs/compta/journal/sellsjournal.php index fe51665163e..123bb3c7770 100644 --- a/htdocs/compta/journal/sellsjournal.php +++ b/htdocs/compta/journal/sellsjournal.php @@ -146,7 +146,7 @@ if ($result) { $obj = $db->fetch_object($result); // les variables - $cptcli = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER)?$conf->global->ACCOUNTING_ACCOUNT_CUSTOMER:$langs->trans("CodeNotDef")); + $cptcli = (($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER != "")?$conf->global->ACCOUNTING_ACCOUNT_CUSTOMER:$langs->trans("CodeNotDef")); $compta_soc = (! empty($obj->code_compta)?$obj->code_compta:$cptcli); $compta_prod = $obj->accountancy_code_sell; if (empty($compta_prod)) diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index addc56a240b..70129e80403 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -943,7 +943,7 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) } print ""; - print ' '; + print ' '; if ($modecompta == 'BOOKKEEPING') { if (isset($encaiss[$case])) @@ -978,8 +978,8 @@ print ''; for ($annee = $year_start ; $annee <= $year_end ; $annee++) { $nbcols+=2; - print ''.(isset($totsorties[$annee])?price(price2num($totsorties[$annee], 'MT')):' ').''; - print ''.(isset($totentrees[$annee])?price(price2num($totentrees[$annee], 'MT')):' ').''; + print ''.(isset($totsorties[$annee])?price(price2num($totsorties[$annee], 'MT')):' ').''; + print ''.(isset($totentrees[$annee])?price(price2num($totentrees[$annee], 'MT')):' ').''; } print "\n"; diff --git a/htdocs/core/boxes/box_activity.php b/htdocs/core/boxes/box_activity.php index 300040639a8..995ba93fb64 100644 --- a/htdocs/core/boxes/box_activity.php +++ b/htdocs/core/boxes/box_activity.php @@ -422,7 +422,7 @@ class box_activity extends ModeleBoxes ); $totalnb += $data[$j]->nb; $this->info_box_contents[$line][3] = array( - 'td' => 'class="right"', + 'td' => 'class="nowrap right"', 'text' => price($data[$j]->Mnttot, 1, $langs, 0, 0, -1, $conf->currency), ); $this->info_box_contents[$line][4] = array( diff --git a/htdocs/core/boxes/box_commandes.php b/htdocs/core/boxes/box_commandes.php index 8575e739946..956e73b4acf 100644 --- a/htdocs/core/boxes/box_commandes.php +++ b/htdocs/core/boxes/box_commandes.php @@ -146,7 +146,7 @@ class box_commandes extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', + 'td' => 'class="nowrap right"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_factures_fourn_imp.php b/htdocs/core/boxes/box_factures_fourn_imp.php index 09de3b874e3..74f8cbc6b64 100644 --- a/htdocs/core/boxes/box_factures_fourn_imp.php +++ b/htdocs/core/boxes/box_factures_fourn_imp.php @@ -151,7 +151,7 @@ class box_factures_fourn_imp extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', + 'td' => 'class="nowrap right"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_factures_imp.php b/htdocs/core/boxes/box_factures_imp.php index fd85f136f96..a0692c791b2 100644 --- a/htdocs/core/boxes/box_factures_imp.php +++ b/htdocs/core/boxes/box_factures_imp.php @@ -161,7 +161,7 @@ class box_factures_imp extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', + 'td' => 'class="nowrap right"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/class/html.formaccounting.class.php b/htdocs/core/class/html.formaccounting.class.php index 87b32902684..03c70f749d2 100644 --- a/htdocs/core/class/html.formaccounting.class.php +++ b/htdocs/core/class/html.formaccounting.class.php @@ -21,7 +21,7 @@ /** * \file htdocs/core/class/html.formaccounting.class.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief File of class with all html predefined components */ require_once DOL_DOCUMENT_ROOT .'/core/class/html.form.class.php'; @@ -392,7 +392,7 @@ class FormAccounting extends Form $resql = $this->db->query($sql); if ($resql) { while ($obj = $this->db->fetch_object($resql)) { - if (!empty($obj->code_compta_fournisseur)) { + if ($obj->code_compta_fournisseur != "") { $aux_account[$obj->code_compta_fournisseur] = $obj->code_compta_fournisseur.' ('.$obj->nom.')'; } } diff --git a/htdocs/core/lib/accounting.lib.php b/htdocs/core/lib/accounting.lib.php index 889d9da8a2c..24f71255fc5 100644 --- a/htdocs/core/lib/accounting.lib.php +++ b/htdocs/core/lib/accounting.lib.php @@ -2,6 +2,7 @@ /* Copyright (C) 2013-2014 Olivier Geffroy * Copyright (C) 2013-2017 Alexandre Spangaro * Copyright (C) 2014 Florian Henry + * Copyright (C) 2019 Eric Seigne * * 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 @@ -19,10 +20,26 @@ /** * \file htdocs/core/lib/accounting.lib.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Library of accountancy functions */ + /** + * Check if a value is empty with some options + * + * @param allow_false : setting this to true will make the function consider a boolean value of false as NOT empty. This parameter is false by default. + * @param allow_ws : setting this to true will make the function consider a string with nothing but white space as NOT empty. This parameter is false by default. + * @return array Bool + * @author Michael - https://www.php.net/manual/fr/function.empty.php#90767 + */ + function is_empty($var, $allow_false = false, $allow_ws = false) { + if (!isset($var) || is_null($var) || ($allow_ws == false && trim($var) == "" && !is_bool($var)) || ($allow_false === false && is_bool($var) && $var === false) || (is_array($var) && empty($var))) { + return true; + } else { + return false; + } + } + /** * Prepare array with list of tabs * @@ -75,12 +92,12 @@ function length_accountg($account) { global $conf; - if ($account < 0 || empty($account)) return ''; + if ($account < 0 || is_empty($account)) return ''; - if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) return $account; + if (! is_empty($conf->global->ACCOUNTING_MANAGE_ZERO)) return $account; $g = $conf->global->ACCOUNTING_LENGTH_GACCOUNT; - if (! empty($g)) { + if (! is_empty($g)) { // Clean parameters $i = strlen($account); @@ -110,12 +127,12 @@ function length_accounta($accounta) { global $conf; - if ($accounta < 0 || empty($accounta)) return ''; + if ($accounta < 0 || is_empty($accounta)) return ''; - if (! empty($conf->global->ACCOUNTING_MANAGE_ZERO)) return $accounta; + if (! is_empty($conf->global->ACCOUNTING_MANAGE_ZERO)) return $accounta; $a = $conf->global->ACCOUNTING_LENGTH_AACCOUNT; - if (! empty($a)) { + if (! is_empty($a)) { // Clean parameters $i = strlen($accounta); @@ -158,7 +175,7 @@ function journalHead($nom, $variante, $period, $periodlink, $description, $build print "\n\n\n"; - if(! empty($varlink)) $varlink = '?'.$varlink; + if(! is_empty($varlink)) $varlink = '?'.$varlink; $head=array(); $h=0; diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index a315747b8f6..2f01cf441db 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -739,8 +739,8 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ global $conf,$user; if (! is_object($objsoc)) $valueforccc=$objsoc; - elseif ($table == "commande_fournisseur" || $table == "facture_fourn" ) $valueforccc=$objsoc->code_fournisseur; - else $valueforccc=$objsoc->code_client; + elseif ($table == "commande_fournisseur" || $table == "facture_fourn" ) $valueforccc=dol_string_unaccent($objsoc->code_fournisseur); + else $valueforccc=dol_string_unaccent($objsoc->code_client); $sharetable = $table; if ($table == 'facture' || $table == 'invoice') $sharetable = 'invoicenumber'; // for getEntity function @@ -988,6 +988,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ // Define $maskLike $maskLike = dol_string_nospecial($mask); $maskLike = str_replace("%", "_", $maskLike); + // Replace protected special codes with matching number of _ as wild card caracter $maskLike = preg_replace('/\{yyyy\}/i', '____', $maskLike); $maskLike = preg_replace('/\{yy\}/i', '__', $maskLike); @@ -1163,7 +1164,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ // Now we replace the refclient if ($maskrefclient) { - //print "maskrefclient=".$maskrefclient." maskwithonlyymcode=".$maskwithonlyymcode." maskwithnocode=".$maskwithnocode."\n
"; + //print "maskrefclient=".$maskrefclient." maskwithonlyymcode=".$maskwithonlyymcode." maskwithnocode=".$maskwithnocode." maskrefclient_clientcode=".$maskrefclient_clientcode."\n
";exit; $maskrefclient_maskbefore='{'.$maskrefclient.'}'; $maskrefclient_maskafter=$maskrefclient_clientcode.str_pad($maskrefclient_counter, dol_strlen($maskrefclient_maskcounter), "0", STR_PAD_LEFT); $numFinal = str_replace($maskrefclient_maskbefore, $maskrefclient_maskafter, $numFinal); diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 14c0435b4ad..56ca215e118 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -175,18 +175,29 @@ function pdf_getInstance($format = '', $metric = 'mm', $pagetype = 'P') /** * Return if pdf file is protected/encrypted * - * @param TCPDF $pdf PDF initialized object * @param string $pathoffile Path of file * @return boolean True or false */ -function pdf_getEncryption(&$pdf, $pathoffile) +function pdf_getEncryption($pathoffile) { + require_once TCPDF_PATH.'tcpdf_parser.php'; + $isencrypted = false; - $pdfparser = $pdf->_getPdfParser($pathoffile); - $data = $pdfparser->getParsedData(); - if (isset($data[0]['trailer'][1]['/Encrypt'])) { - $isencrypted = true; + $content = file_get_contents($pathoffile); + + //ob_start(); + @($parser = new \TCPDF_PARSER(ltrim($content))); + list($xref, $data) = $parser->getParsedData(); + unset($parser); + //ob_end_clean(); + + if (isset($xref['trailer']['encrypt'])) { + $isencrypted = true; // Secured pdf file are currently not supported + } + + if (empty($data)) { + $isencrypted = true; // Object list not found. Possible secured file } return $isencrypted; diff --git a/htdocs/core/modules/modSalaries.class.php b/htdocs/core/modules/modSalaries.class.php index e111e81ef6b..ed3aec4a48b 100644 --- a/htdocs/core/modules/modSalaries.class.php +++ b/htdocs/core/modules/modSalaries.class.php @@ -144,7 +144,7 @@ class modSalaries extends DolibarrModules $r++; $this->export_code[$r]=$this->rights_class.'_'.$r; - $this->export_label[$r]='Salaries and payments'; + $this->export_label[$r]='SalariesAndPayments'; $this->export_permission[$r]=array(array("salaries","export")); $this->export_fields_array[$r]=array('u.firstname'=>"Firstname",'u.lastname'=>"Lastname",'u.login'=>"Login",'u.salary'=>'CurrentSalary','p.datep'=>'DatePayment','p.datesp'=>'DateStartPeriod','p.dateep'=>'DateEndPeriod','p.amount'=>'AmountPayment','p.num_payment'=>'Numero','p.label'=>'Label','p.note'=>'Note'); $this->export_TypeFields_array[$r]=array('u.firstname'=>"Text",'u.lastname'=>"Text",'u.login'=>'Text','u.salary'=>"Numeric",'p.datep'=>'Date','p.datesp'=>'Date','p.dateep'=>'Date','p.amount'=>'Numeric','p.num_payment'=>'Numeric','p.label'=>'Text'); diff --git a/htdocs/core/modules/societe/mod_codecompta_panicum.php b/htdocs/core/modules/societe/mod_codecompta_panicum.php index 4c5ffcd66c5..f3106cef761 100644 --- a/htdocs/core/modules/societe/mod_codecompta_panicum.php +++ b/htdocs/core/modules/societe/mod_codecompta_panicum.php @@ -96,8 +96,8 @@ class mod_codecompta_panicum extends ModeleAccountancyCode $this->code=''; if (is_object($societe)) { - if ($type == 'supplier') $this->code = (! empty($societe->code_compta_fournisseur)?$societe->code_compta_fournisseur:''); - else $this->code = (! empty($societe->code_compta)?$societe->code_compta:''); + if ($type == 'supplier') $this->code = (($societe->code_compta_fournisseur != "")?$societe->code_compta_fournisseur:''); + else $this->code = (($societe->code_compta != "")?$societe->code_compta:''); } return 0; // return ok diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index f60051df970..ff4be06fcab 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -205,11 +205,11 @@ class EmailCollector extends CommonObject // Translate some data of arrayofkeyval foreach($this->fields as $key => $val) { - if (is_array($this->fields['status']['arrayofkeyval'])) + if (is_array($this->fields[$key]['arrayofkeyval'])) { - foreach($this->fields['status']['arrayofkeyval'] as $key2 => $val2) + foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2) { - $this->fields['status']['arrayofkeyval'][$key2]=$langs->trans($val2); + $this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2); } } } diff --git a/htdocs/emailcollector/class/emailcollectoraction.class.php b/htdocs/emailcollector/class/emailcollectoraction.class.php index 11ccfbc858e..ca710f99216 100644 --- a/htdocs/emailcollector/class/emailcollectoraction.class.php +++ b/htdocs/emailcollector/class/emailcollectoraction.class.php @@ -145,7 +145,7 @@ class EmailCollectorAction extends CommonObject */ public function __construct(DoliDB $db) { - global $conf, $langs, $user; + global $conf, $langs; $this->db = $db; @@ -164,11 +164,11 @@ class EmailCollectorAction extends CommonObject // Translate some data of arrayofkeyval foreach($this->fields as $key => $val) { - if (is_array($this->fields['status']['arrayofkeyval'])) + if (is_array($this->fields[$key]['arrayofkeyval'])) { - foreach($this->fields['status']['arrayofkeyval'] as $key2 => $val2) + foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2) { - $this->fields['status']['arrayofkeyval'][$key2]=$langs->trans($val2); + $this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2); } } } diff --git a/htdocs/emailcollector/class/emailcollectorfilter.class.php b/htdocs/emailcollector/class/emailcollectorfilter.class.php index f93ac51f673..5c7c7184ffc 100644 --- a/htdocs/emailcollector/class/emailcollectorfilter.class.php +++ b/htdocs/emailcollector/class/emailcollectorfilter.class.php @@ -114,7 +114,7 @@ class EmailCollectorFilter extends CommonObject */ public function __construct(DoliDB $db) { - global $conf, $langs, $user; + global $conf, $langs; $this->db = $db; @@ -133,11 +133,11 @@ class EmailCollectorFilter extends CommonObject // Translate some data of arrayofkeyval foreach($this->fields as $key => $val) { - if (is_array($this->fields['status']['arrayofkeyval'])) + if (is_array($this->fields[$key]['arrayofkeyval'])) { - foreach($this->fields['status']['arrayofkeyval'] as $key2 => $val2) + foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2) { - $this->fields['status']['arrayofkeyval'][$key2]=$langs->trans($val2); + $this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2); } } } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index f8e9dbcdbd1..4e861cd146a 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -9,7 +9,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2016 Marcos García * Copyright (C) 2015 Bahfir Abbes - * Copyright (C) 2015 Ferran Marcet + * Copyright (C) 2015-2019 Ferran Marcet * Copyright (C) 2016 Alexandre Spangaro * Copyright (C) 2018 Nicolas ZABOURI * Copyright (C) 2018 Frédéric France @@ -624,7 +624,7 @@ class FactureFournisseur extends CommonInvoice $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as p ON t.fk_mode_reglement = p.id"; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_incoterms as i ON t.fk_incoterms = i.rowid'; if ($id) $sql.= " WHERE t.rowid=".$id; - if ($ref) $sql.= " WHERE t.ref='".$this->db->escape($ref)."'"; + if ($ref) $sql.= " WHERE t.ref='".$this->db->escape($ref)."' AND t.entity IN (".getEntity('supplier_invoice').")"; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql=$this->db->query($sql); @@ -1394,7 +1394,8 @@ class FactureFournisseur extends CommonInvoice // We increase stock for product $up_ht_disc=$this->lines[$i]->pu_ht; if (! empty($this->lines[$i]->remise_percent) && empty($conf->global->STOCK_EXCLUDE_DISCOUNT_FOR_PMP)) $up_ht_disc=price2num($up_ht_disc * (100 - $this->lines[$i]->remise_percent) / 100, 'MU'); - $result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $up_ht_disc, $langs->trans("InvoiceValidatedInDolibarr", $num)); + if ($this->type == FactureFournisseur::TYPE_CREDIT_NOTE) $result=$mouvP->livraison($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $up_ht_disc, $langs->trans("InvoiceValidatedInDolibarr", $num)); + else $result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $up_ht_disc, $langs->trans("InvoiceValidatedInDolibarr", $num)); if ($result < 0) { $error++; } unset($this->line); } @@ -1523,7 +1524,8 @@ class FactureFournisseur extends CommonInvoice $mouvP = new MouvementStock($this->db); $mouvP->origin = &$this; // We increase stock for product - $result=$mouvP->livraison($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("InvoiceBackToDraftInDolibarr", $this->ref)); + if ($this->type == FactureFournisseur::TYPE_CREDIT_NOTE) $result=$mouvP->reception($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("InvoiceBackToDraftInDolibarr", $this->ref)); + else $result=$mouvP->livraison($user, $this->lines[$i]->fk_product, $idwarehouse, $this->lines[$i]->qty, $this->lines[$i]->subprice, $langs->trans("InvoiceBackToDraftInDolibarr", $this->ref)); } } } diff --git a/htdocs/hrm/index.php b/htdocs/hrm/index.php index 066a21ebad0..54a0837e1fe 100644 --- a/htdocs/hrm/index.php +++ b/htdocs/hrm/index.php @@ -134,6 +134,7 @@ if (! empty($conf->holiday->enabled)) { $user_id = $user->id; + print '
'; print ''; print ''; print ""; @@ -152,7 +153,7 @@ if (! empty($conf->holiday->enabled)) print ''; print ''; - print '
'.$langs->trans("Holidays").'

'; + print '

'; } elseif (! is_numeric($conf->global->HOLIDAY_HIDE_BALANCE)) { diff --git a/htdocs/install/mysql/tables/llx_bom_bom.sql b/htdocs/install/mysql/tables/llx_bom_bom.sql index 9c6e014586d..11e1ce74ffd 100644 --- a/htdocs/install/mysql/tables/llx_bom_bom.sql +++ b/htdocs/install/mysql/tables/llx_bom_bom.sql @@ -27,10 +27,9 @@ CREATE TABLE llx_bom_bom( qty double(24,8), efficiency double(8,4) DEFAULT 1, date_creation datetime NOT NULL, - date_valid datetime NOT NULL, + date_valid datetime, tms timestamp, - date_valid datetime, - fk_user_creat integer NOT NULL, + fk_user_creat integer NOT NULL, fk_user_modif integer, fk_user_valid integer, import_key varchar(14), diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 5fc1994247c..c135fe86206 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -804,6 +804,7 @@ Permission401=Read discounts Permission402=Create/modify discounts Permission403=Validate discounts Permission404=Delete discounts +Permission430=Use Debug Bar Permission511=Read payments of salaries Permission512=Create/modify payments of salaries Permission514=Delete payments of salaries @@ -818,6 +819,9 @@ Permission532=Create/modify services Permission534=Delete services Permission536=See/manage hidden services Permission538=Export services +Permission650=Read bom of Bom +Permission651=Create/Update bom of Bom +Permission652=Delete bom of Bom Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations @@ -837,6 +841,12 @@ Permission1101=Read delivery orders Permission1102=Create/modify delivery orders Permission1104=Validate delivery orders Permission1109=Delete delivery orders +Permission1121=Read supplier proposals +Permission1122=Create/modify supplier proposals +Permission1123=Validate supplier proposals +Permission1124=Send supplier proposals +Permission1125=Delete supplier proposals +Permission1126=Close supplier price requests Permission1181=Read suppliers Permission1182=Read purchase orders Permission1183=Create/modify purchase orders @@ -859,16 +869,6 @@ Permission1251=Run mass imports of external data into database (data load) Permission1321=Export customer invoices, attributes and payments Permission1322=Reopen a paid bill Permission1421=Export sales orders and attributes -Permission20001=Read leave requests (your leave and those of your subordinates) -Permission20002=Create/modify your leave requests (your leave and those of your subordinates) -Permission20003=Delete leave requests -Permission20004=Read all leave requests (even of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even of user not subordinates) -Permission20006=Admin leave requests (setup and update balance) -Permission23001=Read Scheduled job -Permission23002=Create/update Scheduled job -Permission23003=Delete Scheduled job -Permission23004=Execute Scheduled job Permission2401=Read actions (events or tasks) linked to his account Permission2402=Create/modify actions (events or tasks) linked to his account Permission2403=Delete actions (events or tasks) linked to his account @@ -882,9 +882,38 @@ Permission2503=Submit or delete documents Permission2515=Setup documents directories Permission2801=Use FTP client in read mode (browse and download only) Permission2802=Use FTP client in write mode (delete or upload files) +Permission3200=Read archived events and fingerprints +Permission4001=See employees +Permission4002=Create employees +Permission4003=Delete employees +Permission4004=Export employees +Permission10001=Read website content +Permission10002=Create/modify website content (html and javascript content) +Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. +Permission10005=Delete website content +Permission20001=Read leave requests (your leave and those of your subordinates) +Permission20002=Create/modify your leave requests (your leave and those of your subordinates) +Permission20003=Delete leave requests +Permission20004=Read all leave requests (even of user not subordinates) +Permission20005=Create/modify leave requests for everybody (even of user not subordinates) +Permission20006=Admin leave requests (setup and update balance) +Permission23001=Read Scheduled job +Permission23002=Create/update Scheduled job +Permission23003=Delete Scheduled job +Permission23004=Execute Scheduled job Permission50101=Use Point of Sale Permission50201=Read transactions Permission50202=Import transactions +Permission50401=Bind products and invoices with accounting accounts +Permission50411=Read operations in ledger +Permission50412=Write/Edit operations in ledger +Permission50420=Report and export reports (turnover, balance, journals, ledger) +Permission50430=Define and close a fiscal year +Permission50440=Manage chart of accounts, setup of accountancy +Permission51001=Read assets +Permission51002=Create/Update assets +Permission51003=Delete assets +Permission51005=Setup types of asset Permission54001=Print Permission55001=Read polls Permission55002=Create/modify polls diff --git a/htdocs/langs/en_US/salaries.lang b/htdocs/langs/en_US/salaries.lang index 1e3607ce7cc..7c3c08a65bd 100644 --- a/htdocs/langs/en_US/salaries.lang +++ b/htdocs/langs/en_US/salaries.lang @@ -17,3 +17,5 @@ TJMDescription=This value is currently for information only and is not used for LastSalaries=Latest %s salary payments AllSalaries=All salary payments SalariesStatistics=Salary statistics +# Export +SalariesAndPayments=Salaries and payments diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index 43f82e9f1fb..2683c9a90eb 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -100,4 +100,6 @@ DynamicPHPCodeContainsAForbiddenInstruction=You add dynamic PHP code that contai NotAllowedToAddDynamicContent=You don't have permission to add or edit PHP dynamic content in websites. Ask permission or just keep code into php tags unmodified. ReplaceWebsiteContent=Replace website content DeleteAlsoJs=Delete also all javascript files specific to this website? -DeleteAlsoMedias=Delete also all medias files specific to this website? \ No newline at end of file +DeleteAlsoMedias=Delete also all medias files specific to this website? +# Export +MyWebsitePages=My website pages \ No newline at end of file diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 266b8d1925f..1b4d1c7b52d 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -227,11 +227,11 @@ class MyObject extends CommonObject // Translate some data of arrayofkeyval foreach($this->fields as $key => $val) { - if (is_array($this->fields['status']['arrayofkeyval'])) + if (is_array($this->fields[$key]['arrayofkeyval'])) { - foreach($this->fields['status']['arrayofkeyval'] as $key2 => $val2) + foreach($this->fields[$key]['arrayofkeyval'] as $key2 => $val2) { - $this->fields['status']['arrayofkeyval'][$key2]=$langs->trans($val2); + $this->fields[$key]['arrayofkeyval'][$key2]=$langs->trans($val2); } } } diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index fa77cb4b52c..38ef7ee7cf2 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -179,6 +179,7 @@ $sql.= $db->plimit($max, 0); $resql=$db->query($sql); if ($resql) { + print '
'; print ''; print ''; print ''; @@ -242,7 +243,7 @@ if ($resql) $i++; } } - print "
'.$langs->trans("LatestModifiedProjects", $max).'

"; + print "

"; } else dol_print_error($db); diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 84bda8abd54..ce7617f003d 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -928,7 +928,7 @@ class Societe extends CommonObject if (! empty($allowmodcodefournisseur) && ! empty($this->fournisseur)) { // Attention get_codecompta peut modifier le code suivant le module utilise - if (empty($this->code_compta_fournisseur)) + if ($this->code_compta_fournisseur == "") { $ret=$this->get_codecompta('supplier'); if ($ret < 0) return -1; @@ -1085,7 +1085,7 @@ class Societe extends CommonObject if ($supplier) { $sql .= ", code_fournisseur = ".(! empty($this->code_fournisseur)?"'".$this->db->escape($this->code_fournisseur)."'":"null"); - $sql .= ", code_compta_fournisseur = ".(! empty($this->code_compta_fournisseur)?"'".$this->db->escape($this->code_compta_fournisseur)."'":"null"); + $sql .= ", code_compta_fournisseur = ".(($this->code_compta_fournisseur != "")?"'".$this->db->escape($this->code_compta_fournisseur)."'":"null"); } $sql .= ", fk_user_modif = ".($user->id > 0 ? $user->id:"null"); $sql .= ", fk_multicurrency = ".(int) $this->fk_multicurrency;