From d4e2fab9834ab10bcd9be6b90f8b4c4aba8d74df Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Mon, 13 May 2019 22:25:15 +0200 Subject: [PATCH 01/22] Replace term "Advanced accountancy" by Accountancy (Double entries) --- htdocs/accountancy/admin/account.php | 2 +- htdocs/accountancy/admin/accountmodel.php | 2 +- htdocs/accountancy/admin/card.php | 2 +- htdocs/accountancy/admin/categories.php | 2 +- htdocs/accountancy/admin/closure.php | 2 +- htdocs/accountancy/admin/defaultaccounts.php | 2 +- htdocs/accountancy/admin/export.php | 2 +- htdocs/accountancy/admin/fiscalyear.php | 2 +- htdocs/accountancy/admin/fiscalyear_card.php | 2 +- htdocs/accountancy/admin/fiscalyear_info.php | 2 +- htdocs/accountancy/admin/index.php | 2 +- htdocs/accountancy/admin/journals_list.php | 2 +- htdocs/accountancy/admin/productaccount.php | 2 +- htdocs/accountancy/bookkeeping/balance.php | 2 +- htdocs/accountancy/bookkeeping/balancebymonth.php | 2 +- htdocs/accountancy/bookkeeping/card.php | 2 +- htdocs/accountancy/bookkeeping/list.php | 7 +++++-- htdocs/accountancy/bookkeeping/listbyaccount.php | 2 +- .../bookkeeping/thirdparty_lettering_supplier.php | 2 +- htdocs/accountancy/class/accountancycategory.class.php | 2 +- htdocs/accountancy/class/accountancyexport.class.php | 2 +- htdocs/accountancy/class/accountancysystem.class.php | 2 +- htdocs/accountancy/class/accountingaccount.class.php | 2 +- htdocs/accountancy/class/accountingjournal.class.php | 2 +- htdocs/accountancy/class/bookkeeping.class.php | 2 +- htdocs/accountancy/class/lettering.class.php | 2 +- htdocs/accountancy/customer/card.php | 2 +- htdocs/accountancy/customer/index.php | 2 +- htdocs/accountancy/customer/lines.php | 2 +- htdocs/accountancy/customer/list.php | 2 +- htdocs/accountancy/expensereport/card.php | 2 +- htdocs/accountancy/expensereport/index.php | 2 +- htdocs/accountancy/expensereport/lines.php | 2 +- htdocs/accountancy/expensereport/list.php | 2 +- htdocs/accountancy/index.php | 2 +- htdocs/accountancy/journal/bankjournal.php | 2 +- htdocs/accountancy/journal/expensereportsjournal.php | 2 +- htdocs/accountancy/journal/purchasesjournal.php | 2 +- htdocs/accountancy/journal/sellsjournal.php | 2 +- htdocs/accountancy/supplier/card.php | 2 +- htdocs/accountancy/supplier/index.php | 2 +- htdocs/accountancy/supplier/lines.php | 2 +- htdocs/accountancy/supplier/list.php | 2 +- 43 files changed, 47 insertions(+), 44 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 9d4f4b68370..1a42b927506 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -19,7 +19,7 @@ /** * \file htdocs/accountancy/admin/account.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief List accounting account */ diff --git a/htdocs/accountancy/admin/accountmodel.php b/htdocs/accountancy/admin/accountmodel.php index 6404b6119e7..f44ff0071d2 100644 --- a/htdocs/accountancy/admin/accountmodel.php +++ b/htdocs/accountancy/admin/accountmodel.php @@ -28,7 +28,7 @@ /** * \file htdocs/accountancy/admin/accountmodel.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page to administer model of chart of accounts */ diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 6d43f01b03f..a6c3969e64a 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -19,7 +19,7 @@ /** * \file htdocs/accountancy/admin/card.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Card of accounting account */ diff --git a/htdocs/accountancy/admin/categories.php b/htdocs/accountancy/admin/categories.php index faba7fb1c62..17fa65d4f5e 100644 --- a/htdocs/accountancy/admin/categories.php +++ b/htdocs/accountancy/admin/categories.php @@ -18,7 +18,7 @@ /** * \file htdocs/accountancy/admin/categories.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page to assign mass categories to accounts */ diff --git a/htdocs/accountancy/admin/closure.php b/htdocs/accountancy/admin/closure.php index ff559332316..a638d598ac9 100644 --- a/htdocs/accountancy/admin/closure.php +++ b/htdocs/accountancy/admin/closure.php @@ -18,7 +18,7 @@ /** * \file htdocs/accountancy/admin/closure.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Setup page to configure accounting expert module */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/admin/defaultaccounts.php b/htdocs/accountancy/admin/defaultaccounts.php index 4ea9ff9139a..cba9ac92f3b 100644 --- a/htdocs/accountancy/admin/defaultaccounts.php +++ b/htdocs/accountancy/admin/defaultaccounts.php @@ -24,7 +24,7 @@ /** * \file htdocs/accountancy/admin/defaultaccounts.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Setup page to configure accounting expert module */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/admin/export.php b/htdocs/accountancy/admin/export.php index 15e455cf84c..74090e54120 100644 --- a/htdocs/accountancy/admin/export.php +++ b/htdocs/accountancy/admin/export.php @@ -23,7 +23,7 @@ /** * \file htdocs/accountancy/admin/export.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Setup page to configure accounting expert module */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/admin/fiscalyear.php b/htdocs/accountancy/admin/fiscalyear.php index df2dec9d3b1..47211087956 100644 --- a/htdocs/accountancy/admin/fiscalyear.php +++ b/htdocs/accountancy/admin/fiscalyear.php @@ -17,7 +17,7 @@ /** * \file htdocs/accountancy/admin/fiscalyear.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Setup page to configure fiscal year */ diff --git a/htdocs/accountancy/admin/fiscalyear_card.php b/htdocs/accountancy/admin/fiscalyear_card.php index 4063e28f369..5dc6010d465 100644 --- a/htdocs/accountancy/admin/fiscalyear_card.php +++ b/htdocs/accountancy/admin/fiscalyear_card.php @@ -18,7 +18,7 @@ /** * \file htdocs/accountancy/admin/fiscalyear_card.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page to show a fiscal year */ diff --git a/htdocs/accountancy/admin/fiscalyear_info.php b/htdocs/accountancy/admin/fiscalyear_info.php index 86b01fa7397..dfec49949a3 100644 --- a/htdocs/accountancy/admin/fiscalyear_info.php +++ b/htdocs/accountancy/admin/fiscalyear_info.php @@ -17,7 +17,7 @@ /** * \file htdocs/accountancy/admin/fiscalyear_info.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page to show info of a fiscal year */ diff --git a/htdocs/accountancy/admin/index.php b/htdocs/accountancy/admin/index.php index 965b63ba9b9..fefa081848e 100644 --- a/htdocs/accountancy/admin/index.php +++ b/htdocs/accountancy/admin/index.php @@ -24,7 +24,7 @@ /** * \file htdocs/accountancy/admin/index.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Setup page to configure accounting expert module */ diff --git a/htdocs/accountancy/admin/journals_list.php b/htdocs/accountancy/admin/journals_list.php index c48e1a5989d..cac81bfbcae 100644 --- a/htdocs/accountancy/admin/journals_list.php +++ b/htdocs/accountancy/admin/journals_list.php @@ -18,7 +18,7 @@ /** * \file htdocs/accountancy/admin/journals_list.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Setup page to configure journals */ diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index 80c2ed052c0..4d5561e3aca 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/admin/productaccount.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief To define accounting account on product / service */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index 6d2c7644d85..44a12b76f36 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/bookkeeping/balance.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Balance of book keeping */ diff --git a/htdocs/accountancy/bookkeeping/balancebymonth.php b/htdocs/accountancy/bookkeeping/balancebymonth.php index edf7383b595..b9568228a36 100644 --- a/htdocs/accountancy/bookkeeping/balancebymonth.php +++ b/htdocs/accountancy/bookkeeping/balancebymonth.php @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/bookkeeping/balancebymonth.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Balance by month */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index 8974b65a68f..24a0e9605a4 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/bookkeeping/card.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page to show book-entry */ diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 207ea3464d8..7df29416878 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -1,7 +1,7 @@ * Copyright (C) 2013-2016 Florian Henry - * Copyright (C) 2013-2018 Alexandre Spangaro + * Copyright (C) 2013-2019 Alexandre Spangaro * Copyright (C) 2016-2017 Laurent Destailleur * Copyright (C) 2018 Frédéric France * @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/bookkeeping/list.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief List operation of book keeping */ require '../../main.inc.php'; @@ -47,6 +47,9 @@ $search_date_creation_start = dol_mktime(0, 0, 0, GETPOST('date_creation_startmo $search_date_creation_end = dol_mktime(0, 0, 0, GETPOST('date_creation_endmonth', 'int'), GETPOST('date_creation_endday', 'int'), GETPOST('date_creation_endyear', 'int')); $search_date_modification_start = dol_mktime(0, 0, 0, GETPOST('date_modification_startmonth', 'int'), GETPOST('date_modification_startday', 'int'), GETPOST('date_modification_startyear', 'int')); $search_date_modification_end = dol_mktime(0, 0, 0, GETPOST('date_modification_endmonth', 'int'), GETPOST('date_modification_endday', 'int'), GETPOST('date_modification_endyear', 'int')); +$search_date_export_start = dol_mktime(0, 0, 0, GETPOST('date_export_startmonth', 'int'), GETPOST('date_export_startday', 'int'), GETPOST('date_export_startyear', 'int')); +$search_date_export_end = dol_mktime(0, 0, 0, GETPOST('date_export_endmonth', 'int'), GETPOST('date_export_endday', 'int'), GETPOST('date_export_endyear', 'int')); + //var_dump($search_date_start);exit; if (GETPOST("button_delmvt_x") || GETPOST("button_delmvt.x") || GETPOST("button_delmvt")) { $action = 'delbookkeepingyear'; diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index 38dc49c5bf6..7b57f443ef9 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/bookkeeping/listbyaccount.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief List operation of book keeping ordered by account number */ diff --git a/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php b/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php index 50b80c72338..87bd79bb64d 100644 --- a/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php +++ b/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php @@ -22,7 +22,7 @@ /** * \file htdocs/accountancy/bookkeeping/thirdparty_lettrage_supplier.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Tab to setup lettering */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/class/accountancycategory.class.php b/htdocs/accountancy/class/accountancycategory.class.php index 523fba7acda..f11ff3957f7 100644 --- a/htdocs/accountancy/class/accountancycategory.class.php +++ b/htdocs/accountancy/class/accountancycategory.class.php @@ -19,7 +19,7 @@ /** * \file htdocs/accountancy/class/accountancycategory.class.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief File of class to manage categories of an accounting category_type */ diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php index 344a45f19fc..5da52e05784 100644 --- a/htdocs/accountancy/class/accountancyexport.class.php +++ b/htdocs/accountancy/class/accountancyexport.class.php @@ -27,7 +27,7 @@ /** * \file htdocs/accountancy/class/accountancyexport.class.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Class accountancy export */ diff --git a/htdocs/accountancy/class/accountancysystem.class.php b/htdocs/accountancy/class/accountancysystem.class.php index c8a855c0d8a..102ee4cce61 100644 --- a/htdocs/accountancy/class/accountancysystem.class.php +++ b/htdocs/accountancy/class/accountancysystem.class.php @@ -19,7 +19,7 @@ /** * \file htdocs/accountancy/class/accountancysystem.class.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief File of class to manage accountancy systems */ diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index 33f8990bc8d..dc5d8eab77d 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -22,7 +22,7 @@ /** * \file htdocs/accountancy/class/accountingaccount.class.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief File of class to manage accounting accounts */ diff --git a/htdocs/accountancy/class/accountingjournal.class.php b/htdocs/accountancy/class/accountingjournal.class.php index eb99badd5f3..e8caaab8a89 100644 --- a/htdocs/accountancy/class/accountingjournal.class.php +++ b/htdocs/accountancy/class/accountingjournal.class.php @@ -17,7 +17,7 @@ /** * \file htdocs/accountancy/class/accountingjournal.class.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief File of class to manage accounting journals */ diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 3c985d325bc..c1df8b1045c 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -20,7 +20,7 @@ /** * \file htdocs/accountancy/class/bookkeeping.class.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief File of class to manage Ledger (General Ledger and Subledger) */ diff --git a/htdocs/accountancy/class/lettering.class.php b/htdocs/accountancy/class/lettering.class.php index 555e1a244a6..a0c977a8d5a 100644 --- a/htdocs/accountancy/class/lettering.class.php +++ b/htdocs/accountancy/class/lettering.class.php @@ -20,7 +20,7 @@ /** * \file htdocs/accountancy/class/lettering.class.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief File of class for lettering */ diff --git a/htdocs/accountancy/customer/card.php b/htdocs/accountancy/customer/card.php index 5c1dfc5ccbb..eb66b235d0b 100644 --- a/htdocs/accountancy/customer/card.php +++ b/htdocs/accountancy/customer/card.php @@ -19,7 +19,7 @@ /** * \file htdocs/accountancy/customer/card.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Card customer ventilation */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index aa8161b9c52..1086800e355 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -22,7 +22,7 @@ /** * \file htdocs/accountancy/customer/index.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Home customer journalization page */ diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index f7a53c9e210..2801e234486 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/customer/lines.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page of detail of the lines of ventilation of invoices customers */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 4b3906d60da..90bb9574961 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -22,7 +22,7 @@ /** * \file htdocs/accountancy/customer/list.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Ventilation page from customers invoices */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/expensereport/card.php b/htdocs/accountancy/expensereport/card.php index eb620d7bf14..1052a1d485d 100644 --- a/htdocs/accountancy/expensereport/card.php +++ b/htdocs/accountancy/expensereport/card.php @@ -23,7 +23,7 @@ */ /** * \file htdocs/accountancy/supplier/card.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Card expense report ventilation */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index e350a3011a0..f5e71082bfa 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -20,7 +20,7 @@ /** * \file htdocs/accountancy/expensereport/index.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Home expense report ventilation */ diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index 3a322c07ef3..30734bb803b 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/expensereport/lines.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page of detail of the lines of ventilation of expense reports */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index 4f037f3c72b..ffb9297626b 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -22,7 +22,7 @@ /** * \file htdocs/accountancy/expensereport/list.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Ventilation page from expense reports */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index b34efe5ea04..922f1285b3c 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -18,7 +18,7 @@ /** * \file htdocs/accountancy/index.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Home accounting module */ diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 275af10701d..49e76c51dde 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -27,7 +27,7 @@ /** * \file htdocs/accountancy/journal/bankjournal.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page with bank journal */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/journal/expensereportsjournal.php b/htdocs/accountancy/journal/expensereportsjournal.php index 30ed5a07207..fcb0ac8713f 100644 --- a/htdocs/accountancy/journal/expensereportsjournal.php +++ b/htdocs/accountancy/journal/expensereportsjournal.php @@ -25,7 +25,7 @@ /** * \file htdocs/accountancy/journal/expensereportsjournal.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page with expense reports journal */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 6bbc4ad9c62..f23bc48c134 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -25,7 +25,7 @@ /** * \file htdocs/accountancy/journal/purchasesjournal.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page with purchases journal */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 25c53863162..ac36238af6e 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -26,7 +26,7 @@ /** * \file htdocs/accountancy/journal/sellsjournal.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page with sells journal */ diff --git a/htdocs/accountancy/supplier/card.php b/htdocs/accountancy/supplier/card.php index 10e52d6c029..97f7d618ce8 100644 --- a/htdocs/accountancy/supplier/card.php +++ b/htdocs/accountancy/supplier/card.php @@ -23,7 +23,7 @@ */ /** * \file htdocs/accountancy/supplier/card.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Card supplier ventilation */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index ab85507a7b4..95bcc15b9fd 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -20,7 +20,7 @@ /** * \file htdocs/accountancy/supplier/index.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Home supplier journalization page */ diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 4af51060b4b..7752d8355f0 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -21,7 +21,7 @@ /** * \file htdocs/accountancy/supplier/lines.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Page of detail of the lines of ventilation of invoices suppliers */ require '../../main.inc.php'; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 27cccdb7eb2..c6480c6d6eb 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -22,7 +22,7 @@ /** * \file htdocs/accountancy/supplier/list.php - * \ingroup Advanced accountancy + * \ingroup Accountancy (Double entries) * \brief Ventilation page from suppliers invoices */ require '../../main.inc.php'; From 7c9ccee64d21634b3a364cdb2bc0d5ec780f0c8c Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Tue, 14 May 2019 05:45:36 +0200 Subject: [PATCH 02/22] NEW Accountancy - Differentiated export --- htdocs/accountancy/bookkeeping/list.php | 66 +++++++++++++++++-- .../accountancy/class/bookkeeping.class.php | 23 ++++--- .../install/mysql/migration/9.0.0-10.0.0.sql | 2 + .../tables/llx_accounting_bookkeeping.sql | 5 +- htdocs/langs/en_US/main.lang | 1 + 5 files changed, 80 insertions(+), 17 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 7df29416878..ac9811c687c 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -146,6 +146,7 @@ $arrayfields=array( 't.code_journal'=>array('label'=>$langs->trans("Codejournal"), 'checked'=>1), 't.date_creation'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0), 't.tms'=>array('label'=>$langs->trans("DateModification"), 'checked'=>0), + 't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>0), ); if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.lettering_code']); @@ -181,6 +182,8 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $search_date_creation_end = ''; $search_date_modification_start = ''; $search_date_modification_end = ''; + $search_date_export_start = ''; + $search_date_export_end = ''; $search_debit = ''; $search_credit = ''; $search_lettering_code = ''; @@ -272,6 +275,16 @@ if (! empty($search_date_modification_end)) { $tmp=dol_getdate($search_date_modification_end); $param .= '&date_modification_endmonth=' . $tmp['mon'] . '&date_modification_endday=' . $tmp['mday'] . '&date_modification_endyear=' . $tmp['year']; } +if (! empty($search_date_export_start)) { + $filter['t.date_export>='] = $search_date_export_start; + $tmp=dol_getdate($search_date_export_start); + $param .= '&date_export_startmonth=' . $tmp['mon'] . '&date_export_startday=' . $tmp['mday'] . '&date_export_startyear=' . $tmp['year']; +} +if (! empty($search_date_export_end)) { + $filter['t.date_export<='] = $search_date_export_end; + $tmp=dol_getdate($search_date_export_end); + $param .= '&date_export_endmonth=' . $tmp['mon'] . '&date_export_endday=' . $tmp['mday'] . '&date_export_endyear=' . $tmp['year']; +} if (! empty($search_debit)) { $filter['t.debit'] = $search_debit; $param .= '&search_debit=' . urlencode($search_debit); @@ -351,8 +364,9 @@ if ($action == 'delmouvconfirm') { // Export into a file with format defined into setup (FEC, CSV, ...) if ($action == 'export_file') { + $reexportMovements = GETPOST('already_exported')=='on'?1:0; - $result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter); + $result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter, 'AND', $reexportMovements); if ($result < 0) { @@ -363,6 +377,22 @@ if ($action == 'export_file') { $accountancyexport = new AccountancyExport($db); $accountancyexport->export($object->lines); + // TODO Move in class bookKeeping + // Specify as export : update field date_export + foreach ( $object->lines as $movement ) { + $now = dol_now(); + $sql = " UPDATE " . MAIN_DB_PREFIX . "accounting_bookkeeping"; + $sql .= " SET date_export = '" . $db->idate($now) . "'"; + $sql .= " WHERE rowid = " . $movement->id; + + dol_syslog("/accountancy/bookeeping/list.php Function export_file Specify movements as exported sql=" . $sql, LOG_DEBUG); + if ($db->query($sql)) { + $db->commit(); + } else { + $db->rollback(); + } + } + if (!empty($accountancyexport->errors)) { setEventMessages('', $accountancyexport->errors, 'errors'); @@ -446,10 +476,10 @@ print ''; print ''; $listofformat=AccountancyExport::getType(); -$button = ''; +$button = ' ' . $langs->trans("IncludeDocsAlreadyExported"); +$button .= 'global->ACCOUNTING_EXPORT_MODELCSV].')'.'" name="button_export_file" href="'.$_SERVER["PHP_SELF"].'?action=export_file'.($param?'&'.$param:'').'">'; if (count($filter)) $button.= $langs->trans("ExportFilteredList"); else $button.= $langs->trans("ExportList"); -//$button.=' ('.$listofformat[$conf->global->ACCOUNTING_EXPORT_MODELCSV].')'; $button.= ''; @@ -600,6 +630,20 @@ if (! empty($arrayfields['t.tms']['checked'])) print ''; print ''; } +// Date export +if (! empty($arrayfields['t.date_export']['checked'])) +{ + print ''; + print '
'; + print $langs->trans('From') . ' '; + print $form->selectDate($search_date_export_start, 'date_export_start', 0, 0, 1); + print '
'; + print '
'; + print $langs->trans('to') . ' '; + print $form->selectDate($search_date_export_end, 'date_export_end', 0, 0, 1); + print '
'; + print ''; +} // Action column print ''; $searchpicto=$form->showFilterButtons(); @@ -620,6 +664,7 @@ if (! empty($arrayfields['t.lettering_code']['checked'])) print_liste_field_tit if (! empty($arrayfields['t.code_journal']['checked'])) print_liste_field_titre($arrayfields['t.code_journal']['label'], $_SERVER['PHP_SELF'], "t.code_journal", "", $param, '', $sortfield, $sortorder, 'center '); if (! empty($arrayfields['t.date_creation']['checked'])) print_liste_field_titre($arrayfields['t.date_creation']['label'], $_SERVER['PHP_SELF'], "t.date_creation", "", $param, '', $sortfield, $sortorder, 'center '); if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre($arrayfields['t.tms']['label'], $_SERVER['PHP_SELF'], "t.tms", "", $param, '', $sortfield, $sortorder, 'center '); +if (! empty($arrayfields['t.date_export']['checked'])) print_liste_field_titre($arrayfields['t.date_export']['label'], $_SERVER['PHP_SELF'], "t.date_export", "", $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); print "\n"; @@ -732,11 +777,20 @@ if ($num > 0) if (! $i) $totalarray['nbfield']++; } + // Exported operation date + if (! empty($arrayfields['t.date_export']['checked'])) + { + print '' . dol_print_date($line->date_export, 'dayhour') . ''; + if (! $i) $totalarray['nbfield']++; + } + // Action column print ''; - print '' . img_edit() . ' '; - print '' . img_delete() . ''; - print ''; + if(empty($line->date_export)) { + print '' . img_edit() . ' '; + print '' . img_delete() . ''; + } + print ''; if (! $i) $totalarray['nbfield']++; print "\n"; diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index c1df8b1045c..872bd56ca0f 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -866,15 +866,16 @@ class BookKeeping extends CommonObject /** * Load object in memory from the database * - * @param string $sortorder Sort Order - * @param string $sortfield Sort field - * @param int $limit Offset limit - * @param int $offset Offset limit - * @param array $filter Filter array - * @param string $filtermode Filter mode (AND or OR) - * @return int <0 if KO, >0 if OK + * @param string $sortorder Sort Order + * @param string $sortfield Sort field + * @param int $limit Offset limit + * @param int $offset Offset limit + * @param array $filter Filter array + * @param string $filtermode Filter mode (AND or OR) + * @param int $showAlreadyExportMovements Show movements when field 'date_export' is not empty (0:No / 1:Yes (Default)) + * @return int <0 if KO, >0 if OK */ - public function fetchAll($sortorder = '', $sortfield = '', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 'AND') + public function fetchAll($sortorder = '', $sortfield = '', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 'AND', $showAlreadyExportMovements = 1) { global $conf; @@ -904,7 +905,8 @@ class BookKeeping extends CommonObject $sql .= " t.journal_label,"; $sql .= " t.piece_num,"; $sql .= " t.date_creation,"; - $sql .= " t.tms as date_modification"; + $sql .= " t.tms as date_modification,"; + $sql .= " t.date_export"; $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; // Manage filter $sqlwhere = array (); @@ -924,6 +926,8 @@ class BookKeeping extends CommonObject $sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\''; } elseif ($key == 't.tms>=' || $key == 't.tms<=') { $sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\''; + } elseif ($key == 't.date_export>=' || $key == 't.date_export<=') { + $sqlwhere[] = $key . '\'' . $this->db->idate($value) . '\''; } elseif ($key == 't.credit' || $key == 't.debit') { $sqlwhere[] = natural_search($key, $value, 1, 1); } else { @@ -978,6 +982,7 @@ class BookKeeping extends CommonObject $line->piece_num = $obj->piece_num; $line->date_creation = $this->db->jdate($obj->date_creation); $line->date_modification = $this->db->jdate($obj->date_modification); + $line->date_export = $this->db->jdate($obj->date_export); $this->lines[] = $line; diff --git a/htdocs/install/mysql/migration/9.0.0-10.0.0.sql b/htdocs/install/mysql/migration/9.0.0-10.0.0.sql index b53d0603be6..ef8a8c7b750 100644 --- a/htdocs/install/mysql/migration/9.0.0-10.0.0.sql +++ b/htdocs/install/mysql/migration/9.0.0-10.0.0.sql @@ -366,4 +366,6 @@ ALTER TABLE llx_reception_extrafields ADD INDEX idx_reception_extrafields (fk_ob ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN fk_projet integer DEFAULT NULL; ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN fk_reception integer DEFAULT NULL; +ALTER TABLE llx_accounting_bookkeeping ADD COLUMN date_export datetime DEFAULT NULL after date_validated; + \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql b/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql index af693c273a4..4a8f3ac7587 100644 --- a/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql +++ b/htdocs/install/mysql/tables/llx_accounting_bookkeeping.sql @@ -1,6 +1,6 @@ -- ============================================================================ -- Copyright (C) 2013-2014 Olivier Geffroy --- Copyright (C) 2013-2017 Alexandre Spangaro +-- Copyright (C) 2013-2019 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 @@ -51,6 +51,7 @@ CREATE TABLE llx_accounting_bookkeeping piece_num integer NOT NULL, -- FEC:EcritureNum | accounting source document validated tinyint DEFAULT 0 NOT NULL, -- | 0 line not validated / 1 line validated (No deleting / No modification) date_validated datetime, -- FEC:ValidDate - import_key varchar(14), + date_export datetime DEFAULT NULL, -- + import_key varchar(14), -- extraparams varchar(255) -- for other parameters with json format ) ENGINE=innodb; diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index f91cbd8f1eb..be4d25cfef5 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -842,6 +842,7 @@ Exports=Exports ExportFilteredList=Export filtered list ExportList=Export list ExportOptions=Export Options +IncludeDocsAlreadyExported=Include docs already exported Miscellaneous=Miscellaneous Calendar=Calendar GroupBy=Group by... From 4ba8cf0641f6d435d52732610af84e08f973ba0c Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Thu, 23 May 2019 11:08:06 +0200 Subject: [PATCH 03/22] Fix --- htdocs/accountancy/bookkeeping/list.php | 74 +++++++++++++------ .../accountancy/class/bookkeeping.class.php | 4 +- htdocs/langs/en_US/main.lang | 4 + 3 files changed, 59 insertions(+), 23 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 80e9d9b2e71..6860bf94006 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -32,6 +32,7 @@ require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.class.php require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php'; // Load translation files required by the page $langs->loadLangs(array("accountancy")); @@ -146,7 +147,7 @@ $arrayfields=array( 't.code_journal'=>array('label'=>$langs->trans("Codejournal"), 'checked'=>1), 't.date_creation'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0), 't.tms'=>array('label'=>$langs->trans("DateModification"), 'checked'=>0), - 't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>0), + 't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>1), ); if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) unset($arrayfields['t.lettering_code']); @@ -364,9 +365,7 @@ if ($action == 'delmouvconfirm') { // Export into a file with format defined into setup (FEC, CSV, ...) if ($action == 'export_file') { - $reexportMovements = GETPOST('already_exported')=='on'?1:0; - - $result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter, 'AND', $reexportMovements); + $result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter, 'AND', $conf->global->ACCOUNTING_REEXPORT); if ($result < 0) { @@ -374,33 +373,57 @@ if ($action == 'export_file') { } else { + // Export files $accountancyexport = new AccountancyExport($db); $accountancyexport->export($object->lines); - // TODO Move in class bookKeeping - // Specify as export : update field date_export - foreach ( $object->lines as $movement ) { - $now = dol_now(); - $sql = " UPDATE " . MAIN_DB_PREFIX . "accounting_bookkeeping"; - $sql .= " SET date_export = '" . $db->idate($now) . "'"; - $sql .= " WHERE rowid = " . $movement->id; + if (! empty($accountancyexport->errors)) + { + setEventMessages('', $accountancyexport->errors, 'errors'); + } else { + // Specify as export : update field date_export + // TODO Move in class bookKeeping + $error=0; + $db->begin(); - dol_syslog("/accountancy/bookeeping/list.php Function export_file Specify movements as exported sql=" . $sql, LOG_DEBUG); - if ($db->query($sql)) { - $db->commit(); - } else { - $db->rollback(); + if (is_array($object->lines)) { + foreach ($object->lines as $movement) { + $now = dol_now(); + $sql = " UPDATE " . MAIN_DB_PREFIX . "accounting_bookkeeping"; + $sql .= " SET date_export = '" . $db->idate($now) . "'"; + $sql .= " WHERE rowid = " . $movement->id; + + dol_syslog("/accountancy/bookeeping/list.php Function export_file Specify movements as exported sql=" . $sql, LOG_DEBUG); + $result = $db->query($sql); + if ($result) { + $db->commit(); + // setEventMessages($langs->trans("AllExportedMovementsWereRecordedAsExported"), null, 'mesgs'); + } else { + $db->rollback(); + // setEventMessages($langs->trans("NotAllExportedMovementsCouldBeRecordedAsExported"), null, 'errors'); + } + } } } - - if (!empty($accountancyexport->errors)) - { - setEventMessages('', $accountancyexport->errors, 'errors'); - } exit; } } +if ($action == 'setreexport') { + $export = 0; + $setreexport = GETPOST('value', 'int'); + if (! dolibarr_set_const($db, "ACCOUNTING_REEXPORT", $setreexport, 'yesno', 0, '', $conf->entity)) $error++; + + if (! $error) { + if ($conf->global->ACCOUNTING_REEXPORT == 1) { + setEventMessages($langs->trans("ExportOfPiecesAlreadyExportedIsEnable"), null, 'mesgs'); + } else { + setEventMessages($langs->trans("ExportOfPiecesAlreadyExportedIsDisable"), null, 'mesgs'); + } + } else { + setEventMessages($langs->trans("Error"), null, 'errors'); + } +} /* * View @@ -481,7 +504,14 @@ $listofformat=AccountancyExport::getType(); if (count($filter)) $buttonLabel = $langs->trans("ExportFilteredList"); else $buttonLabel = $langs->trans("ExportList"); -$newcardbutton = ' ' . $langs->trans("IncludeDocsAlreadyExported"); +// Button re-export +if (! empty($conf->global->ACCOUNTING_REEXPORT)) { + print $newcardbutton =''.img_picto($langs->trans("Activated"), 'switch_on').' '; +} else { + print $newcardbutton =''.img_picto($langs->trans("Disabled"), 'switch_off').' '; +} +$newcardbutton.= $langs->trans("IncludeDocsAlreadyExported"); + $newcardbutton.= dolGetButtonTitle($buttonLabel, $langs->trans("ExportFilteredList").' ('.$listofformat[$conf->global->ACCOUNTING_EXPORT_MODELCSV].')', 'fa fa-file-export', $_SERVER["PHP_SELF"].'?action=export_file'.($param?'&'.$param:'')); $newcardbutton.= dolGetButtonTitle($langs->trans('GroupByAccountAccounting'), '', 'fa fa-object-group', DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?'.$param); diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 872bd56ca0f..784c1ab06e8 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -936,10 +936,12 @@ class BookKeeping extends CommonObject } } $sql.= ' WHERE t.entity IN (' . getEntity('accountancy') . ')'; + if ($showAlreadyExportMovements == 0) { + $sql .= " AND t.date_export IS NULL"; + } if (count($sqlwhere) > 0) { $sql .= ' AND ' . implode(' ' . $filtermode . ' ', $sqlwhere); } - if (! empty($sortfield)) { $sql .= $this->db->order($sortfield, $sortorder); } diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index be4d25cfef5..996fdf63d1d 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -843,6 +843,10 @@ ExportFilteredList=Export filtered list ExportList=Export list ExportOptions=Export Options IncludeDocsAlreadyExported=Include docs already exported +ExportOfPiecesAlreadyExportedIsEnable=Export of pieces already exported is enable +ExportOfPiecesAlreadyExportedIsDisable=Export of pieces already exported is disable +AllExportedMovementsWereRecordedAsExported=All exported movements were recorded as exported +NotAllExportedMovementsCouldBeRecordedAsExported=Not all exported movements could be recorded as exported Miscellaneous=Miscellaneous Calendar=Calendar GroupBy=Group by... From 34a91ef96f1fb6442c915ad9e73e7f19d8c9a83b Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Thu, 23 May 2019 11:21:41 +0200 Subject: [PATCH 04/22] Apply button reexport on view list --- htdocs/accountancy/bookkeeping/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 6860bf94006..51ea2b9359f 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -436,14 +436,14 @@ llxHeader('', $title_page); // List $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - $nbtotalofrecords = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter); + $nbtotalofrecords = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter, 'AND', $conf->global->ACCOUNTING_REEXPORT); if ($nbtotalofrecords < 0) { setEventMessages($object->error, $object->errors, 'errors'); } } // TODO Do not use this -$result = $object->fetchAll($sortorder, $sortfield, $limit, $offset, $filter); +$result = $object->fetchAll($sortorder, $sortfield, $limit, $offset, $filter, 'AND', $conf->global->ACCOUNTING_REEXPORT); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } From e4969672354577ea570f007bc524117de186f4cd Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Thu, 30 May 2019 17:30:53 +0200 Subject: [PATCH 05/22] Fix scrutinizer, wrong unitprice var --- htdocs/contrat/class/contrat.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index d21b383bf97..3a20e2f9c6b 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -1647,7 +1647,7 @@ class Contrat extends CommonObject // if buy price not defined, define buyprice as configured in margin admin if ($this->pa_ht == 0) { - if (($result = $this->defineBuyPrice($pu_ht, $remise_percent)) < 0) + if (($result = $this->defineBuyPrice($pu, $remise_percent)) < 0) { return $result; } From 7fd1051efc87a6171ea096ef6178b3a5700a6eda Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 16 Apr 2019 10:16:20 +0200 Subject: [PATCH 06/22] FIX missing compatibility with multicompany transverse mode Conflicts: htdocs/core/class/html.formother.class.php --- htdocs/core/class/html.formother.class.php | 46 ++++++++++++++++++---- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 991a92ec445..a35a73546bb 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -372,9 +372,10 @@ class FormOther * @param string $morecss More CSS * @return string Html combo list code */ - function select_salesrepresentatives($selected,$htmlname,$user,$showstatus=0,$showempty=1,$morecss='') + function select_salesrepresentatives($selected, $htmlname, $user, $showstatus=0, $showempty=1, $morecss='') { - global $conf,$langs; + // phpcs:enable + global $conf, $langs; $langs->load('users'); $out = ''; @@ -396,17 +397,48 @@ class FormOther // Get list of users allowed to be viewed $sql_usr = "SELECT u.rowid, u.lastname, u.firstname, u.statut, u.login"; $sql_usr.= " FROM ".MAIN_DB_PREFIX."user as u"; - $sql_usr.= " WHERE u.entity IN (0,".$conf->entity.")"; + + if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) + { + if (! empty($user->admin) && empty($user->entity) && $conf->entity == 1) { + $sql_usr.= " WHERE u.entity IS NOT NULL"; // Show all users + } else { + $sql_usr.= ",".MAIN_DB_PREFIX."usergroup_user as ug"; + $sql_usr.= " WHERE ((ug.fk_user = u.rowid"; + $sql_usr.= " AND ug.entity IN (".getEntity('user')."))"; + $sql_usr.= " OR u.entity = 0)"; // Show always superadmin + } + } + else + { + $sql_usr.= " WHERE u.entity IN (".getEntity('user').")"; + } + if (empty($user->rights->user->user->lire)) $sql_usr.=" AND u.rowid = ".$user->id; - if (! empty($user->societe_id)) $sql_usr.=" AND u.fk_soc = ".$user->societe_id; + if (! empty($user->socid)) $sql_usr.=" AND u.fk_soc = ".$user->socid; // Add existing sales representatives of thirdparty of external user - if (empty($user->rights->user->user->lire) && $user->societe_id) + if (empty($user->rights->user->user->lire) && $user->socid) { $sql_usr.=" UNION "; $sql_usr.= "SELECT u2.rowid, u2.lastname, u2.firstname, u2.statut, u2.login"; $sql_usr.= " FROM ".MAIN_DB_PREFIX."user as u2, ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql_usr.= " WHERE u2.entity IN (0,".$conf->entity.")"; - $sql_usr.= " AND u2.rowid = sc.fk_user AND sc.fk_soc=".$user->societe_id; + + if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) + { + if (! empty($user->admin) && empty($user->entity) && $conf->entity == 1) { + $sql_usr.= " WHERE u2.entity IS NOT NULL"; // Show all users + } else { + $sql_usr.= ",".MAIN_DB_PREFIX."usergroup_user as ug2"; + $sql_usr.= " WHERE ug2.fk_user = u2.rowid"; + $sql_usr.= " AND ug2.entity IN (".getEntity('user').")"; + } + } + else + { + $sql_usr.= " WHERE u2.entity IN (".getEntity('user').")"; + } + + $sql_usr.= " AND u2.rowid = sc.fk_user AND sc.fk_soc=".$user->socid; } $sql_usr.= " ORDER BY statut DESC, lastname ASC"; // Do not use 'ORDER BY u.statut' here, not compatible with the UNION. //print $sql_usr;exit; From 5726b40a10e66789efda7804d3610d18fad89466 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 10 May 2019 12:07:15 +0200 Subject: [PATCH 07/22] FIX try to use WHERE EXISTS instead DISTINCT --- htdocs/core/class/html.formother.class.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index a35a73546bb..b3d41d80ffb 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -395,7 +395,7 @@ class FormOther if ($showempty) $out.=''; // Get list of users allowed to be viewed - $sql_usr = "SELECT u.rowid, u.lastname, u.firstname, u.statut, u.login"; + $sql_usr = "SELECT DISTINCT u.rowid, u.lastname, u.firstname, u.statut, u.login"; $sql_usr.= " FROM ".MAIN_DB_PREFIX."user as u"; if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) @@ -428,9 +428,7 @@ class FormOther if (! empty($user->admin) && empty($user->entity) && $conf->entity == 1) { $sql_usr.= " WHERE u2.entity IS NOT NULL"; // Show all users } else { - $sql_usr.= ",".MAIN_DB_PREFIX."usergroup_user as ug2"; - $sql_usr.= " WHERE ug2.fk_user = u2.rowid"; - $sql_usr.= " AND ug2.entity IN (".getEntity('user').")"; + $sql_usr.= " WHERE EXISTS (SELECT ug2.fk_user FROM ".MAIN_DB_PREFIX."usergroup_user as ug2 WHERE u2.rowid = ug2.fk_user AND ug2.entity IN (".getEntity('user').") )"; } } else From 25031e534dacd664bdbb69ba2da2001f266a2352 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Wed, 12 Jun 2019 12:05:02 +0200 Subject: [PATCH 08/22] fix massaction presend --- htdocs/core/actions_massactions.inc.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 064acb0b1c6..bb8b03d9366 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -260,6 +260,11 @@ if (! $error && $massaction == 'confirm_presend') $filename=dol_sanitizeFileName($objectobj->ref).'.pdf'; $filedir=$uploaddir . '/' . dol_sanitizeFileName($objectobj->ref); $file = $filedir . '/' . $filename; + if ($object->element == 'invoice_supplier') + { + $fileparams = dol_most_recent_file($uploaddir . '/' . get_exdir($objectobj->id,2,0,0,$objectobj,$objectobj->element).$objectobj->ref, preg_quote($objectobj->ref,'/').'([^\-])+'); + $file = $fileparams['fullname']; + } $mime = dol_mimetype($file); if (dol_is_file($file)) From 9ba102b6b93239599626fe8c60cf0569ad12bcb5 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Wed, 12 Jun 2019 12:08:16 +0200 Subject: [PATCH 09/22] bad object used --- htdocs/core/actions_massactions.inc.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index bb8b03d9366..2d0750bbefe 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -260,11 +260,13 @@ if (! $error && $massaction == 'confirm_presend') $filename=dol_sanitizeFileName($objectobj->ref).'.pdf'; $filedir=$uploaddir . '/' . dol_sanitizeFileName($objectobj->ref); $file = $filedir . '/' . $filename; - if ($object->element == 'invoice_supplier') + + if ($objectobj->element == 'invoice_supplier') { $fileparams = dol_most_recent_file($uploaddir . '/' . get_exdir($objectobj->id,2,0,0,$objectobj,$objectobj->element).$objectobj->ref, preg_quote($objectobj->ref,'/').'([^\-])+'); $file = $fileparams['fullname']; } + $mime = dol_mimetype($file); if (dol_is_file($file)) From 47746fd17d77bb61c965130c325922daa30a01e3 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Wed, 12 Jun 2019 12:30:49 +0200 Subject: [PATCH 10/22] fix template type --- htdocs/core/class/html.formmail.class.php | 1 + htdocs/fourn/facture/list.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index e8693af943a..ac742f0dbb7 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -359,6 +359,7 @@ class FormMail extends Form if ($this->param['models'] != 'none') { $result = $this->fetchAllEMailTemplate($this->param["models"], $user, $outputlangs); + if ($result < 0) { setEventMessages($this->error, $this->errors, 'errors'); diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 4b208a99af7..c14c037dc97 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -496,7 +496,7 @@ if ($resql) print_barre_liste($langs->trans("BillsSuppliers").($socid?' '.$soc->name:''), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit); $topicmail="SendBillRef"; - $modelmail="supplier_invoice_send"; + $modelmail="invoice_supplier_send"; $objecttmp=new FactureFournisseur($db); $trackid='sinv'.$object->id; include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; From 0bf7512f288411d3e3e982c5522bab6606e920e8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Jun 2019 12:33:31 +0200 Subject: [PATCH 11/22] Update actions_massactions.inc.php --- htdocs/core/actions_massactions.inc.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 2d0750bbefe..34ba465ebff 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -257,10 +257,14 @@ if (! $error && $massaction == 'confirm_presend') { // TODO Use future field $objectobj->fullpathdoc to know where is stored default file // TODO If not defined, use $objectobj->modelpdf (or defaut invoice config) to know what is template to use to regenerate doc. - $filename=dol_sanitizeFileName($objectobj->ref).'.pdf'; - $filedir=$uploaddir . '/' . dol_sanitizeFileName($objectobj->ref); + $filename = dol_sanitizeFileName($objectobj->ref).'.pdf'; + $subdir = ''; + // TODO Set subdir to be compatible with multi levels dir trees + // $subdir = get_exdir($objectobj->id, 2, 0, 0, $objectobj, $objectobj->element) + $filedir = $uploaddir . '/' . $subdir . dol_sanitizeFileName($objectobj->ref); $file = $filedir . '/' . $filename; + // For supplier invoices, we use the file provided by supplier, not the one we generate if ($objectobj->element == 'invoice_supplier') { $fileparams = dol_most_recent_file($uploaddir . '/' . get_exdir($objectobj->id,2,0,0,$objectobj,$objectobj->element).$objectobj->ref, preg_quote($objectobj->ref,'/').'([^\-])+'); From 47610d0323fb8e51220a9302b56f32069f482622 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Jun 2019 15:42:48 +0200 Subject: [PATCH 12/22] Look and feel v10 --- htdocs/accountancy/customer/lines.php | 4 ++-- htdocs/accountancy/customer/list.php | 6 +++--- htdocs/accountancy/expensereport/lines.php | 4 ++-- htdocs/accountancy/expensereport/list.php | 4 ++-- htdocs/accountancy/supplier/lines.php | 4 ++-- htdocs/accountancy/supplier/list.php | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 83bceb04026..9848c4cf7c5 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -310,9 +310,9 @@ if ($result) { print ''; print ''; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) { - print ''; + print ''; } - print ''; + print ''; $formother->select_year($search_year, 'search_year', 1, 20, 5); print ''; print ''; diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 61c22eb2912..14eac87fdaa 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -377,9 +377,9 @@ if ($result) { print ''; print ''; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) { - print ''; + print ''; } - print ''; + print ''; $formother->select_year($search_year, 'search_year', 1, 20, 5); print ''; print ''; @@ -410,7 +410,7 @@ if ($result) { print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "l.total_ht", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder); - print_liste_field_titre("VATIntra", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre("VATIntra", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("AccountAccountingSuggest", '', '', '', '', '', '', '', 'center '); print_liste_field_titre("IntoAccount", '', '', '', '', '', '', '', 'center '); $checkpicto=''; diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index 734bbfb65d2..3e3a8fd623e 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -263,8 +263,8 @@ if ($result) { print ''; print ''; print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; $formother->select_year($search_year, 'search_year', 1, 20, 5); print ''; print ''; diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index 4c739a218b9..46d00268174 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -309,8 +309,8 @@ if ($result) { print ''; print ''; print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; $formother->select_year($search_year, 'search_year', 1, 20, 5); print ''; print ''; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 9b704e21eb3..f68bf107b47 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -314,8 +314,8 @@ if ($result) { print ''; print ''; print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; $formother->select_year($search_year, 'search_year', 1, 20, 5); print ''; print ''; diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 47e3570bcbe..afd65cdc645 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -376,8 +376,8 @@ if ($result) { print ''; print ''; print ''; - if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; - print ''; + if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; + print ''; $formother->select_year($search_year, 'search_year', 1, 20, 5); print ''; print ''; From e81663ec3495597815266713de87ad1d1e0ea025 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Jun 2019 19:00:34 +0200 Subject: [PATCH 13/22] Fix cropping of image files for BOM module was ko --- htdocs/core/class/html.formfile.class.php | 4 ++-- htdocs/core/lib/security.lib.php | 15 ++++++++------- htdocs/core/photos_resize.php | 20 +++++++++++++++++++- htdocs/langs/en_US/mrp.lang | 2 ++ 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index b729ad51fc5..8f0aee14424 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -1040,7 +1040,7 @@ class FormFile * @param string $relativepath Relative path of docs (autodefined if not provided), relative to module dir, not to MAIN_DATA_ROOT. * @param int $permonobject Permission on object (so permission to delete or crop document) * @param int $useinecm Change output for use in ecm module: - * 0 or 6: Add a preview column. Show also a rename and crop button. + * 0 or 6: Add a preview column. Show also a rename button. Show also a crop button for some values of $modulepart (must be supported into hard coded list in this function + photos_resize.php + restrictedArea + checkUserAccessToObject) * 1: Add link to edit ECM entry * 2: Add rename and crop file * 4: Add a preview column @@ -1068,7 +1068,7 @@ class FormFile global $form; $disablecrop=1; - if (in_array($modulepart, array('expensereport','holiday','member','project','product','produit','service','societe','tax','ticket','user'))) $disablecrop=0; + if (in_array($modulepart, array('bom','expensereport','holiday','member','project','product','produit','service','societe','tax','ticket','user'))) $disablecrop=0; // Define relative path used to store the file if (empty($relativepath)) diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index dcdc70c3fe6..69d9173e212 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -247,11 +247,12 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f { if (! $user->rights->projet->lire && ! $user->rights->projet->all->lire) { $readok=0; $nbko++; } } - elseif (! empty($feature2)) // This should be used for future changes + elseif (! empty($feature2)) // This is for permissions on 2 levels { $tmpreadok=1; foreach($feature2 as $subfeature) { + var_dump($subfeature); if ($subfeature == 'user' && $user->id == $objectid) continue; // A user can always read its own card if (! empty($subfeature) && empty($user->rights->$feature->$subfeature->lire) && empty($user->rights->$feature->$subfeature->read)) { $tmpreadok=0; } elseif (empty($subfeature) && empty($user->rights->$feature->lire) && empty($user->rights->$feature->read)) { $tmpreadok=0; } @@ -263,7 +264,7 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f $nbko++; } } - elseif (! empty($feature) && ($feature!='user' && $feature!='usergroup')) // This is for old permissions + elseif (! empty($feature) && ($feature!='user' && $feature!='usergroup')) // This is permissions on 1 level { if (empty($user->rights->$feature->lire) && empty($user->rights->$feature->read) @@ -307,7 +308,7 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f { if (! $user->rights->banque->cheque) { $createok=0; $nbko++; } } - elseif (! empty($feature2)) // This should be used + elseif (! empty($feature2)) // This is for permissions on one level { foreach($feature2 as $subfeature) { @@ -317,7 +318,7 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f else { $createok=1; break; } // Break to bypass second test if the first is ok } } - elseif (! empty($feature)) // This is for old permissions ('creer' or 'write') + elseif (! empty($feature)) // This is for permissions on 2 levels ('creer' or 'write') { //print '
feature='.$feature.' creer='.$user->rights->$feature->creer.' write='.$user->rights->$feature->write; if (empty($user->rights->$feature->creer) @@ -384,7 +385,7 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f { if (! $user->rights->salaries->delete) $deleteok=0; } - elseif (! empty($feature2)) // This should be used for permissions on 2 levels + elseif (! empty($feature2)) // This is for permissions on 2 levels { foreach($feature2 as $subfeature) { @@ -392,7 +393,7 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f else { $deleteok=1; break; } // For bypass the second test if the first is ok } } - elseif (! empty($feature)) // This is used for permissions on 1 level + elseif (! empty($feature)) // This is used for permissions on 1 level { //print '
feature='.$feature.' creer='.$user->rights->$feature->supprimer.' write='.$user->rights->$feature->delete; if (empty($user->rights->$feature->supprimer) @@ -451,7 +452,7 @@ function checkUserAccessToObject($user, $featuresarray, $objectid = 0, $tableand if ($feature == 'project') $feature='projet'; if ($feature == 'task') $feature='projet_task'; - $check = array('adherent','banque','don','user','usergroup','product','produit','service','produit|service','categorie','resource','expensereport','holiday'); // Test on entity only (Objects with no link to company) + $check = array('adherent','banque','bom','don','user','usergroup','product','produit','service','produit|service','categorie','resource','expensereport','holiday'); // Test on entity only (Objects with no link to company) $checksoc = array('societe'); // Test for societe object $checkother = array('contact','agenda'); // Test on entity and link to third party. Allowed if link is empty (Ex: contacts...). $checkproject = array('projet','project'); // Test for project object diff --git a/htdocs/core/photos_resize.php b/htdocs/core/photos_resize.php index 2ecb127f3b2..47be8cdf974 100644 --- a/htdocs/core/photos_resize.php +++ b/htdocs/core/photos_resize.php @@ -53,6 +53,12 @@ elseif ($modulepart == 'project') if (! $user->rights->projet->lire) accessforbidden(); $accessallowed=1; } +elseif ($modulepart == 'bom') +{ + $result=restrictedArea($user, 'bom', $id, 'bom_bom'); + if (! $user->rights->bom->read) accessforbidden(); + $accessallowed=1; +} elseif ($modulepart == 'expensereport') { $result=restrictedArea($user, 'expensereport', $id, 'expensereport'); @@ -205,8 +211,19 @@ elseif ($modulepart == 'ticket') $dir=$conf->ticket->dir_output; // By default } } +elseif ($modulepart == 'bom') +{ + require_once DOL_DOCUMENT_ROOT.'/bom/class/bom.class.php'; + $object = new BOM($db); + if ($id > 0) + { + $result = $object->fetch($id); + if ($result <= 0) dol_print_error($db, 'Failed to load object'); + $dir=$conf->bom->dir_output; // By default + } +} else { - print 'Action crop for module part '.$modulepart.' is not supported yet.'; + print 'Action crop for modulepart = '.$modulepart.' is not supported yet.'; } if (empty($backtourl)) @@ -220,6 +237,7 @@ if (empty($backtourl)) elseif (in_array($modulepart, array('tax'))) $backtourl=DOL_URL_ROOT."/compta/sociales/document.php?id=".$id.'&file='.urldecode($_POST["file"]); elseif (in_array($modulepart, array('ticket'))) $backtourl=DOL_URL_ROOT."/ticket/document.php?id=".$id.'&file='.urldecode($_POST["file"]); elseif (in_array($modulepart, array('user'))) $backtourl=DOL_URL_ROOT."/user/document.php?id=".$id.'&file='.urldecode($_POST["file"]); + else $backtourl=DOL_URL_ROOT."/".$modulepart."/".$modulepart."_document.php?id=".$id.'&file='.urldecode($_POST["file"]); } diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang index c4bb9193a33..360f4303f07 100644 --- a/htdocs/langs/en_US/mrp.lang +++ b/htdocs/langs/en_US/mrp.lang @@ -13,3 +13,5 @@ WatermarkOnDraftBOMs=Watermark on draft BOM ConfirmCloneBillOfMaterials=Are you sure you want to clone this bill of material ? ManufacturingEfficiency=Manufacturing efficiency ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +DeleteBillOfMaterials=Delete Bill Of Materials +ConfirmDeleteBillOfMaterials=Are you sure you want to delete this Bill Of Material? From 2be5e9615d57a0ad568be62f817e8c50ee1f7974 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Jun 2019 19:03:22 +0200 Subject: [PATCH 14/22] Fix look and field v10 --- htdocs/comm/action/card.php | 2 +- htdocs/core/lib/security.lib.php | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 71702c7b507..9381b186582 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -690,7 +690,7 @@ if ($action == 'create') dol_fiche_head(); - print ''; + print '
'; // Type of event if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index 69d9173e212..051f3a5392a 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -252,7 +252,6 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f $tmpreadok=1; foreach($feature2 as $subfeature) { - var_dump($subfeature); if ($subfeature == 'user' && $user->id == $objectid) continue; // A user can always read its own card if (! empty($subfeature) && empty($user->rights->$feature->$subfeature->lire) && empty($user->rights->$feature->$subfeature->read)) { $tmpreadok=0; } elseif (empty($subfeature) && empty($user->rights->$feature->lire) && empty($user->rights->$feature->read)) { $tmpreadok=0; } From 900e860f6dbf9cd8d6ccfb9997e8ae89e8e97baa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Jun 2019 19:32:29 +0200 Subject: [PATCH 15/22] Fix list of events for BOM module --- htdocs/bom/bom_agenda.php | 10 +++++----- htdocs/comm/action/card.php | 8 ++++---- htdocs/core/lib/company.lib.php | 12 ++++++++++-- htdocs/modulebuilder/template/myobject_agenda.php | 12 ++++++------ 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/htdocs/bom/bom_agenda.php b/htdocs/bom/bom_agenda.php index a4bf134e3ce..d7d86c50543 100644 --- a/htdocs/bom/bom_agenda.php +++ b/htdocs/bom/bom_agenda.php @@ -196,7 +196,7 @@ if ($object->id > 0) $objthirdparty=$object; $objcon=new stdClass(); - $out=''; + $out='&origin='.$object->element.'&originid='.$object->id; $permok=$user->rights->agenda->myactions->create; if ((! empty($objthirdparty->id) || ! empty($objcon->id)) && $permok) { @@ -227,9 +227,9 @@ if ($object->id > 0) if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) { - $param='&socid='.$socid; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + $param='&id='.$object->id.'&socid='.$socid; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); //print load_fiche_titre($langs->trans("ActionsOnBom"), '', ''); @@ -239,7 +239,7 @@ if ($object->id > 0) $filters['search_agenda_label']=$search_agenda_label; // TODO Replace this with same code than into list.php - //show_actions_done($conf,$langs,$db,$object,null,0,$actioncode, '', $filters, $sortfield, $sortorder); + show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder); } } diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 9381b186582..8e8d21c51b1 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -238,8 +238,8 @@ if ($action == 'add') $object->fulldayevent = (! empty($fulldayevent)?1:0); $object->location = GETPOST("location"); $object->label = trim(GETPOST('label')); - $object->fk_element = GETPOST("fk_element"); - $object->elementtype = GETPOST("elementtype"); + $object->fk_element = GETPOST("fk_element", 'int'); + $object->elementtype = GETPOST("elementtype", 'alpha'); if (! GETPOST('label')) { if (GETPOST('actioncode') == 'AC_RDV' && $contact->getFullName($langs)) @@ -349,7 +349,7 @@ if ($action == 'add') { $db->begin(); - // On cree l'action + // Creation of action/event $idaction=$object->create($user); if ($idaction > 0) @@ -857,7 +857,7 @@ if ($action == 'create') print '


'; - print '
'; + print '
'; if ($conf->societe->enabled) { diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 99344b12dc1..c3b9bcec2cf 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -1188,7 +1188,8 @@ function show_actions_todo($conf, $langs, $db, $filterobj, $objcon = '', $noprin } /** - * Show html area with actions (done or not, ignore the name of function) + * Show html area with actions (done or not, ignore the name of function). + * Note: Global parameter $param must be defined. * * @param Conf $conf Object conf * @param Translate $langs Object langs @@ -1208,7 +1209,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin global $user, $conf; global $form; - global $param; + global $param, $massactionbutton; dol_include_once('/comm/action/class/actioncomm.class.php'); @@ -1251,6 +1252,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin elseif (is_object($filterobj) && get_class($filterobj) == 'CommandeFournisseur') $sql.= ", o.ref"; elseif (is_object($filterobj) && get_class($filterobj) == 'Product') $sql.= ", o.ref"; elseif (is_object($filterobj) && get_class($filterobj) == 'Ticket') $sql.= ", o.ref"; + elseif (is_object($filterobj) && get_class($filterobj) == 'BOM') $sql.= ", o.ref"; $sql.= " FROM ".MAIN_DB_PREFIX."actioncomm as a"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u on u.rowid = a.fk_user_action"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_actioncomm as c ON a.fk_action = c.id"; @@ -1273,6 +1275,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin elseif (is_object($filterobj) && get_class($filterobj) == 'CommandeFournisseur') $sql.= ", ".MAIN_DB_PREFIX."commande_fournisseur as o"; elseif (is_object($filterobj) && get_class($filterobj) == 'Product') $sql.= ", ".MAIN_DB_PREFIX."product as o"; elseif (is_object($filterobj) && get_class($filterobj) == 'Ticket') $sql.= ", ".MAIN_DB_PREFIX."ticket as o"; + elseif (is_object($filterobj) && get_class($filterobj) == 'BOM') $sql.= ", ".MAIN_DB_PREFIX."bom_bom as o"; $sql.= " WHERE a.entity IN (".getEntity('agenda').")"; if ($force_filter_contact === false) { @@ -1298,6 +1301,11 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = '', $noprin $sql.= " AND a.fk_element = o.rowid AND a.elementtype = 'ticket'"; if ($filterobj->id) $sql.= " AND a.fk_element = ".$filterobj->id; } + elseif (is_object($filterobj) && get_class($filterobj) == 'BOM') + { + $sql.= " AND a.fk_element = o.rowid AND a.elementtype = 'bom'"; + if ($filterobj->id) $sql.= " AND a.fk_element = ".$filterobj->id; + } } // Condition on actioncode diff --git a/htdocs/modulebuilder/template/myobject_agenda.php b/htdocs/modulebuilder/template/myobject_agenda.php index 1f693282e5f..183781469ef 100644 --- a/htdocs/modulebuilder/template/myobject_agenda.php +++ b/htdocs/modulebuilder/template/myobject_agenda.php @@ -209,7 +209,7 @@ if ($object->id > 0) $objthirdparty=$object; $objcon=new stdClass(); - $out=''; + $out='&origin='.$object->element.'&originid='.$object->id; $permok=$user->rights->agenda->myactions->create; if ((! empty($objthirdparty->id) || ! empty($objcon->id)) && $permok) { @@ -240,19 +240,19 @@ if ($object->id > 0) if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) { - $param='&socid='.$socid; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + $param='&id='.$object->id.'&socid='.$socid; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); - print load_fiche_titre($langs->trans("ActionsOnMyObject"), '', ''); + //print load_fiche_titre($langs->trans("ActionsOnMyObject"), '', ''); // List of all actions $filters=array(); $filters['search_agenda_label']=$search_agenda_label; // TODO Replace this with same code than into list.php - //show_actions_done($conf,$langs,$db,$object,null,0,$actioncode, '', $filters, $sortfield, $sortorder); + //show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder); } } From a26c86878334b5a29e157ecd8dc83c1aa2c902ac Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Wed, 12 Jun 2019 22:05:10 +0200 Subject: [PATCH 16/22] Fix scrutinizer bugs --- .../barcode/doc/tcpdfbarcode.modules.php | 2 - .../doc/pdf_standard.modules.php | 81 ++++++++++--------- .../printsheet/doc/pdf_tcpdflabel.class.php | 16 ++-- htdocs/expedition/class/expedition.class.php | 6 +- .../fourn/class/fournisseur.product.class.php | 48 +++++------ .../product/class/html.formproduct.class.php | 34 ++++---- 6 files changed, 94 insertions(+), 93 deletions(-) diff --git a/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php b/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php index 1b39fe16095..3d2564591da 100644 --- a/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php +++ b/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php @@ -116,7 +116,6 @@ class modTcpdfbarcode extends ModeleBarCode $_GET["code"]=$code; $_GET["type"]=$encoding; - $_GET["height"]=$height; $_GET["readable"]=$readable; if ($code) { @@ -166,7 +165,6 @@ class modTcpdfbarcode extends ModeleBarCode $_GET["code"]=$code; $_GET["type"]=$encoding; - $_GET["height"]=$height; $_GET["readable"]=$readable; if ($code) { diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index 8bb3eaa7804..e0bba62df3b 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -117,13 +117,13 @@ class pdf_standard extends ModeleExpenseReport public $emetteur; - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { global $conf, $langs, $mysoc, $user; // Translations @@ -172,12 +172,12 @@ class pdf_standard extends ModeleExpenseReport $this->posxup=145; $this->posxqty=168; $this->postotalttc=178; - // if (empty($conf->projet->enabled)) { - // $this->posxtva-=20; - // $this->posxup-=20; - // $this->posxqty-=20; - // $this->postotalttc-=20; - // } + // if (empty($conf->projet->enabled)) { + // $this->posxtva-=20; + // $this->posxup-=20; + // $this->posxqty-=20; + // $this->postotalttc-=20; + // } if ($this->page_largeur < 210) // To work with US executive format { $this->posxdate-=20; @@ -196,19 +196,19 @@ class pdf_standard extends ModeleExpenseReport } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Function to build pdf onto disk - * - * @param Object $object Object to generate - * @param Translate $outputlangs Lang output object - * @param string $srctemplatepath Full path of source filename for generator using a template file - * @param int $hidedetails Do not show line details - * @param int $hidedesc Do not show desc - * @param int $hideref Do not show ref - * @return int 1=OK, 0=KO + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Function to build pdf onto disk + * + * @param Object $object Object to generate + * @param Translate $outputlangs Lang output object + * @param string $srctemplatepath Full path of source filename for generator using a template file + * @param int $hidedetails Do not show line details + * @param int $hidedesc Do not show desc + * @param int $hideref Do not show ref + * @return int 1=OK, 0=KO */ - public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0) + public function write_file($object, $outputlangs, $srctemplatepath = '', $hidedetails = 0, $hidedesc = 0, $hideref = 0) { // phpcs:enable global $user, $langs, $conf, $mysoc, $db, $hookmanager; @@ -501,9 +501,9 @@ class pdf_standard extends ModeleExpenseReport $posy=$this->tablePayments($pdf, $object, $posy_start_of_totals, $outputlangs); } - // Pied de page + // Page footer $this->_pagefoot($pdf, $object, $outputlangs); - if (method_exists($pdf, 'AliasNbPages')) $pdf->AliasNbPage(); + if (method_exists($pdf, 'AliasNbPages')) $pdf->AliasNbPages(); $pdf->Close(); @@ -540,17 +540,17 @@ class pdf_standard extends ModeleExpenseReport } } - /** - * @param TCPDF $pdf Object PDF - * @param Object $object Object to show - * @param int $linenumber line number - * @param int $curY current y position - * @param int $default_font_size default siez of font - * @param Translate $outputlangs Object lang for output - * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines) - * @return void - */ - private function printLine(&$pdf, $object, $linenumber, $curY, $default_font_size, $outputlangs, $hidedetails = 0) + /** + * @param TCPDF $pdf Object PDF + * @param Object $object Object to show + * @param int $linenumber line number + * @param int $curY current y position + * @param int $default_font_size default siez of font + * @param Translate $outputlangs Object lang for output + * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines) + * @return void + */ + private function printLine(&$pdf, $object, $linenumber, $curY, $default_font_size, $outputlangs, $hidedetails = 0) { global $conf; $pdf->SetFont('', '', $default_font_size - 1); @@ -618,7 +618,7 @@ class pdf_standard extends ModeleExpenseReport } $comment .= $object->lines[$linenumber]->comments; $pdf->writeHTMLCell($this->posxtva-$this->posxcomment-0.8, 4, $this->posxcomment-1, $curY, $comment, 0, 1); - } + } /** * Show top header of page. @@ -846,7 +846,7 @@ class pdf_standard extends ModeleExpenseReport } } } - } + } /** * Show table for lines @@ -1024,6 +1024,7 @@ class pdf_standard extends ModeleExpenseReport if ($resql) { $num = $this->db->num_rows($resql); + $totalpaid = 0; $i=0; while ($i < $num) { $y+=$tab3_height; diff --git a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php index 7670a623c49..b17403e93e7 100644 --- a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php @@ -154,7 +154,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator $widthtouse = $maxwidthtouse; $heighttouse = $maxheighttouse; $logoHeight = $heighttouse; - $logoWidth = $heighttouse; + $logoWidth = $widthtouse; //var_dump($this->_Width.'x'.$this->_Height.' with border and scale '.$imgscale.' => max '.$maxwidthtouse.'x'.$maxheighttouse.' => We use '.$widthtouse.'x'.$heighttouse);exit; @@ -175,9 +175,11 @@ class pdf_tcpdflabel extends CommonStickerGenerator } elseif ($textleft!='' && $textright!='') // left and right part { + $logoHeight = $heighttouse/2; + $logoWidth = $widthtouse/2; if (($textleft == '%LOGO%' || $textleft == '%PHOTO%' || $textleft == '%BARCODE%') && !strstr($textright, '%') ) // left part logo/barcode right part text { - if ($textleft == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX+$xleft, $_PosY+$ytop, $widthtouse/2, 0); + if ($textleft == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX+$xleft, $_PosY+$ytop, $logoWidth, $logoHeight); elseif ($code && !empty($encoding)) { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+$xleft, $_PosY+$ytop, $widthtouse/2, $heighttouse); @@ -187,7 +189,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator } elseif (($textright == '%LOGO%' || $textright == '%PHOTO%' || $textright == '%BARCODE%') && !strstr($textleft, '%')) // right part logo/barcode left part text { - if ($textright == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX+($widthtouse/2), $_PosY+$ytop, $widthtouse/2, 0); + if ($textright == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX+($widthtouse/2), $_PosY+$ytop, $logoWidth, $logoHeight); elseif ($code && !empty($encoding)) { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+($widthtouse/2), $_PosY+$ytop, $widthtouse/2, $heighttouse); @@ -197,21 +199,21 @@ class pdf_tcpdflabel extends CommonStickerGenerator } elseif ($textleft == '%LOGO%') // left part logo right part text/barcode { - if ($logo) $pdf->Image($logo, $_PosX+$xleft, $_PosY+$ytop, 0, $logoHeight); + if ($logo) $pdf->Image($logo, $_PosX+$xleft, $_PosY+$ytop, $logoWidth, $logoHeight); if ($code && !empty($encoding)) { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+$xleft+$logoWidth+1, $_PosY+$ytop, $widthtouse-$logoWidth-1, $heighttouse); } else { $pdf->SetXY($_PosX+$xleft+$logoWidth+1, $_PosY+$ytop); - $pdf->MultiCell($widthtouse-$logoWidth1-1, $this->_Line_Height, $outputlangs->convToOutputCharset($textright), 0, 'R'); + $pdf->MultiCell($widthtouse-$logoWidth-1, $this->_Line_Height, $outputlangs->convToOutputCharset($textright), 0, 'R'); } } elseif ($textright == '%LOGO%') // right part logo left part text/barcode { - if ($logo) $pdf->Image($logo, $_PosX+$xleft+$widthtouse-$logoWidth+1, $_PosY+$ytop, 0, $logoHeight); + if ($logo) $pdf->Image($logo, $_PosX+$xleft+$widthtouse-$logoWidth+1, $_PosY+$ytop, $logoWidth, $logoHeight); if ($code && !empty($encoding)) { - $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+$xleft, $_PosY+$ytop, $widthtouse-$logoWidth-1, $heighttouse); + $this->writeBarcode($pdf, $code, $encoding, $is2d, $_Pos%X+$xleft, $_PosY+$ytop, $widthtouse-$logoWidth-1, $heighttouse); } else { $pdf->SetXY($_PosX+$xleft, $_PosY+$ytop); $pdf->MultiCell($widthtouse-$logoWidth-1, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index a270af13217..1ff48a67107 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1398,6 +1398,8 @@ class Expedition extends CommonObject $this->total_localtax1 = 0; $this->total_localtax2 = 0; + $line = new ExpeditionLigne($this->db); + while ($i < $num) { $obj = $this->db->fetch_object($resql); @@ -2562,8 +2564,6 @@ class ExpeditionLigne extends CommonObjectLine $this->error = 'ErrorMandatoryParametersNotProvided'; return -1; } - // Clean parameters - if (empty($this->entrepot_id)) $this->entrepot_id='null'; $this->db->begin(); @@ -2574,7 +2574,7 @@ class ExpeditionLigne extends CommonObjectLine $sql.= ", qty"; $sql.= ") VALUES ("; $sql.= $this->fk_expedition; - $sql.= ", ".$this->entrepot_id; + $sql.= ", ".(empty($this->entrepot_id) ? 'NULL' : $this->entrepot_id); $sql.= ", ".$this->fk_origin_line; $sql.= ", ".$this->qty; $sql.= ")"; diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 45595471701..f2384b13cf2 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -247,10 +247,10 @@ class ProductFournisseur extends Product if (empty($supplier_reputation) || $supplier_reputation == -1) $supplier_reputation=''; if ($delivery_time_days != '' && ! is_numeric($delivery_time_days)) $delivery_time_days = ''; if ($price_base_type == 'TTC') - { - $ttx = $tva_tx; - $buyprice = $buyprice/(1+($ttx/100)); - } + { + $ttx = $tva_tx; + $buyprice = $buyprice/(1+($ttx/100)); + } // Multicurrency if ($conf->multicurrency->enabled) { @@ -259,10 +259,10 @@ class ProductFournisseur extends Product if (empty($multicurrency_buyprice)) $multicurrency_buyprice=0; if ($multicurrency_price_base_type == 'TTC') - { - $ttx = $tva_tx; - $multicurrency_buyprice = $multicurrency_buyprice/(1+($ttx/100)); - } + { + $ttx = $tva_tx; + $multicurrency_buyprice = $multicurrency_buyprice/(1+($ttx/100)); + } $multicurrency_buyprice=price2num($multicurrency_buyprice, 'MU'); $multicurrency_unitBuyPrice=price2num($multicurrency_buyprice/$qty, 'MU'); @@ -369,7 +369,7 @@ class ProductFournisseur extends Product // End call triggers if (! $error && empty($conf->global->PRODUCT_PRICE_SUPPLIER_NO_LOG)) { - $result = $this->logPrice($user, $now, $buyprice, $qty, $multicurrency_buyprice, $multicurrency_unitBuyPrice, $multicurrency_tx, $fk_multicurrenc, $multicurrency_code); + $result = $this->logPrice($user, $now, $buyprice, $qty, $multicurrency_buyprice, $multicurrency_unitBuyPrice, $multicurrency_tx, $fk_multicurrency, $multicurrency_code); if ($result < 0) { $error++; } @@ -911,21 +911,21 @@ class ProductFournisseur extends Product return $out; } - /** - * Function used to replace a thirdparty id with another one. - * - * @param DoliDB $db Database handler - * @param int $origin_id Old thirdparty id - * @param int $dest_id New thirdparty id - * @return bool - */ - public static function replaceThirdparty(DoliDB $db, $origin_id, $dest_id) - { - $tables = array( - 'product_fournisseur_price' - ); + /** + * Function used to replace a thirdparty id with another one. + * + * @param DoliDB $db Database handler + * @param int $origin_id Old thirdparty id + * @param int $dest_id New thirdparty id + * @return bool + */ + public static function replaceThirdparty(DoliDB $db, $origin_id, $dest_id) + { + $tables = array( + 'product_fournisseur_price' + ); - return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables); + return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables); } /** @@ -1089,7 +1089,7 @@ class ProductFournisseur extends Product * * @return int < 0 NOK > 0 OK */ - private function logPrice($user, $datec, $buyprice, $qty, $multicurrency_buyprice, $multicurrency_unitBuyPrice, $multicurrency_tx, $fk_multicurrency, $multicurrency_code) + private function logPrice($user, $datec, $buyprice, $qty, $multicurrency_buyprice = null, $multicurrency_unitBuyPrice = null, $multicurrency_tx = null, $fk_multicurrency = null, $multicurrency_code = null) { // Add record into log table $sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_fournisseur_price_log("; diff --git a/htdocs/product/class/html.formproduct.class.php b/htdocs/product/class/html.formproduct.class.php index b4347f82941..a0ebda88cd9 100644 --- a/htdocs/product/class/html.formproduct.class.php +++ b/htdocs/product/class/html.formproduct.class.php @@ -59,12 +59,12 @@ class FormProduct * Load in cache array list of warehouses * If fk_product is not 0, we do not use cache * - * @param int $fk_product Add quantity of stock in label for product with id fk_product. Nothing if 0. - * @param string $batch Add quantity of batch stock in label for product with batch name batch, batch name precedes batch_id. Nothing if ''. - * @param string $status warehouse status filter, following comma separated filter options can be used - * 'warehouseopen' = select products from open warehouses, - * 'warehouseclosed' = select products from closed warehouses, - * 'warehouseinternal' = select products from warehouses for internal correct/transfer only + * @param int $fk_product Add quantity of stock in label for product with id fk_product. Nothing if 0. + * @param string $batch Add quantity of batch stock in label for product with batch name batch, batch name precedes batch_id. Nothing if ''. + * @param string $status warehouse status filter, following comma separated filter options can be used + * 'warehouseopen' = select products from open warehouses, + * 'warehouseclosed' = select products from closed warehouses, + * 'warehouseinternal' = select products from warehouses for internal correct/transfer only * @param boolean $sumStock sum total stock of a warehouse, default true * @param array $exclude warehouses ids to exclude * @return int Nb of loaded lines, 0 if already loaded, <0 if KO @@ -114,9 +114,9 @@ class FormProduct { $sql.= " AND ps.fk_product = '".$fk_product."'"; if (!empty($batch)) - { - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_batch as pb on pb.fk_product_stock = ps.rowid AND pb.batch = '".$batch."'"; - } + { + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_batch as pb on pb.fk_product_stock = ps.rowid AND pb.batch = '".$batch."'"; + } } $sql.= " WHERE e.entity IN (".getEntity('stock').")"; if (count($warehouseStatus)) @@ -173,9 +173,9 @@ class FormProduct * @param String $final_label full label with all parents, separated by ' >> ' (completed on each call) * @return String full label with all parents, separated by ' >> ' */ - private function get_parent_path($tab, $final_label = '') - { - //phpcs:enable + private function get_parent_path($tab, $final_label = '') + { + //phpcs:enable if(empty($final_label)) $final_label = $tab['label']; if(empty($tab['parent_id'])) return $final_label; @@ -195,9 +195,9 @@ class FormProduct * @param int $selected Id of preselected warehouse ('' for no value, 'ifone'=select value if one value otherwise no value) * @param string $htmlname Name of html select html * @param string $filterstatus warehouse status filter, following comma separated filter options can be used - * 'warehouseopen' = select products from open warehouses, - * 'warehouseclosed' = select products from closed warehouses, - * 'warehouseinternal' = select products from warehouses for internal correct/transfer only + * 'warehouseopen' = select products from open warehouses, + * 'warehouseclosed' = select products from closed warehouses, + * 'warehouseinternal' = select products from warehouses for internal correct/transfer only * @param int $empty 1=Can be empty, 0 if not * @param int $disabled 1=Select is disabled * @param int $fk_product Add quantity of stock in label for product with id fk_product. Nothing if 0. @@ -379,9 +379,9 @@ class FormProduct */ public function selectLotStock($selected = '', $htmlname = 'batch_id', $filterstatus = '', $empty = 0, $disabled = 0, $fk_product = 0, $fk_entrepot = 0, $objectLines = array(), $empty_label = '', $forcecombo = 0, $events = array(), $morecss = 'minwidth200') { - global $langs; + global $conf, $langs; - dol_syslog(get_class($this)."::selectLot $selected, $htmlname, $filterstatus, $empty, $disabled, $fk_product, $fk_entrepot, $empty_label, $showstock, $forcecombo, $morecss", LOG_DEBUG); + dol_syslog(get_class($this)."::selectLot $selected, $htmlname, $filterstatus, $empty, $disabled, $fk_product, $fk_entrepot, $empty_label, $forcecombo, $morecss", LOG_DEBUG); $out=''; $productIdArray = array(); From 3f63be60457e0440c777f54769bd527dd369eb94 Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Wed, 12 Jun 2019 22:10:40 +0200 Subject: [PATCH 17/22] fix typo --- htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php index b17403e93e7..a6d8aa19161 100644 --- a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php @@ -213,7 +213,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator if ($logo) $pdf->Image($logo, $_PosX+$xleft+$widthtouse-$logoWidth+1, $_PosY+$ytop, $logoWidth, $logoHeight); if ($code && !empty($encoding)) { - $this->writeBarcode($pdf, $code, $encoding, $is2d, $_Pos%X+$xleft, $_PosY+$ytop, $widthtouse-$logoWidth-1, $heighttouse); + $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+$xleft, $_PosY+$ytop, $widthtouse-$logoWidth-1, $heighttouse); } else { $pdf->SetXY($_PosX+$xleft, $_PosY+$ytop); $pdf->MultiCell($widthtouse-$logoWidth-1, $this->_Line_Height, $outputlangs->convToOutputCharset($textleft), 0, 'L'); From 4cbfb67d63b10f6ac189c809ba6c95c1fbff62ae Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Jun 2019 09:59:10 +0200 Subject: [PATCH 18/22] Update html.formother.class.php --- htdocs/core/class/html.formother.class.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index b3d41d80ffb..6cf3c816a24 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -374,7 +374,6 @@ class FormOther */ function select_salesrepresentatives($selected, $htmlname, $user, $showstatus=0, $showempty=1, $morecss='') { - // phpcs:enable global $conf, $langs; $langs->load('users'); @@ -395,7 +394,7 @@ class FormOther if ($showempty) $out.=''; // Get list of users allowed to be viewed - $sql_usr = "SELECT DISTINCT u.rowid, u.lastname, u.firstname, u.statut, u.login"; + $sql_usr = "SELECT u.rowid, u.lastname, u.firstname, u.statut, u.login"; $sql_usr.= " FROM ".MAIN_DB_PREFIX."user as u"; if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) @@ -403,10 +402,9 @@ class FormOther if (! empty($user->admin) && empty($user->entity) && $conf->entity == 1) { $sql_usr.= " WHERE u.entity IS NOT NULL"; // Show all users } else { - $sql_usr.= ",".MAIN_DB_PREFIX."usergroup_user as ug"; - $sql_usr.= " WHERE ((ug.fk_user = u.rowid"; - $sql_usr.= " AND ug.entity IN (".getEntity('user')."))"; - $sql_usr.= " OR u.entity = 0)"; // Show always superadmin + $sql_usr.= ", + $sql_usr.= " WHERE EXISTS (SELECT ug.fk_user FROM ".MAIN_DB_PREFIX."usergroup_user as ug WHERE u.rowid = ug.fk_user AND ug.entity IN (".getEntity('user')."))"; + $sql_usr.= " OR u.entity = 0"; // Show always superadmin } } else @@ -428,7 +426,7 @@ class FormOther if (! empty($user->admin) && empty($user->entity) && $conf->entity == 1) { $sql_usr.= " WHERE u2.entity IS NOT NULL"; // Show all users } else { - $sql_usr.= " WHERE EXISTS (SELECT ug2.fk_user FROM ".MAIN_DB_PREFIX."usergroup_user as ug2 WHERE u2.rowid = ug2.fk_user AND ug2.entity IN (".getEntity('user').") )"; + $sql_usr.= " WHERE EXISTS (SELECT ug2.fk_user FROM ".MAIN_DB_PREFIX."usergroup_user as ug2 WHERE u2.rowid = ug2.fk_user AND ug2.entity IN (".getEntity('user')."))"; } } else From 2bc821d9003d80ed7309375d910c55917be9fd1c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Jun 2019 10:08:35 +0200 Subject: [PATCH 19/22] Try to keep proportions of logo --- htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php index a6d8aa19161..4384bd49cf6 100644 --- a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php @@ -179,7 +179,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator $logoWidth = $widthtouse/2; if (($textleft == '%LOGO%' || $textleft == '%PHOTO%' || $textleft == '%BARCODE%') && !strstr($textright, '%') ) // left part logo/barcode right part text { - if ($textleft == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX+$xleft, $_PosY+$ytop, $logoWidth, $logoHeight); + if ($textleft == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX+$xleft, $_PosY+$ytop, $logoWidth, 0); elseif ($code && !empty($encoding)) { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+$xleft, $_PosY+$ytop, $widthtouse/2, $heighttouse); @@ -189,7 +189,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator } elseif (($textright == '%LOGO%' || $textright == '%PHOTO%' || $textright == '%BARCODE%') && !strstr($textleft, '%')) // right part logo/barcode left part text { - if ($textright == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX+($widthtouse/2), $_PosY+$ytop, $logoWidth, $logoHeight); + if ($textright == '%LOGO%' && $logo) $pdf->Image($logo, $_PosX+($widthtouse/2), $_PosY+$ytop, $logoWidth, 0); elseif ($code && !empty($encoding)) { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+($widthtouse/2), $_PosY+$ytop, $widthtouse/2, $heighttouse); From ab9742f4df2ced56a1513289bd1d99829cc3114d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Jun 2019 10:09:20 +0200 Subject: [PATCH 20/22] Try to keep proportion of logo --- htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php index 4384bd49cf6..f6bb3bc46a7 100644 --- a/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_tcpdflabel.class.php @@ -199,7 +199,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator } elseif ($textleft == '%LOGO%') // left part logo right part text/barcode { - if ($logo) $pdf->Image($logo, $_PosX+$xleft, $_PosY+$ytop, $logoWidth, $logoHeight); + if ($logo) $pdf->Image($logo, $_PosX+$xleft, $_PosY+$ytop, 0, $logoHeight); if ($code && !empty($encoding)) { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+$xleft+$logoWidth+1, $_PosY+$ytop, $widthtouse-$logoWidth-1, $heighttouse); @@ -210,7 +210,7 @@ class pdf_tcpdflabel extends CommonStickerGenerator } elseif ($textright == '%LOGO%') // right part logo left part text/barcode { - if ($logo) $pdf->Image($logo, $_PosX+$xleft+$widthtouse-$logoWidth+1, $_PosY+$ytop, $logoWidth, $logoHeight); + if ($logo) $pdf->Image($logo, $_PosX+$xleft+$widthtouse-$logoWidth+1, $_PosY+$ytop, 0, $logoHeight); if ($code && !empty($encoding)) { $this->writeBarcode($pdf, $code, $encoding, $is2d, $_PosX+$xleft, $_PosY+$ytop, $widthtouse-$logoWidth-1, $heighttouse); From 04a085e4f7795a11440d13a3ab95f62296f8ebfb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Jun 2019 11:07:08 +0200 Subject: [PATCH 21/22] Update doc --- COPYRIGHT | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 4ce5efff40b..ea0c6453486 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -14,15 +14,14 @@ Component Version License GPL Compatible PHP libraries: AdoDb-Date 0.36 Modified BSD License Yes Date convertion (not into rpm package) CKEditor 4.11.4 LGPL-2.1+ Yes Editor WYSIWYG -PHPDebugBar 1.15.0 MIT License Yes Used only by the module "debugbar" for developers EvalMath 1.0 BSD Yes Safe math expressions evaluation Escpos-php ? MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers GeoIP 1.4 LGPL-2.1+ Yes Sample code to make geoip convert (not into deb package) Mobiledetect 2.8.83 MIT License Yes Detect mobile devices browsers NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package) PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency -odtPHP 1.0.1 GPL-2+ Yes Library to build/edit ODT files ParseDown 1.6 MIT License Yes Markdown parser +PHPDebugBar 1.15.0 MIT License Yes Used only by the module "debugbar" for developers PHPExcel 1.8.1 LGPL-2.1+ Yes Read/Write XLS files, read ODS files PHPSpreadSheet ? LGPL-2.1+ Yes Read/Write XLS files, read ODS files php-iban 1.4.7 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP From 319bc7ec8a1f23908063a80e50de989f6d392a72 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Jun 2019 12:12:20 +0200 Subject: [PATCH 22/22] Fix syntax error --- htdocs/core/class/html.formother.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 6cf3c816a24..79aa4cc8c77 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -402,7 +402,6 @@ class FormOther if (! empty($user->admin) && empty($user->entity) && $conf->entity == 1) { $sql_usr.= " WHERE u.entity IS NOT NULL"; // Show all users } else { - $sql_usr.= ", $sql_usr.= " WHERE EXISTS (SELECT ug.fk_user FROM ".MAIN_DB_PREFIX."usergroup_user as ug WHERE u.rowid = ug.fk_user AND ug.entity IN (".getEntity('user')."))"; $sql_usr.= " OR u.entity = 0"; // Show always superadmin }