From 6ce006f853053a5e24daad7a128f3403de9002e2 Mon Sep 17 00:00:00 2001 From: quentin Date: Mon, 16 Nov 2020 15:46:16 +0100 Subject: [PATCH 01/38] FIX cant empty action comm desc --- htdocs/comm/action/card.php | 1 - htdocs/comm/action/class/actioncomm.class.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 129696a60d9..0709a2571ad 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -469,7 +469,6 @@ if (empty($reshook) && $action == 'update') $object->note_private = trim(GETPOST("note", "none")); $object->fk_element = GETPOST("fk_element", "int"); $object->elementtype = GETPOST("elementtype", "alphanohtml"); - if (!$datef && $percentage == 100) { $error++; $donotclearsession = 1; diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 3c060ffdc39..7355040e00c 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -983,7 +983,7 @@ class ActionComm extends CommonObject // Clean parameters $this->label = trim($this->label); - $this->note_private = dol_htmlcleanlastbr(trim(empty($this->note_private) ? $this->note : $this->note_private)); + $this->note_private = dol_htmlcleanlastbr(trim(!isset($this->note_private) ? $this->note : $this->note_private)); if (empty($this->percentage)) $this->percentage = 0; if (empty($this->priority) || !is_numeric($this->priority)) $this->priority = 0; if (empty($this->transparency)) $this->transparency = 0; From 4ae121d870865ee5f8edba8b422fa59d94daf976 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 16 Nov 2020 19:43:45 +0100 Subject: [PATCH 02/38] FIX Can't create shipment for virtual product. Add STOCK_EXCLUDE_VIRTUAL_PRODUCTS as a quick hack to solve this. --- htdocs/expedition/class/expedition.class.php | 31 +++++++------- htdocs/product/class/product.class.php | 43 ++++++++++++-------- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index f3e9d5f26f8..d14a34515c4 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -954,33 +954,36 @@ class Expedition extends CommonObject { $fk_product = $orderline->fk_product; - if (!($entrepot_id > 0) && empty($conf->global->STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS)) - { + if (!($entrepot_id > 0) && empty($conf->global->STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS)) { $langs->load("errors"); $this->error = $langs->trans("ErrorWarehouseRequiredIntoShipmentLine"); return -1; } - if ($conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT) - { - // Check must be done for stock of product into warehouse if $entrepot_id defined + if ($conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT) { $product = new Product($this->db); - $result = $product->fetch($fk_product); + $product->fetch($fk_product); + // Check must be done for stock of product into warehouse if $entrepot_id defined if ($entrepot_id > 0) { $product->load_stock('warehouseopen'); $product_stock = $product->stock_warehouse[$entrepot_id]->real; - } - else + } else { $product_stock = $product->stock_reel; + } $product_type = $product->type; - if ($product_type == 0 && $product_stock < $qty) - { - $langs->load("errors"); - $this->error = $langs->trans('ErrorStockIsNotEnoughToAddProductOnShipment', $product->ref); - $this->db->rollback(); - return -3; + if ($product_type == 0 || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) { + $isavirtualproduct = ($product->hasFatherOrChild(1) > 0); + // The product is qualified for a check of quantity (must be enough in stock to be added into shipment). + if (!$isavirtualproduct || empty($conf->global->PRODUIT_SOUSPRODUITS) || ($isavirtualproduct && empty($conf->global->STOCK_EXCLUDE_VIRTUAL_PRODUCTS))) { // If STOCK_EXCLUDE_VIRTUAL_PRODUCTS is set, we do not manage stock for kits/virtual products. + if ($product_stock < $qty) { + $langs->load("errors"); + $this->error = $langs->trans('ErrorStockIsNotEnoughToAddProductOnShipment', $product->ref); + $this->db->rollback(); + return -3; + } + } } } } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 55cc67de4a5..3630155662e 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4208,29 +4208,36 @@ class Product extends CommonObject } /** - * Return all parent products for current product (first level only) + * Count all parent and children products for current product (first level only) * - * @return int Nb of father + child + * @param int $mode 0=Both parent and child, -1=Parents only, 1=Children only + * @return int Nb of father + child + * @see getFather(), get_sousproduits_arbo() */ - public function hasFatherOrChild() + public function hasFatherOrChild($mode = 0) { - $nb = 0; + $nb = 0; - $sql = "SELECT COUNT(pa.rowid) as nb"; - $sql .= " FROM ".MAIN_DB_PREFIX."product_association as pa"; - $sql .= " WHERE pa.fk_product_fils = ".$this->id." OR pa.fk_product_pere = ".$this->id; - $resql = $this->db->query($sql); - if ($resql) { - $obj = $this->db->fetch_object($resql); - if ($obj) { $nb = $obj->nb; - } - } - else - { - return -1; - } + $sql = "SELECT COUNT(pa.rowid) as nb"; + $sql .= " FROM ".MAIN_DB_PREFIX."product_association as pa"; + if ($mode == 0) { + $sql .= " WHERE pa.fk_product_fils = ".$this->id." OR pa.fk_product_pere = ".$this->id; + } elseif ($mode == -1) { + $sql .= " WHERE pa.fk_product_fils = ".$this->id; // We are a child, so we found lines that link to parents (can have several parents) + } elseif ($mode == 1) { + $sql .= " WHERE pa.fk_product_pere = ".$this->id; // We are a parent, so we found lines that link to children (can have several children) + } - return $nb; + $resql = $this->db->query($sql); + if ($resql) { + $obj = $this->db->fetch_object($resql); + if ($obj) { $nb = $obj->nb; + } + } else { + return -1; + } + + return $nb; } /** From 5820a23c1cbb294618250718b64306afdf3b6922 Mon Sep 17 00:00:00 2001 From: UT from dolibit <45215329+dolibit-ut@users.noreply.github.com> Date: Thu, 19 Nov 2020 14:04:21 +0100 Subject: [PATCH 03/38] Update README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ac8f1d06382..139bdc00b6a 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ You can freely use, study, modify or distribute it according to its licence. You can use it as a standalone application or as a web application to access it from the Internet or a LAN. -Dolibarr has a large community ready to help you, free forums and [oficially preferred partners ready to offer commercial support should you need it](https://partners.dolibarr.org) +Dolibarr has a large community ready to help you, free forums and [officially preferred partners ready to offer commercial support should you need it](https://partners.dolibarr.org) ![ScreenShot](https://www.dolibarr.org/medias/dolibarr_screenshot1_1920x1080.jpg) @@ -45,7 +45,7 @@ On GNU/Linux, first check if your distribution has already packaged Dolibarr. #### Generic install steps: -- Check that your installed PHP version is supported [see PHP support](https://wiki.dolibarr.org/index.php/Versions). +- Check that your installed PHP version is supported [see PHP support](https://wiki.dolibarr.org/index.php/Releases). - Uncompress the downloaded .zip archive to copy the "dolibarr/htdocs" directory and all its files inside your web server root or get the files directly from GitHub (recommanded if you know git as it makes it easier if you want to upgrade later): @@ -90,6 +90,7 @@ Dolibarr supports upgrading usually wihtout the need for any (commercial) suppor See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog) file. + ## FEATURES ### Main application/modules (all optional) @@ -162,8 +163,8 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog) ### System Environment / Requirements -- Works with PHP 5.5+ and MariaDB 5.0.3+, MySQL 5.0.3+ or PostgreSQL 8.1.4+ (See requirements on the [Wiki](https://wiki.dolibarr.org/index.php/Prerequisite)) -- Compatible with all Cloud solutions that match MySQL, PHP or PostgreSQL prerequisites. +- Works with PHP 5.6+ and MariaDB 5.0.3+, MySQL 5.0.3+ or PostgreSQL 8.1.4+ (See requirements on the [Wiki](https://wiki.dolibarr.org/index.php/Prerequisite)) +- Compatible with all Cloud solutions that match PHP & MySQL or PostgreSQL prerequisites. ### Extending From 29dae5d9f0feec1a47a2a71f7bde10e9dae89421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 19 Nov 2020 21:09:29 +0100 Subject: [PATCH 04/38] remove warnings --- htdocs/don/card.php | 64 +++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 34 deletions(-) diff --git a/htdocs/don/card.php b/htdocs/don/card.php index cec185e757e..ca15a88383e 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -141,28 +141,27 @@ if ($action == 'update') { $object->fetch($id); - $object->firstname = GETPOST("firstname", 'alpha'); - $object->lastname = GETPOST("lastname", 'alpha'); - $object->societe = GETPOST("societe", 'alpha'); - $object->address = GETPOST("address", 'alpha'); + $object->firstname = (string) GETPOST("firstname", 'alpha'); + $object->lastname = (string) GETPOST("lastname", 'alpha'); + $object->societe = (string) GETPOST("societe", 'alpha'); + $object->address = (string) GETPOST("address", 'alpha'); $object->amount = price2num(GETPOST("amount", 'alpha')); - $object->town = GETPOST("town", 'alpha'); - $object->zip = GETPOST("zipcode", 'alpha'); - $object->country_id = GETPOST('country_id', 'int'); - $object->email = GETPOST("email", 'alpha'); + $object->town = (string) GETPOST("town", 'alpha'); + $object->zip = (string) GETPOST("zipcode", 'alpha'); + $object->country_id = (int GETPOST('country_id', 'int'); + $object->email = (string) GETPOST("email", 'alpha'); $object->date = $donation_date; - $object->public = GETPOST("public", 'alpha'); + $object->public = (string) GETPOST("public", 'alpha'); $object->fk_project = GETPOST("fk_project", 'alpha'); - $object->note_private = GETPOST("note_private", 'restricthtml'); - $object->note_public = GETPOST("note_public", 'restricthtml'); - $object->modepaymentid = GETPOST('modepayment', 'int'); + $object->note_private = (string) GETPOST("note_private", 'restricthtml'); + $object->note_public = (string) GETPOST("note_public", 'restricthtml'); + $object->modepaymentid = (int) GETPOST('modepayment', 'int'); // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost(null, $object); if ($ret < 0) $error++; - if ($object->update($user) > 0) - { + if ($object->update($user) > 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } @@ -195,30 +194,29 @@ if ($action == 'add') if (!$error) { - $object->socid = GETPOST("socid", 'int'); - $object->firstname = GETPOST("firstname", 'alpha'); - $object->lastname = GETPOST("lastname", 'alpha'); - $object->societe = GETPOST("societe", 'alpha'); - $object->address = GETPOST("address", 'alpha'); + $object->socid = (int) GETPOST("socid", 'int'); + $object->firstname = (string) GETPOST("firstname", 'alpha'); + $object->lastname = (string) GETPOST("lastname", 'alpha'); + $object->societe = (string) GETPOST("societe", 'alpha'); + $object->address = (string) GETPOST("address", 'alpha'); $object->amount = price2num(GETPOST("amount", 'alpha')); - $object->zip = GETPOST("zipcode", 'alpha'); - $object->town = GETPOST("town", 'alpha'); - $object->country_id = GETPOST('country_id', 'int'); - $object->email = GETPOST('email', 'alpha'); + $object->zip = (string) GETPOST("zipcode", 'alpha'); + $object->town = (string) GETPOST("town", 'alpha'); + $object->country_id = (int) GETPOST('country_id', 'int'); + $object->email = (string) GETPOST('email', 'alpha'); $object->date = $donation_date; - $object->note_private = GETPOST("note_private", 'restricthtml'); - $object->note_public = GETPOST("note_public", 'restricthtml'); - $object->public = GETPOST("public", 'alpha'); - $object->fk_project = GETPOST("fk_project", 'alpha'); - $object->modepaymentid = GETPOST('modepayment', 'int'); + $object->note_private = (string) GETPOST("note_private", 'restricthtml'); + $object->note_public = (string) GETPOST("note_public", 'restricthtml'); + $object->public = (string) GETPOST("public", 'alpha'); + $object->fk_project = (string) GETPOST("fk_project", 'alpha'); + $object->modepaymentid = (int) GETPOST('modepayment', 'int'); // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost(null, $object); if ($ret < 0) $error++; $res = $object->create($user); - if ($res > 0) - { + if ($res > 0) { header("Location: ".$_SERVER['PHP_SELF'].'?id='.$res); exit; } else { @@ -230,8 +228,7 @@ if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $user->rights- { $object->fetch($id); $result = $object->delete($user); - if ($result > 0) - { + if ($result > 0) { header("Location: index.php"); exit; } else { @@ -546,8 +543,7 @@ if (!empty($id) && $action == 'edit') print ''; // Amount - if ($object->statut == 0) - { + if ($object->statut == 0) { print "".''.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->currency).''; } else { print ''.$langs->trans("Amount").''; From b4a5134a7f25be2f8d1baea083723d2c7e5cf6f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 19 Nov 2020 22:25:02 +0100 Subject: [PATCH 05/38] doxygen --- htdocs/core/class/vcard.class.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/vcard.class.php b/htdocs/core/class/vcard.class.php index 0e3f04fa0f5..9c03475453f 100644 --- a/htdocs/core/class/vcard.class.php +++ b/htdocs/core/class/vcard.class.php @@ -85,10 +85,19 @@ function dol_quoted_printable_encode($input, $line_max = 76) */ class vCard { + /** + * @var array array of properties + */ public $properties; + + /** + * @var string filename + */ public $filename; - //var $encoding="UTF-8"; + /** + * @var string encoding + */ public $encoding = "ISO-8859-1;ENCODING=QUOTED-PRINTABLE"; From 09cb47212199f6eec956a916c61c3a7e1c2bb492 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Nov 2020 13:34:40 +0100 Subject: [PATCH 06/38] Update card.php --- htdocs/don/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/don/card.php b/htdocs/don/card.php index ca15a88383e..8a5736c50cd 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -148,7 +148,7 @@ if ($action == 'update') $object->amount = price2num(GETPOST("amount", 'alpha')); $object->town = (string) GETPOST("town", 'alpha'); $object->zip = (string) GETPOST("zipcode", 'alpha'); - $object->country_id = (int GETPOST('country_id', 'int'); + $object->country_id = (int) GETPOST('country_id', 'int'); $object->email = (string) GETPOST("email", 'alpha'); $object->date = $donation_date; $object->public = (string) GETPOST("public", 'alpha'); From 4fef8d80a5eb5571a1f804726d5a53e2044dab21 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 20 Nov 2020 16:01:51 +0100 Subject: [PATCH 07/38] FIX keep dates filters parameters on order list --- htdocs/commande/list.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 71ff0ef147a..cee3b5537af 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -59,10 +59,10 @@ $search_datecloture_start = GETPOST('search_datecloture_start', 'int'); if (empty($search_datecloture_start)) $search_datecloture_start = dol_mktime(0, 0, 0, GETPOST('search_datecloture_startmonth', 'int'), GETPOST('search_datecloture_startday', 'int'), GETPOST('search_datecloture_startyear', 'int')); $search_datecloture_end = GETPOST('search_datecloture_end', 'int'); if (empty($search_datecloture_end)) $search_datecloture_end = dol_mktime(23, 59, 59, GETPOST('search_datecloture_endmonth', 'int'), GETPOST('search_datecloture_endday', 'int'), GETPOST('search_datecloture_endyear', 'int')); -$search_dateorder_start = dol_mktime(0, 0, 0, GETPOST('search_dateorder_startmonth', 'int'), GETPOST('search_dateorder_startday', 'int'), GETPOST('search_dateorder_startyear', 'int')); -$search_dateorder_end = dol_mktime(23, 59, 59, GETPOST('search_dateorder_endmonth', 'int'), GETPOST('search_dateorder_endday', 'int'), GETPOST('search_dateorder_endyear', 'int')); -$search_datedelivery_start = dol_mktime(0, 0, 0, GETPOST('search_datedelivery_startmonth', 'int'), GETPOST('search_datedelivery_startday', 'int'), GETPOST('search_datedelivery_startyear', 'int')); -$search_datedelivery_end = dol_mktime(23, 59, 59, GETPOST('search_datedelivery_endmonth', 'int'), GETPOST('search_datedelivery_endday', 'int'), GETPOST('search_datedelivery_endyear', 'int')); +$search_dateorder_start = dol_mktime(0, 0, 0, GETPOST('search_dateorder_start_month', 'int'), GETPOST('search_dateorder_start_day', 'int'), GETPOST('search_dateorder_start_year', 'int')); +$search_dateorder_end = dol_mktime(23, 59, 59, GETPOST('search_dateorder_end_month', 'int'), GETPOST('search_dateorder_end_day', 'int'), GETPOST('search_dateorder_end_year', 'int')); +$search_datedelivery_start = dol_mktime(0, 0, 0, GETPOST('search_datedelivery_start_month', 'int'), GETPOST('search_datedelivery_start_day', 'int'), GETPOST('search_datedelivery_start_year', 'int')); +$search_datedelivery_end = dol_mktime(23, 59, 59, GETPOST('search_datedelivery_end_month', 'int'), GETPOST('search_datedelivery_end_day', 'int'), GETPOST('search_datedelivery_end_year', 'int')); $search_product_category = GETPOST('search_product_category', 'int'); $search_ref = GETPOST('search_ref', 'alpha') != '' ?GETPOST('search_ref', 'alpha') : GETPOST('sref', 'alpha'); $search_ref_customer = GETPOST('search_ref_customer', 'alpha'); @@ -448,10 +448,10 @@ if ($resql) if ($search_status != '') $param .= '&search_status='.urlencode($search_status); if ($search_datecloture_start) $param .= '&search_datecloture_start='.urlencode($search_datecloture_start); if ($search_datecloture_end) $param .= '&search_datecloture_end='.urlencode($search_datecloture_end); - if ($search_dateorder_start) $param .= '&search_dateorder_start='.urlencode($search_dateorder_start); - if ($search_dateorder_end) $param .= '&search_dateorder_end='.urlencode($search_dateorder_end); - if ($search_datedelivery_start) $param .= '&search_datedelivery_start='.urlencode($search_datedelivery_start); - if ($search_datedelivery_end) $param .= '&search_datedelivery_end='.urlencode($search_datedelivery_end); + if ($search_datedelivery_start) $param .= '&search_dateorder_start_day=' . dol_print_date($search_dateorder_start, '%d') . '&search_dateorder_start_month=' . dol_print_date($search_dateorder_start, '%m') . '&search_dateorder_start_year=' . dol_print_date($search_dateorder_start, '%Y'); + if ($search_datedelivery_end) $param .= '&search_dateorder_end_day=' . dol_print_date($search_dateorder_end, '%d') . '&search_dateorder_end_month=' . dol_print_date($search_dateorder_end, '%m') . '&search_dateorder_end_year=' . dol_print_date($search_dateorder_end, '%Y'); + if ($search_datedelivery_start) $param .= '&search_datedelivery_start_day=' . dol_print_date($search_datedelivery_start, '%d') . '&search_datedelivery_start_month=' . dol_print_date($search_datedelivery_start, '%m') . '&search_datedelivery_start_year=' . dol_print_date($search_datedelivery_start, '%Y'); + if ($search_datedelivery_end) $param .= '&search_datedelivery_end_day=' . dol_print_date($search_datedelivery_end, '%d') . '&search_datedelivery_end_month=' . dol_print_date($search_datedelivery_end, '%m') . '&search_datedelivery_end_year=' . dol_print_date($search_datedelivery_end, '%Y'); if ($search_ref) $param .= '&search_ref='.urlencode($search_ref); if ($search_company) $param .= '&search_company='.urlencode($search_company); if ($search_ref_customer) $param .= '&search_ref_customer='.urlencode($search_ref_customer); @@ -708,10 +708,10 @@ if ($resql) { print ''; print '
'; - print $form->selectDate($search_dateorder_start ? $search_dateorder_start : -1, 'search_dateorder_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); + print $form->selectDate($search_dateorder_start ? $search_dateorder_start : -1, 'search_dateorder_start_', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); print '
'; print '
'; - print $form->selectDate($search_dateorder_end ? $search_dateorder_end : -1, 'search_dateorder_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to')); + print $form->selectDate($search_dateorder_end ? $search_dateorder_end : -1, 'search_dateorder_end_', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to')); print '
'; print ''; } @@ -719,10 +719,10 @@ if ($resql) { print ''; print '
'; - print $form->selectDate($search_datedelivery_start ? $search_datedelivery_start : -1, 'search_datedelivery_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); + print $form->selectDate($search_datedelivery_start ? $search_datedelivery_start : -1, 'search_datedelivery_start_', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); print '
'; print '
'; - print $form->selectDate($search_datedelivery_end ? $search_datedelivery_end : -1, 'search_datedelivery_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to')); + print $form->selectDate($search_datedelivery_end ? $search_datedelivery_end : -1, 'search_datedelivery_end_', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to')); print '
'; print ''; } From e87bdd02bdc5ea486ea87df67dfb0f4f133228d2 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 20 Nov 2020 16:10:11 +0100 Subject: [PATCH 08/38] FIX date order param not empty --- htdocs/commande/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index cee3b5537af..0828971eaa5 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -448,8 +448,8 @@ if ($resql) if ($search_status != '') $param .= '&search_status='.urlencode($search_status); if ($search_datecloture_start) $param .= '&search_datecloture_start='.urlencode($search_datecloture_start); if ($search_datecloture_end) $param .= '&search_datecloture_end='.urlencode($search_datecloture_end); - if ($search_datedelivery_start) $param .= '&search_dateorder_start_day=' . dol_print_date($search_dateorder_start, '%d') . '&search_dateorder_start_month=' . dol_print_date($search_dateorder_start, '%m') . '&search_dateorder_start_year=' . dol_print_date($search_dateorder_start, '%Y'); - if ($search_datedelivery_end) $param .= '&search_dateorder_end_day=' . dol_print_date($search_dateorder_end, '%d') . '&search_dateorder_end_month=' . dol_print_date($search_dateorder_end, '%m') . '&search_dateorder_end_year=' . dol_print_date($search_dateorder_end, '%Y'); + if ($search_dateorder_start) $param .= '&search_dateorder_start_day=' . dol_print_date($search_dateorder_start, '%d') . '&search_dateorder_start_month=' . dol_print_date($search_dateorder_start, '%m') . '&search_dateorder_start_year=' . dol_print_date($search_dateorder_start, '%Y'); + if ($search_dateorder_end) $param .= '&search_dateorder_end_day=' . dol_print_date($search_dateorder_end, '%d') . '&search_dateorder_end_month=' . dol_print_date($search_dateorder_end, '%m') . '&search_dateorder_end_year=' . dol_print_date($search_dateorder_end, '%Y'); if ($search_datedelivery_start) $param .= '&search_datedelivery_start_day=' . dol_print_date($search_datedelivery_start, '%d') . '&search_datedelivery_start_month=' . dol_print_date($search_datedelivery_start, '%m') . '&search_datedelivery_start_year=' . dol_print_date($search_datedelivery_start, '%Y'); if ($search_datedelivery_end) $param .= '&search_datedelivery_end_day=' . dol_print_date($search_datedelivery_end, '%d') . '&search_datedelivery_end_month=' . dol_print_date($search_datedelivery_end, '%m') . '&search_datedelivery_end_year=' . dol_print_date($search_datedelivery_end, '%Y'); if ($search_ref) $param .= '&search_ref='.urlencode($search_ref); From 064b5acff5c6c8888eefbea6ab5763162bfbe844 Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Fri, 20 Nov 2020 17:16:49 +0100 Subject: [PATCH 09/38] List supplier barcode --- htdocs/fourn/class/fournisseur.product.class.php | 4 ++-- htdocs/product/fournisseurs.php | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index abd1f3baab9..fbeeda9ba60 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -674,8 +674,8 @@ class ProductFournisseur extends Product } if ($conf->barcode->enabled) { - $prodfourn->barcode = $record["barcode"]; - $prodfourn->fk_barcode_type = $record["fk_barcode_type"]; + $prodfourn->supplier_barcode = $record["barcode"]; + $prodfourn->supplier_fk_barcode_type = $record["fk_barcode_type"]; } if (!empty($conf->dynamicprices->enabled) && !empty($prodfourn->fk_supplier_price_expression)) { diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 5cb12b100f1..f3ac7afbd58 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -725,7 +725,7 @@ END; // Option to define a transport cost on supplier price print ''; print ''.$langs->trans('BarcodeValue').''; - print ''; + print ''; print ''; $formbarcode = new FormBarCode($db); @@ -733,7 +733,7 @@ END; print ''; print ''.$langs->trans('BarcodeType').''; print ''; - print $formbarcode->selectBarcodeType(($rowid ? $object->fourn_fk_barcode_type : $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE), 'fk_barcode_type', 1); + print $formbarcode->selectBarcodeType(($rowid ? $object->supplier_fk_barcode_type : $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE), 'fk_barcode_type', 1); print ''; print ''; } @@ -1071,16 +1071,16 @@ END; // Barcode if (!empty($arrayfields['pfp.barcode']['checked'])) { print ''; - print $productfourn->barcode; + print $productfourn->supplier_barcode; print ''; } // Barcode type if (!empty($arrayfields['pfp.fk_barcode_type']['checked'])) { print ''; - $productfourn->barcode_type = !empty($productfourn->fk_barcode_type) ? $productfourn->fk_barcode_type : 0; + $productfourn->barcode_type = !empty($productfourn->supplier_fk_barcode_type) ? $productfourn->supplier_fk_barcode_type : 0; $productfourn->fetch_barcode(); - print $productfourn->barcode_type_label ? $productfourn->barcode_type_label : ($productfourn->barcode ? '
'.$langs->trans("SetDefaultBarcodeType").'
' : ''); + print $productfourn->barcode_type_label ? $productfourn->barcode_type_label : ($productfourn->supplier_barcode ? '
'.$langs->trans("SetDefaultBarcodeType").'
' : ''); print ''; } From d24ac5109d919c113ca2db6cf3c926b6e478f2b6 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Fri, 20 Nov 2020 18:40:04 +0100 Subject: [PATCH 10/38] FIX TakePOS order_notes extrafield --- htdocs/takepos/admin/bar.php | 4 ++++ htdocs/takepos/admin/other.php | 4 ---- htdocs/takepos/admin/setup.php | 5 ----- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php index 481394c626f..fc727b66578 100644 --- a/htdocs/takepos/admin/bar.php +++ b/htdocs/takepos/admin/bar.php @@ -65,6 +65,10 @@ if (GETPOST('action', 'alpha') == 'set') } } +if ($conf->global->TAKEPOS_ORDER_NOTES == 1) { + $extrafields = new ExtraFields($db); + $extrafields->addExtraField('order_notes', 'Order notes', 'varchar', 0, 255, 'facturedet', 0, 0, '', '', 0, '', 0, 1); +} /* * View diff --git a/htdocs/takepos/admin/other.php b/htdocs/takepos/admin/other.php index 2f8368ee957..6874665ace7 100644 --- a/htdocs/takepos/admin/other.php +++ b/htdocs/takepos/admin/other.php @@ -83,10 +83,6 @@ if (GETPOST('action', 'alpha') == 'set') { $res = dolibarr_set_const($db, "TAKEPOS_SUMUP_AFFILIATE", GETPOST('TAKEPOS_SUMUP_AFFILIATE', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_SUMUP_APPID", GETPOST('TAKEPOS_SUMUP_APPID', 'alpha'), 'chaine', 0, '', $conf->entity); } - if ($conf->global->TAKEPOS_ORDER_NOTES == 1) { - $extrafields = new ExtraFields($db); - $extrafields->addExtraField('order_notes', 'Order notes', 'varchar', 0, 255, 'facturedet', 0, 0, '', '', 0, '', 0, 1); - } dol_syslog("admin/cashdesk: level ".GETPOST('level', 'alpha')); diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 804a189de00..7fe0e39062b 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -82,11 +82,6 @@ if ($action == 'set') $res = dolibarr_set_const($db, "TAKEPOS_SUMUP_AFFILIATE", GETPOST('TAKEPOS_SUMUP_AFFILIATE', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_SUMUP_APPID", GETPOST('TAKEPOS_SUMUP_APPID', 'alpha'), 'chaine', 0, '', $conf->entity); } - if ($conf->global->TAKEPOS_ORDER_NOTES == 1) - { - $extrafields = new ExtraFields($db); - $extrafields->addExtraField('order_notes', 'Order notes', 'varchar', 0, 255, 'facturedet', 0, 0, '', '', 0, '', 0, 1); - } dol_syslog("admin/cashdesk: level ".GETPOST('level', 'alpha')); From f7228d96af13d800324f75d711ba05cc1df042b4 Mon Sep 17 00:00:00 2001 From: Florian Mortgat Date: Fri, 20 Nov 2020 19:12:59 +0100 Subject: [PATCH 11/38] FIX 12.0 - when the cronjob 'params' field is empty, the cron method is called with one empty string param instead of no params at all --- htdocs/cron/class/cronjob.class.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 39220f0cebe..ba7adfd320f 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -1052,7 +1052,10 @@ class Cronjob extends CommonObject $object = new $this->objectname($this->db); if ($this->entity > 0) $object->entity = $this->entity; // We work on a dedicated entity - $params_arr = array_map('trim', explode(",", $this->params)); + $params_arr = array(); + if (!empty($this->params) || $this->params === '0'){ + $params_arr = array_map('trim', explode(",", $this->params)); + } if (!is_array($params_arr)) { @@ -1113,7 +1116,7 @@ class Cronjob extends CommonObject } dol_syslog(get_class($this)."::run_jobs ".$this->libname."::".$this->methodename."(".$this->params.");", LOG_DEBUG); - $params_arr = explode(", ", $this->params); + $params_arr = explode(", ", $this->params); if (!is_array($params_arr)) { $result = call_user_func($this->methodename, $this->params); From 6c75997b271821de38f0d81859812d944f09cd46 Mon Sep 17 00:00:00 2001 From: Florian Mortgat Date: Fri, 20 Nov 2020 19:15:15 +0100 Subject: [PATCH 12/38] FIX wrong tab --- htdocs/cron/class/cronjob.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index ba7adfd320f..e8b3fd8e96b 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -1116,7 +1116,7 @@ class Cronjob extends CommonObject } dol_syslog(get_class($this)."::run_jobs ".$this->libname."::".$this->methodename."(".$this->params.");", LOG_DEBUG); - $params_arr = explode(", ", $this->params); + $params_arr = explode(", ", $this->params); if (!is_array($params_arr)) { $result = call_user_func($this->methodename, $this->params); From 84b2d7e9746307e56a8c75fd5dba51c5efc62674 Mon Sep 17 00:00:00 2001 From: Valcoop <74793548+Valcoop@users.noreply.github.com> Date: Fri, 20 Nov 2020 22:19:17 +0100 Subject: [PATCH 13/38] FIX Bug where amount of voters was always 0 FIX Bug where amount of voters was always 0. Due to erroneous sql query build fetching the wrong column name. --- htdocs/opensurvey/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php index dbc38b7b197..f4f316122fb 100644 --- a/htdocs/opensurvey/list.php +++ b/htdocs/opensurvey/list.php @@ -349,7 +349,7 @@ while ($i < min($num, $limit)) $obj = $db->fetch_object($resql); if (empty($obj)) break; // Should not happen - $sql2 = 'select COUNT(*) as nb from '.MAIN_DB_PREFIX."opensurvey_user_studs where id_sondage='".$db->escape($obj->id_sondage)."'"; + $sql2 = 'select COUNT(*) as nb from '.MAIN_DB_PREFIX."opensurvey_user_studs where id_sondage='".$db->escape($obj->rowid)."'"; $resql2 = $db->query($sql2); if ($resql2) { From 89e101e0b6c839429f879f53d5d877ab988718ea Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Sat, 21 Nov 2020 11:38:07 +0100 Subject: [PATCH 14/38] Fix wrong value for deprecated --- htdocs/fourn/class/fournisseur.product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index fbeeda9ba60..60d87cc7759 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -559,7 +559,7 @@ class ProductFournisseur extends Product $this->fourn_multicurrency_code = $obj->multicurrency_code; if ($conf->barcode->enabled) { $this->fourn_barcode = $obj->barcode; // deprecated - $this->fourn_fk_barcode_type = $obj->barcode; // deprecated + $this->fourn_fk_barcode_type = $obj->fk_barcode_type; // deprecated $this->supplier_barcode = $obj->barcode; $this->supplier_fk_barcode_type = $obj->fk_barcode_type; } From ec49eed8b92ad18f1afedfe06ca2e94a68f68d3d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 21 Nov 2020 12:45:22 +0100 Subject: [PATCH 15/38] Fix css --- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/md/style.css.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index bcbeba44f46..4e63e915593 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3983,7 +3983,7 @@ img.boxhandle, img.boxclose { .ok { color: #114466; } .warning { color: #887711 !important; } .error { color: #660000 !important; font-weight: bold; } -.green { color: #118822; } +.green { color: #118822 !important; } div.ok { color: #114466; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 63886879f8e..d863f53285b 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3881,7 +3881,7 @@ img.boxhandle, img.boxclose { .ok { color: #114466; } .warning { color: #887711 !important; } .error { color: #550000 !important; font-weight: bold; } -.green { color: #118822; } +.green { color: #118822 !important; } div.ok { color: #114466; From 35345559096d0b05cdbf0dda173063691ca15bc6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 21 Nov 2020 14:14:53 +0100 Subject: [PATCH 16/38] Fix setup of scheduled jobs --- htdocs/admin/agenda_reminder.php | 75 ++++++++++++------------- htdocs/comm/action/card.php | 26 +++------ htdocs/core/class/html.form.class.php | 14 +++-- htdocs/core/lib/agenda.lib.php | 11 ++-- htdocs/core/lib/cron.lib.php | 5 ++ htdocs/core/modules/modAgenda.class.php | 2 +- htdocs/cron/admin/cron.php | 6 +- htdocs/cron/card.php | 12 ++-- htdocs/cron/list.php | 40 +++++++++---- htdocs/langs/en_US/admin.lang | 5 +- htdocs/langs/en_US/agenda.lang | 2 +- htdocs/langs/en_US/cron.lang | 4 +- 12 files changed, 110 insertions(+), 92 deletions(-) diff --git a/htdocs/admin/agenda_reminder.php b/htdocs/admin/agenda_reminder.php index e34536e648a..7dfbeff82f6 100644 --- a/htdocs/admin/agenda_reminder.php +++ b/htdocs/admin/agenda_reminder.php @@ -179,53 +179,52 @@ print ' '."\n"; print ''.$langs->trans("Value").''."\n"; print ''."\n"; +// AGENDA REMINDER BROWSER +print ''."\n"; +print ''.$langs->trans('AGENDA_REMINDER_BROWSER').''."\n"; +print ' '."\n"; +print ''."\n"; + +if (empty($conf->global->AGENDA_REMINDER_BROWSER)) { + print ''.img_picto($langs->trans('Disabled'), 'switch_off').''; + print ''."\n"; +} else { + print ''.img_picto($langs->trans('Enabled'), 'switch_on').''; + print ''."\n"; + + print ''."\n"; + print ''.$langs->trans('AGENDA_REMINDER_BROWSER_SOUND').''."\n"; + print ' '."\n"; + print ''."\n"; + + if (empty($conf->global->AGENDA_REMINDER_BROWSER_SOUND)) { + print ''.img_picto($langs->trans('Disabled'), 'switch_off').''; + } else { + print ''.img_picto($langs->trans('Enabled'), 'switch_on').''; + } + + print ''."\n"; +} // AGENDA REMINDER EMAIL -if ($conf->global->MAIN_FEATURES_LEVEL == 2) -{ - print ''."\n"; - print ''.$langs->trans('AGENDA_REMINDER_EMAIL', $langs->transnoentities("Module2300Name")).''."\n"; - print ' '."\n"; - print ''."\n"; +print ''."\n"; +print ''.$langs->trans('AGENDA_REMINDER_EMAIL', $langs->transnoentities("Module2300Name")).''."\n"; +print ' '."\n"; +print ''."\n"; +if (empty($conf->cron->enabled)) { + print ''.$langs->trans("WarningModuleNotActive", $langs->transnoentitiesnoconv("Module2300Name")).''; +} else { if (empty($conf->global->AGENDA_REMINDER_EMAIL)) { print ''.img_picto($langs->trans('Disabled'), 'switch_off').''; - print ''."\n"; } else { print ''.img_picto($langs->trans('Enabled'), 'switch_on').''; - print ''."\n"; - } -} - -// AGENDA REMINDER BROWSER -if ($conf->global->MAIN_FEATURES_LEVEL == 2) -{ - print ''."\n"; - print ''.$langs->trans('AGENDA_REMINDER_BROWSER').''."\n"; - print ' '."\n"; - print ''."\n"; - - if (empty($conf->global->AGENDA_REMINDER_BROWSER)) { - print ''.img_picto($langs->trans('Disabled'), 'switch_off').''; - print ''."\n"; - } else { - print ''.img_picto($langs->trans('Enabled'), 'switch_on').''; - print ''."\n"; - - print ''."\n"; - print ''.$langs->trans('AGENDA_REMINDER_BROWSER_SOUND').''."\n"; - print ' '."\n"; - print ''."\n"; - - if (empty($conf->global->AGENDA_REMINDER_BROWSER_SOUND)) { - print ''.img_picto($langs->trans('Disabled'), 'switch_off').''; - } else { - print ''.img_picto($langs->trans('Enabled'), 'switch_on').''; - } - - print ''."\n"; + // Get the max frequency of reminder + + print '
'.$langs->trans("AGENDA_REMINDER_EMAIL_NOTE", $langs->transnoentitiesnoconv("Module2300Name")).''; } } +print ''."\n"; print ''; diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 0b1eba637d4..6d51a16ddc2 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -117,8 +117,8 @@ $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); $TRemindTypes = array(); -if (!empty($conf->global->AGENDA_REMINDER_EMAIL)) $TRemindTypes['email'] = $langs->trans('EMail'); -if (!empty($conf->global->AGENDA_REMINDER_BROWSER)) $TRemindTypes['browser'] = $langs->trans('BrowserPush'); +if (!empty($conf->global->AGENDA_REMINDER_BROWSER)) $TRemindTypes['browser'] = array('label'=>$langs->trans('BrowserPush'), 'disabled'=>(empty($conf->global->AGENDA_REMINDER_BROWSER) ? 1 : 0)); +if (!empty($conf->global->AGENDA_REMINDER_EMAIL)) $TRemindTypes['email'] = array('label'=>$langs->trans('EMail'), 'disabled'=>(empty($conf->global->AGENDA_REMINDER_EMAIL) ? 1 : 0)); $TDurationTypes = array('y'=>$langs->trans('Years'), 'm'=>$langs->trans('Month'), 'w'=>$langs->trans('Weeks'), 'd'=>$langs->trans('Days'), 'h'=>$langs->trans('Hours'), 'i'=>$langs->trans('Minutes')); @@ -1247,12 +1247,7 @@ if ($action == 'create') //Reminder print ''.$langs->trans("ReminderTime").''; - print ''; - print ''; - - //Time Type - print ''.$langs->trans("TimeType").''; - print $form->selectTypeDuration('offsetunit', 'i'); + print ' '.$form->selectTypeDuration('offsetunit', 'i'); print ''; //Reminder Type @@ -1731,20 +1726,13 @@ if ($id > 0) print ''; - //Reminder + // Reminder print ''; - //Time Type - print ''; - - //Reminder Type + // Reminder Type $TRemindTypes = array(); - if (!empty($conf->global->AGENDA_REMINDER_EMAIL)) $TRemindTypes['email'] = $langs->trans('EMail'); - if (!empty($conf->global->AGENDA_REMINDER_BROWSER)) $TRemindTypes['browser'] = $langs->trans('BrowserPush'); print ''; @@ -1752,7 +1740,7 @@ if ($id > 0) $hide = ''; if ($actionCommReminder->typeremind == 'browser') $hide = 'style="display:none;"'; - //Mail Model + // Mail Model print ''; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 0173e03730e..a7bcc562a9b 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6259,7 +6259,7 @@ class Form * Note: Do not apply langs->trans function on returned content, content may be entity encoded twice. * * @param string $htmlname Name of html select area. Must start with "multi" if this is a multiselect - * @param array $array Array like array(key => value) or array(key=>array('label'=>..., 'data-...'=>...)) + * @param array $array Array like array(key => value) or array(key=>array('label'=>..., 'data-...'=>..., 'disabled'=>..., 'css'=>...)) * @param string|string[] $id Preselected key or preselected keys for multiselect * @param int|string $show_empty 0 no empty value allowed, 1 or string to add an empty value into list (key is -1 and value is '' or ' ' if 1, key is -1 and value is text if string), <0 to add an empty value with key that is this value. * @param int $key_in_label 1 to show key into label with format "[key] value" @@ -6331,10 +6331,14 @@ class Form foreach ($array as $key => $tmpvalue) { - if (is_array($tmpvalue)) $value = $tmpvalue['label']; - else $value = $tmpvalue; - - $disabled = ''; $style = ''; + if (is_array($tmpvalue)) { + $value = $tmpvalue['label']; + $disabled = empty($tmpvalue['disabled']) ? '' : ' disabled'; + $style = empty($tmpvalue['css']) ? ' class="'.$tmpvalue['css'].'"' : ''; + } else { + $value = $tmpvalue; + $disabled = ''; $style = ''; + } if (!empty($disablebademail)) { if (($disablebademail == 1 && !preg_match('/<.+@.+>/', $value)) diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index 599ee983296..8241b415726 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -356,13 +356,10 @@ function agenda_prepare_head() $head[$h][2] = 'autoactions'; $h++; - if ($conf->global->MAIN_FEATURES_LEVEL > 0) - { - $head[$h][0] = DOL_URL_ROOT."/admin/agenda_reminder.php"; - $head[$h][1] = $langs->trans("Reminders"); - $head[$h][2] = 'reminders'; - $h++; - } + $head[$h][0] = DOL_URL_ROOT."/admin/agenda_reminder.php"; + $head[$h][1] = $langs->trans("Reminders"); + $head[$h][2] = 'reminders'; + $h++; $head[$h][0] = DOL_URL_ROOT."/admin/agenda_xcal.php"; $head[$h][1] = $langs->trans("ExportCal"); diff --git a/htdocs/core/lib/cron.lib.php b/htdocs/core/lib/cron.lib.php index 084b781d3b4..fda122be7bf 100644 --- a/htdocs/core/lib/cron.lib.php +++ b/htdocs/core/lib/cron.lib.php @@ -39,6 +39,11 @@ function cronadmin_prepare_head() $head[$h][2] = 'setup'; $h++; + $head[$h][0] = dol_buildpath('/cron/list.php?mode=modulesetup', 1); + $head[$h][1] = $langs->trans("Module2300Name"); + $head[$h][2] = 'jobs'; + $h++; + complete_head_from_modules($conf, $langs, null, $head, $h, 'cronadmin'); complete_head_from_modules($conf, $langs, null, $head, $h, 'cronadmin', 'remove'); diff --git a/htdocs/core/modules/modAgenda.class.php b/htdocs/core/modules/modAgenda.class.php index 0712adc59fb..559260a77c2 100644 --- a/htdocs/core/modules/modAgenda.class.php +++ b/htdocs/core/modules/modAgenda.class.php @@ -113,7 +113,7 @@ class modAgenda extends DolibarrModules //------------ $datestart = dol_now(); $this->cronjobs = array( - 0=>array('label'=>'SendEmailsReminders', 'jobtype'=>'method', 'class'=>'comm/action/class/actioncomm.class.php', 'objectname'=>'ActionComm', 'method'=>'sendEmailsReminder', 'parameters'=>'', 'comment'=>'SendEMailsReminder', 'frequency'=>10, 'unitfrequency'=>60, 'priority'=>10, 'status'=>1, 'test'=>'$conf->agenda->enabled', 'datestart'=>$datestart), + 0=>array('label'=>'SendEmailsReminders', 'jobtype'=>'method', 'class'=>'comm/action/class/actioncomm.class.php', 'objectname'=>'ActionComm', 'method'=>'sendEmailsReminder', 'parameters'=>'', 'comment'=>'SendEMailsReminder', 'frequency'=>5, 'unitfrequency'=>60, 'priority'=>10, 'status'=>1, 'test'=>'$conf->agenda->enabled', 'datestart'=>$datestart), ); // Permissions diff --git a/htdocs/cron/admin/cron.php b/htdocs/cron/admin/cron.php index fc3ca7c63b6..b0431f40dee 100644 --- a/htdocs/cron/admin/cron.php +++ b/htdocs/cron/admin/cron.php @@ -35,7 +35,7 @@ $langs->loadLangs(array('admin', 'cron')); if (!$user->admin) accessforbidden(); -$actionsave = GETPOST("save"); +$actionsave = GETPOST("save", 'alphanohtml'); // Save parameters if (!empty($actionsave)) @@ -75,6 +75,8 @@ print ''; print dol_get_fiche_head($head, 'setup', $langs->trans("Module2300Name"), -1, 'cron'); +print ''.$langs->trans('CronInfo').'
'; + print "
\n"; print '
'.$langs->trans("ReminderTime").''; - print ''; + print ' '.$form->selectTypeDuration('offsetunit', $actionCommReminder->offsetunit); print '
'.$langs->trans("TimeType").''; - print $form->selectTypeDuration('offsetunit', $actionCommReminder->offsetunit); - print '
'.$langs->trans("ReminderType").''; print $form->selectarray('selectremindertype', $TRemindTypes, $actionCommReminder->typeremind); print '
'.$langs->trans("EMailTemplates").''; print $form->selectModelMail('actioncommsend', 'actioncomm_send', 1); print '
'; @@ -116,7 +118,7 @@ print ''; print '


'; -print $langs->trans("UseMenuModuleToolsToAddCronJobs", dol_buildpath('/cron/list.php?leftmenu=admintools', 1)).'
'; +//print $langs->trans("UseMenuModuleToolsToAddCronJobs", dol_buildpath('/cron/list.php?leftmenu=admintools', 1)).'
'; if (!empty($conf->global->CRON_WARNING_DELAY_HOURS)) print info_admin($langs->trans("WarningCronDelayed", $conf->global->CRON_WARNING_DELAY_HOURS)).'
'; print '
'; diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php index 9c3a2b38f02..a67b7633044 100644 --- a/htdocs/cron/card.php +++ b/htdocs/cron/card.php @@ -42,7 +42,9 @@ $id = GETPOST('id', 'int'); $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $cancel = GETPOST('cancel', 'alpha'); -$backtourl = GETPOST('backtourl', 'alpha'); +$backtopage = GETPOST('backtopage', 'alpha'); +$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); + $securitykey = GETPOST('securitykey', 'alpha'); @@ -62,13 +64,13 @@ if (!empty($id)) if (!empty($cancel)) { - if (!empty($id) && empty($backtourl)) + if (!empty($id) && empty($backtopage)) { $action = ''; } else { - if ($backtourl) + if ($backtopage) { - header("Location: ".$backtourl); + header("Location: ".$backtopage); exit; } else { header("Location: ".DOL_URL_ROOT.'/cron/list.php'); @@ -297,7 +299,7 @@ if (($action == "create") || ($action == "edit")) { print ''; print ''."\n"; - print ''."\n"; + print ''."\n"; if (!empty($object->id)) { print ''."\n"; print ''."\n"; diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index ec1143cd89a..b80f67b25bd 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -55,10 +55,12 @@ $pagenext = $page + 1; if (!$sortfield) $sortfield = 't.status,t.priority'; if (!$sortorder) $sortorder = 'DESC,ASC'; -$search_status = (GETPOSTISSET('search_status') ?GETPOST('search_status', 'int') : GETPOST('status', 'int')); - +$mode = GETPOST('mode', 'aZ09'); //Search criteria +$search_status = (GETPOSTISSET('search_status') ?GETPOST('search_status', 'int') : GETPOST('status', 'int')); $search_label = GETPOST("search_label", 'alpha'); +$search_module_name = GETPOST("search_module_name", 'alpha'); + $securitykey = GETPOST('securitykey', 'alpha'); $diroutputmassaction = $conf->cronjob->dir_output.'/temp/massgeneration/'.$user->id; @@ -211,7 +213,6 @@ $pagetitle = $langs->trans("CronList"); llxHeader('', $pagetitle); - $sql = "SELECT"; $sql .= " t.rowid,"; $sql .= " t.tms,"; @@ -254,8 +255,8 @@ if (is_array($filter) && count($filter) > 0) { } } $sqlwhere = array(); -if (!empty($module_name)) { - $sqlwhere[] = '(t.module_name='.$db->escape($module_name).')'; +if (!empty($search_module_name)) { + $sqlwhere[] = '(t.module_name='.$db->escape($search_module_name).')'; } if (count($sqlwhere) > 0) { $sql .= " WHERE ".implode(' AND ', $sqlwhere); @@ -296,6 +297,8 @@ if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param .= '&co if ($limit > 0 && $limit != $conf->liste_limit) $param .= '&limit='.urlencode($limit); if ($search_status) $param .= '&search_status='.urlencode($search_status); if ($search_label) $param .= '&search_label='.urlencode($search_label); +if ($search_module_name) $param .= '&search_module_name='.urlencode($search_module_name); +if ($mode) $param .= '&mode='.urlencode($mode); if ($optioncss != '') $param .= '&optioncss='.urlencode($optioncss); // Add $param from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; @@ -322,6 +325,13 @@ if ($user->rights->mymodule->delete) $arrayofmassactions['predelete'] = 'selectMassAction('', $arrayofmassactions); +if ($mode == 'modulesetup') { + $linkback = ''.$langs->trans("BackToModuleList").''; + print load_fiche_titre($langs->trans("CronSetup"), $linkback, 'title_setup'); + + // Configuration header + $head = cronadmin_prepare_head(); +} print ''."\n"; if ($optioncss != '') print ''; @@ -332,15 +342,21 @@ print ''; print ''; print ''; print ''; +print ''; // Line with explanation and button new -$newcardbutton = dolGetButtonTitle($langs->trans('New'), $langs->trans('CronCreateJob'), 'fa fa-plus-circle', DOL_URL_ROOT.'/cron/card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $user->rights->cron->create); +$newcardbutton = dolGetButtonTitle($langs->trans('New'), $langs->trans('CronCreateJob'), 'fa fa-plus-circle', DOL_URL_ROOT.'/cron/card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF'].'?mode=modulesetup'), '', $user->rights->cron->create); -print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_setup', 0, $newcardbutton, '', $limit); +if ($mode == 'modulesetup') { + print dol_get_fiche_head($head, 'jobs', $langs->trans("Module2300Name"), -1, 'cron'); + + //print ''.$langs->trans('CronInfo').'
'; +} -print ''.$langs->trans('CronInfo').'
'; +print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, ($mode == 'modulesetup' ? '' : 'title_setup'), 0, $newcardbutton, '', $limit); + $text = $langs->trans("HoursOnThisPageAreOnServerTZ").' '.$stringcurrentdate.'
'; if (!empty($conf->global->CRON_WARNING_DELAY_HOURS)) $text .= $langs->trans("WarningCronDelayed", $conf->global->CRON_WARNING_DELAY_HOURS); @@ -533,11 +549,11 @@ if ($num > 0) print '
'."\n"; diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 5e7ddbd38fc..2333b5fb5f1 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -1625,7 +1625,7 @@ function pdf_getlineupexcltax($object, $i, $outputlangs, $hidedetails = 0) { if (empty($hidedetails) || $hidedetails > 1) { - $subprice = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1 ? $object->lines[$i]->multicurrency_subprice : $object->lines[$i]->subprice); + $subprice = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1 ? $object->lines[$i]->multicurrency_subprice : $object->lines[$i]->subprice); $result .= price($sign * $subprice, 0, $outputlangs); } } diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 72ebb06e311..9484c6a2331 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -289,10 +289,12 @@ class Cronjob extends CommonObject /** * Load object in memory from the database * - * @param int $id Id object - * @return int <0 if KO, >0 if OK + * @param int $id Id object + * @param string $objectname Object name + * @param string $methodname Method name + * @return int <0 if KO, >0 if OK */ - public function fetch($id) + public function fetch($id, $objectname = '', $methodname = '') { $sql = "SELECT"; $sql .= " t.rowid,"; @@ -328,7 +330,13 @@ class Cronjob extends CommonObject $sql .= " t.libname,"; $sql .= " t.test"; $sql .= " FROM ".MAIN_DB_PREFIX."cronjob as t"; - $sql .= " WHERE t.rowid = ".$id; + if ($id > 0) { + $sql .= " WHERE t.rowid = ".$id; + } else { + $sql .= " WHERE t.entity IN(0, ".getEntity('cron').")"; + $sql .= " AND t.objectname = '".$this->db->escape($objectname)."'"; + $sql .= " AND t.methodename = '".$this->db->escape($methodname)."'"; + } dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql = $this->db->query($sql); @@ -1233,7 +1241,7 @@ class Cronjob extends CommonObject if (($this->maxrun > 0 && ($this->nbrun >= $this->maxrun)) || ($this->dateend && ($this->datenextrun > $this->dateend))) { - $this->status = 2; + $this->status = self::STATUS_ARCHIVED; dol_syslog(get_class($this)."::reprogram_jobs Job will be set to archived", LOG_ERR); } } diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index b80f67b25bd..d3f84de6bd2 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -602,11 +602,6 @@ if ($mode == 'modulesetup') { } -print '

'; - - -dol_print_cron_urls(); - llxFooter(); $db->close(); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index bcd038334ba..7534ba46123 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1741,7 +1741,7 @@ AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting men AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification AGENDA_REMINDER_EMAIL=Enable event reminder by emails (remind option/delay can be defined on each event). -AGENDA_REMINDER_EMAIL_NOTE=Note: Module %s must be enabled and correctly setup to have reminder sent at the correct frequency. +AGENDA_REMINDER_EMAIL_NOTE=The frequency of the task %s must be enough to be sure that the remind are sent at the correct moment. AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view ##### Clicktodial ##### ClickToDialSetup=Click To Dial module setup diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang index 753b37da438..9bf918a73a3 100644 --- a/htdocs/langs/en_US/cron.lang +++ b/htdocs/langs/en_US/cron.lang @@ -84,3 +84,4 @@ MakeLocalDatabaseDumpShort=Local database backup MakeLocalDatabaseDump=Create a local database dump. Parameters are: compression ('gz' or 'bz' or 'none'), backup type ('mysql', 'pgsql', 'auto'), 1, 'auto' or filename to build, number of backup files to keep WarningCronDelayed=Attention, for performance purpose, whatever is next date of execution of enabled jobs, your jobs may be delayed to a maximum of %s hours, before being run. DATAPOLICYJob=Data cleaner and anonymizer +JobXMustBeEnabled=Job %s must be enabled \ No newline at end of file From bf94ce6aadced0ab55fb8f67448da75c80925b83 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 21 Nov 2020 16:49:54 +0100 Subject: [PATCH 18/38] Fix warnings --- .../class/accountingaccount.class.php | 13 +++++-------- htdocs/admin/system/dolibarr.php | 2 +- htdocs/comm/action/class/actioncomm.class.php | 16 +++++++++------- htdocs/core/lib/date.lib.php | 2 +- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index ebf397c2dfd..af8d26bb374 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -460,7 +460,7 @@ class AccountingAccount extends CommonObject $result = ''; - $url = ''; + $url = ''; $labelurl = ''; if (empty($option) || $option == 'ledger') { $url = DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?search_accountancy_code_start='.urlencode($this->account_number).'&search_accountancy_code_end='.urlencode($this->account_number); $labelurl = $langs->trans("ShowAccountingAccountInLedger"); @@ -617,16 +617,13 @@ class AccountingAccount extends CommonObject // phpcs:enable $this->db->begin(); - if ($mode == 0) - { - $fieldtouse = 'active'; - } elseif ($mode == 1) - { + $fieldtouse = 'active'; + if ($mode == 1) { $fieldtouse = 'reconcilable'; } - $sql = "UPDATE ".MAIN_DB_PREFIX."accounting_account "; - $sql .= "SET ".$fieldtouse." = '1'"; + $sql = "UPDATE ".MAIN_DB_PREFIX."accounting_account"; + $sql .= " SET ".$fieldtouse." = '1'"; $sql .= " WHERE rowid = ".$this->db->escape($id); dol_syslog(get_class($this)."::account_activate ".$fieldtouse." sql=".$sql, LOG_DEBUG); diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php index 6bae9666ee9..a9726bd7baf 100644 --- a/htdocs/admin/system/dolibarr.php +++ b/htdocs/admin/system/dolibarr.php @@ -225,7 +225,7 @@ print ''."\n"; } +$job = new Cronjob($db); +$job->fetch(0, 'ActionComm', 'sendEmailsReminder'); + // AGENDA REMINDER EMAIL print ''."\n"; -print ''."\n"; +print ''."\n"; print ''."\n"; print ''; - } + print ''; print "\n"; @@ -796,7 +793,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t { print ''; } - if ($addordertick) print ''; + print ''; print ''; } diff --git a/htdocs/core/tpl/ajaxrow.tpl.php b/htdocs/core/tpl/ajaxrow.tpl.php index dea5ce60d6e..25d5f6f3526 100644 --- a/htdocs/core/tpl/ajaxrow.tpl.php +++ b/htdocs/core/tpl/ajaxrow.tpl.php @@ -44,7 +44,8 @@ $forcereloadpage = empty($conf->global->MAIN_FORCE_RELOAD_PAGE) ? 0 : 1; $tagidfortablednd = (empty($tagidfortablednd) ? 'tablelines' : $tagidfortablednd); $filepath = (empty($filepath) ? '' : $filepath); -if (GETPOST('action', 'aZ09') != 'editline' && $nboflines > 1) { ?> + +if (GETPOST('action', 'aZ09') != 'editline' && $nboflines > 1 && $conf->browser->layout != 'phone') { ?> '; } - if ($conf->multicurrency->enabled) { + if (!empty($conf->multicurrency->enabled)) { // Currency print ''; print ''; - if ($conf->multicurrency->enabled) { + if (!empty($conf->multicurrency->enabled)) { // Price for the quantity in currency print ''; } // Currency - if ($conf->multicurrency->enabled) { + if (!empty($conf->multicurrency->enabled)) { print ''; diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 74bbf1afa7e..914e487b594 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -507,7 +507,7 @@ class SupplierProposal extends CommonObject $localtaxes_type = getLocalTaxesFromRate($txtva, 0, $this->thirdparty, $mysoc); $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. - if ($conf->multicurrency->enabled && $pu_ht_devise > 0) { + if (!empty($conf->multicurrency->enabled) && $pu_ht_devise > 0) { $pu = 0; } @@ -696,7 +696,7 @@ class SupplierProposal extends CommonObject $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. } - if ($conf->multicurrency->enabled && $pu_ht_devise > 0) { + if (!empty($conf->multicurrency->enabled) && $pu_ht_devise > 0) { $pu = 0; } From f2cd2570b9d267c55c83c3a716f356ba5ef465f1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Nov 2020 12:03:44 +0100 Subject: [PATCH 30/38] Fix link --- htdocs/compta/stats/index.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/stats/index.php b/htdocs/compta/stats/index.php index 49c0ff19d70..1a1de43709d 100644 --- a/htdocs/compta/stats/index.php +++ b/htdocs/compta/stats/index.php @@ -108,6 +108,10 @@ if (!empty($conf->accounting->enabled)) $result = restrictedArea($user, 'account * View */ +$param = ''; +if ($date_startday && $date_startmonth && $date_startyear) $param .= '&date_startday='.$date_startday.'&date_startmonth='.$date_startmonth.'&date_startyear='.$date_startyear; +if ($date_endday && $date_endmonth && $date_endyear) $param .= '&date_endday='.$date_endday.'&date_endmonth='.$date_endmonth.'&date_endyear='.$date_endyear; + llxHeader(); $form = new Form($db); @@ -118,7 +122,7 @@ if ($modecompta == "CREANCES-DETTES") $name = $langs->trans("Turnover"); $calcmode = $langs->trans("CalcModeDebt"); //$calcmode.='
('.$langs->trans("SeeReportInInputOutputMode",'','').')'; - $calcmode .= '
('.$langs->trans("SeeReportInBookkeepingMode", '', '').')'; + $calcmode .= '
('.$langs->trans("SeeReportInBookkeepingMode", '', '').')'; $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); $description = $langs->trans("RulesCADue"); @@ -142,7 +146,7 @@ if ($modecompta == "CREANCES-DETTES") { $name = $langs->trans("Turnover"); $calcmode = $langs->trans("CalcModeBookkeeping"); - $calcmode .= '
('.$langs->trans("SeeReportInDueDebtMode", '', '').')'; + $calcmode .= '
('.$langs->trans("SeeReportInDueDebtMode", '', '').')'; //$calcmode.='
('.$langs->trans("SeeReportInInputOutputMode",'','').')'; $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); @@ -305,6 +309,11 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) if ($mois > 12) {$mois_modulo = $mois - 12; } // ajout if ($year_start == $year_end) { + // If we show only one year or one month, we do not show month before the selected month + if ($mois < $date_startmonth && $year_start <= $date_startyear) { + continue; + } + // If we show only one year or one month, we do not show month after the selected month if ($mois > $date_endmonth && $year_end >= $date_endyear) { break; } From edb462cca2adc97a46e1f6e81bc8ae7412a8afb1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Nov 2020 12:32:08 +0100 Subject: [PATCH 31/38] Trans --- htdocs/langs/en_US/main.lang | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 850d87ff883..b17c3d8b8c5 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -266,8 +266,10 @@ DateStart=Start date DateEnd=End date DateCreation=Creation date DateCreationShort=Creat. date +IPCreation=Creation IP DateModification=Modification date DateModificationShort=Modif. date +IPModification=Modification IP DateLastModification=Latest modification date DateValidation=Validation date DateClosing=Closing date From 1fc01215521ccf61bab59ebd4ab44846da88ec02 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Nov 2020 13:12:41 +0100 Subject: [PATCH 32/38] css --- htdocs/theme/eldy/theme_vars.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index 293dc6a2c39..850c39b6567 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -81,7 +81,7 @@ $toolTipFontColor = '#333'; $textSuccess = '#28a745'; $colorblind_deuteranopes_textSuccess = '#37de5d'; $textWarning = '#bc9526'; // See $badgeWarning -$textDanger = '#9f4705'; // See $badgeDanger +$textDanger = '#af4705'; // See $badgeDanger $colorblind_deuteranopes_textWarning = $textWarning; // currently not tested with a color blind people so use default color @@ -91,7 +91,7 @@ $badgeSecondary = '#aaaabb'; $badgeInfo = '#aaaabb'; $badgeSuccess = '#55a580'; $badgeWarning = '#bc9526'; // See $textWarning bc9526 -$badgeDanger = '#9f4705'; // See $textDanger +$badgeDanger = '#af4705'; // See $textDanger $badgeDark = '#343a40'; $badgeLight = '#f8f9fa'; From f6d6efa288f09f76da60742e96282741d6237ca3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Nov 2020 13:23:56 +0100 Subject: [PATCH 33/38] CSS --- htdocs/contact/card.php | 3 +-- htdocs/core/class/html.formactions.class.php | 22 ++++++++++++-------- htdocs/theme/eldy/global.inc.php | 6 ++++++ htdocs/theme/md/style.css.php | 6 ++++++ 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 7a649ca2596..495271e339b 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -887,8 +887,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) print ''; print ""; - } elseif ($action == 'edit' && !empty($id)) - { + } elseif ($action == 'edit' && !empty($id)) { /* * Fiche en mode edition */ diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 54406b1075b..843c9ec759f 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -233,13 +233,15 @@ class FormActions if ($max && $cursorevent >= $max) break; $ref = $actioncomm->getNomUrl(1, -1); - $label = $actioncomm->getNomUrl(0, 38); + $label = $actioncomm->getNomUrl(0, 36); print '
'; + // Ref print ''; + // Onwer - print ''; + // Label print ''; + // Date print ''; echo ''; From 7d1b84d482c2753ffca80026b36c586e9cec95d9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Nov 2020 22:58:14 +0100 Subject: [PATCH 36/38] Fix warning --- htdocs/core/class/translate.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index dc8f969540f..3c4c3ea5d36 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -738,7 +738,7 @@ class Translate */ public function transcountrynoentities($str, $countrycode) { - if ($this->tab_translate["$str$countrycode"]) return $this->transnoentities("$str$countrycode"); + if (! empty($this->tab_translate["$str$countrycode"])) return $this->transnoentities("$str$countrycode"); else return $this->transnoentities($str); } From 2f6f242d996fad5cb09c36902ef73e5833c7437e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Nov 2020 12:29:38 +0100 Subject: [PATCH 37/38] CSS --- htdocs/adherents/class/subscription.class.php | 15 ++++++++++++--- htdocs/adherents/index.php | 8 ++++---- htdocs/adherents/subscription/list.php | 2 ++ htdocs/admin/ihm.php | 3 --- htdocs/admin/modules.php | 8 ++++---- htdocs/admin/translation.php | 5 +---- htdocs/commande/class/commande.class.php | 3 +++ htdocs/core/class/commonobject.class.php | 2 +- htdocs/main.inc.php | 1 + htdocs/product/list.php | 2 +- htdocs/societe/card.php | 7 +++---- htdocs/theme/eldy/btn.inc.php | 6 ++++-- htdocs/theme/eldy/global.inc.php | 17 ++++++++++++++--- htdocs/theme/eldy/theme_vars.inc.php | 8 ++++---- 14 files changed, 54 insertions(+), 33 deletions(-) diff --git a/htdocs/adherents/class/subscription.class.php b/htdocs/adherents/class/subscription.class.php index 2ea1c310d5a..aebd48963d2 100644 --- a/htdocs/adherents/class/subscription.class.php +++ b/htdocs/adherents/class/subscription.class.php @@ -384,7 +384,18 @@ class Subscription extends CommonObject $result = ''; $langs->load("members"); - $label = $langs->trans("ShowSubscription").': '.$this->ref; + + $label = img_picto('', $this->picto).' '.$langs->trans("Subscription").''; + /*if (isset($this->statut)) { + $label .= ' '.$this->getLibStatut(5); + }*/ + $label .= '
'.$langs->trans('Ref').': '.$this->ref; + if (!empty($this->dateh)) { + $label .= '
'.$langs->trans('DateStart').': '.dol_print_date($this->dateh, 'day'); + } + if (!empty($this->datef)) { + $label .= '
'.$langs->trans('DateEnd').': '.dol_print_date($this->datef, 'day'); + } $url = DOL_URL_ROOT.'/adherents/subscription/card.php?rowid='.$this->id; @@ -398,8 +409,6 @@ class Subscription extends CommonObject $linkstart = ''; $linkend = ''; - $picto = 'payment'; - $result .= $linkstart; if ($withpicto) $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); if ($withpicto != 2) $result .= $this->ref; diff --git a/htdocs/adherents/index.php b/htdocs/adherents/index.php index 35b0fcfb478..b2ef8e8854b 100644 --- a/htdocs/adherents/index.php +++ b/htdocs/adherents/index.php @@ -181,8 +181,8 @@ if ($conf->use_javascript_ajax) { } $total = $SommeA + $SommeB + $SommeC + $SommeD; $dataseries = array(); - $dataseries[] = array($langs->transnoentitiesnoconv("MenuMembersNotUpToDate"), round($SommeB)); - $dataseries[] = array($langs->transnoentitiesnoconv("MenuMembersUpToDate"), round($SommeC)); + $dataseries[] = array($langs->transnoentitiesnoconv("OutOfDate"), round($SommeB)); + $dataseries[] = array($langs->transnoentitiesnoconv("UpToDate"), round($SommeC)); $dataseries[] = array($langs->transnoentitiesnoconv("MembersStatusResiliated"), round($SommeD)); $dataseries[] = array($langs->transnoentitiesnoconv("MembersStatusToValid"), round($SommeA)); @@ -422,8 +422,8 @@ print '
'; - $backtourl = urlencode($_SERVER["PHP_SELF"].'?'.$param.($sortfield ? '&sortfield='.$sortfield : '').($sortorder ? '&sortorder='.$sortorder : '')); + $backtopage = urlencode($_SERVER["PHP_SELF"].'?'.$param.($sortfield ? '&sortfield='.$sortfield : '').($sortorder ? '&sortorder='.$sortorder : '')); if ($user->rights->cron->create) { print 'trans('Edit'))."\">".img_picto($langs->trans('Edit'), 'edit')."  "; + print "&backtopage=".$backtopage."\" title=\"".dol_escape_htmltag($langs->trans('Edit'))."\">".img_picto($langs->trans('Edit'), 'edit')."  "; } if ($user->rights->cron->delete) { @@ -581,6 +597,10 @@ print ''; print ''; +if ($mode == 'modulesetup') { + print dol_get_fiche_end(); +} + print '

'; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index dd8e6fe6538..bcd038334ba 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1738,9 +1738,10 @@ AGENDA_USE_EVENT_TYPE_DEFAULT=Automatically set this default value for type of e AGENDA_DEFAULT_FILTER_TYPE=Automatically set this type of event in search filter of agenda view AGENDA_DEFAULT_FILTER_STATUS=Automatically set this status for events in search filter of agenda view AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda -AGENDA_REMINDER_EMAIL=Enable event reminder by emails (remind option/delay can be defined on each event). Note: Module %s must be enabled and correctly setup to have reminder sent at the correct frequency. -AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (when event date is reached, each user is able to refuse this from the browser confirmation question) +AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification +AGENDA_REMINDER_EMAIL=Enable event reminder by emails (remind option/delay can be defined on each event). +AGENDA_REMINDER_EMAIL_NOTE=Note: Module %s must be enabled and correctly setup to have reminder sent at the correct frequency. AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view ##### Clicktodial ##### ClickToDialSetup=Click To Dial module setup diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index 479155fb2a9..8971e80a8f8 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -166,4 +166,4 @@ TimeType=Duration type ReminderType=Callback type AddReminder=Create an automatic reminder notification for this event ErrorReminderActionCommCreation=Error creating the reminder notification for this event -BrowserPush=Browser Notification \ No newline at end of file +BrowserPush=Browser Popup Notification \ No newline at end of file diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang index 9921f21851d..753b37da438 100644 --- a/htdocs/langs/en_US/cron.lang +++ b/htdocs/langs/en_US/cron.lang @@ -7,8 +7,8 @@ Permission23103 = Delete Scheduled job Permission23104 = Execute Scheduled job # Admin CronSetup=Scheduled job management setup -URLToLaunchCronJobs=URL to check and launch qualified cron jobs -OrToLaunchASpecificJob=Or to check and launch a specific job +URLToLaunchCronJobs=URL to check and launch qualified cron jobs from a browser +OrToLaunchASpecificJob=Or to check and launch a specific job from a browser KeyForCronAccess=Security key for URL to launch cron jobs FileToLaunchCronJobs=Command line to check and launch qualified cron jobs CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes From 95b79094dfb0fd10c130f5cb2caf028572288108 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 21 Nov 2020 16:27:50 +0100 Subject: [PATCH 17/38] Fix warning. Module cron is more clear. --- htdocs/admin/agenda_reminder.php | 15 ++++++++++++--- htdocs/core/lib/pdf.lib.php | 2 +- htdocs/cron/class/cronjob.class.php | 18 +++++++++++++----- htdocs/cron/list.php | 5 ----- htdocs/langs/en_US/admin.lang | 2 +- htdocs/langs/en_US/cron.lang | 1 + 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/htdocs/admin/agenda_reminder.php b/htdocs/admin/agenda_reminder.php index 7dfbeff82f6..3572ad47d63 100644 --- a/htdocs/admin/agenda_reminder.php +++ b/htdocs/admin/agenda_reminder.php @@ -25,6 +25,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; +require_once DOL_DOCUMENT_ROOT.'/cron/class/cronjob.class.php'; if (!$user->admin) accessforbidden(); @@ -218,10 +219,18 @@ if (empty($conf->cron->enabled)) { if (empty($conf->global->AGENDA_REMINDER_EMAIL)) { print ''.img_picto($langs->trans('Disabled'), 'switch_off').''; } else { - print ''.img_picto($langs->trans('Enabled'), 'switch_on').''; // Get the max frequency of reminder - - print '
'.$langs->trans("AGENDA_REMINDER_EMAIL_NOTE", $langs->transnoentitiesnoconv("Module2300Name")).''; + // TODO Read frequency of the job sendEmailsReminder and if job is enabled + $job = new Cronjob($db); + $job->fetch(0, 'ActionComm', 'sendEmailsReminder'); + if ($job->id > 0) { + if ($job->status != $job::STATUS_ENABLED) { + print ''.$langs->trans("JobXMustBeEnabled", $langs->transnoentitiesnoconv("sendEmailsReminder")).''; + } else { + print ''.img_picto($langs->trans('Enabled'), 'switch_on').''; + print '
'.$langs->trans("AGENDA_REMINDER_EMAIL_NOTE", $langs->transnoentitiesnoconv("sendEmailsReminder")).''; + } + } } } print '
'.$langs->trans("CurrentTimeZone").''; / $a = getServerTimeZoneInt('now'); $b = getServerTimeZoneInt('winter'); $c = getServerTimeZoneInt('summer'); -$daylight = (is_numeric($c) && is_numeric($b)) ?round($c - $b) : 'unknown'; +$daylight = round($c - $b); //print $a." ".$b." ".$c." ".$daylight; $val = ($a >= 0 ? '+' : '').$a; $val .= ' ('.($a == 'unknown' ? 'unknown' : ($a >= 0 ? '+' : '').($a * 3600)).')'; diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 59d5a6b6691..95f2a3f3494 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -1206,16 +1206,17 @@ class ActionComm extends CommonObject * Load indicators for dashboard (this->nbtodo and this->nbtodolate) * * @param User $user Objet user - * @param int $load_state_board Charge indicateurs this->nb de tableau de bord - * @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK + * @param int $load_state_board Load indicator array this->nb + * @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK */ public function load_board($user, $load_state_board = 0) { // phpcs:enable global $conf, $langs; - if (empty($load_state_board)) $sql = "SELECT a.id, a.datep as dp"; - else { + if (empty($load_state_board)) { + $sql = "SELECT a.id, a.datep as dp"; + } else { $this->nb = array(); $sql = "SELECT count(a.id) as nb"; } @@ -1243,13 +1244,14 @@ class ActionComm extends CommonObject $response->img = img_object('', "action", 'class="inline-block valigntextmiddle"'); } // This assignment in condition is not a bug. It allows walking the results. - while ($obj = $this->db->fetch_object($resql)) - { + while ($obj = $this->db->fetch_object($resql)) { if (empty($load_state_board)) { $response->nbtodo++; $agenda_static->datep = $this->db->jdate($obj->dp); if ($agenda_static->hasDelay()) $response->nbtodolate++; - } else $this->nb["actionscomm"] = $obj->nb; + } else { + $this->nb["actionscomm"] = $obj->nb; + } } $this->db->free($resql); diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index cbfaa883da7..1e7f9b299c6 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -78,7 +78,7 @@ function getServerTimeZoneString() * Return server timezone int. * * @param string $refgmtdate Reference period for timezone (timezone differs on winter and summer. May be 'now', 'winter' or 'summer') - * @return int An offset in hour (+1 for Europe/Paris on winter and +2 for Europe/Paris on summer) + * @return float An offset in hour (+1 for Europe/Paris on winter and +2 for Europe/Paris on summer). Note some countries use half and even quarter hours. */ function getServerTimeZoneInt($refgmtdate = 'now') { From f39ad2359a91968abc931d30b58e8696cfa7b878 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 21 Nov 2020 17:01:17 +0100 Subject: [PATCH 19/38] Debug --- htdocs/admin/agenda_reminder.php | 19 ++++++++++++++----- htdocs/langs/en_US/admin.lang | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/htdocs/admin/agenda_reminder.php b/htdocs/admin/agenda_reminder.php index 3572ad47d63..7558d0097de 100644 --- a/htdocs/admin/agenda_reminder.php +++ b/htdocs/admin/agenda_reminder.php @@ -207,9 +207,22 @@ if (empty($conf->global->AGENDA_REMINDER_BROWSER)) { print '
'.$langs->trans('AGENDA_REMINDER_EMAIL', $langs->transnoentities("Module2300Name")).''.$langs->trans('AGENDA_REMINDER_EMAIL', $langs->transnoentities("Module2300Name")); +if (!empty($conf->cron->enabled)) { + if (!empty($conf->global->AGENDA_REMINDER_EMAIL)) { + if ($job->id > 0) { + if ($job->status == $job::STATUS_ENABLED) { + print '
'.$langs->trans("AGENDA_REMINDER_EMAIL_NOTE", $langs->transnoentitiesnoconv("sendEmailsReminder")).''; + } + } + } +} +print '
 '."\n"; @@ -220,15 +233,11 @@ if (empty($conf->cron->enabled)) { print ''.img_picto($langs->trans('Disabled'), 'switch_off').''; } else { // Get the max frequency of reminder - // TODO Read frequency of the job sendEmailsReminder and if job is enabled - $job = new Cronjob($db); - $job->fetch(0, 'ActionComm', 'sendEmailsReminder'); if ($job->id > 0) { if ($job->status != $job::STATUS_ENABLED) { print ''.$langs->trans("JobXMustBeEnabled", $langs->transnoentitiesnoconv("sendEmailsReminder")).''; } else { print ''.img_picto($langs->trans('Enabled'), 'switch_on').''; - print '
'.$langs->trans("AGENDA_REMINDER_EMAIL_NOTE", $langs->transnoentitiesnoconv("sendEmailsReminder")).''; } } } diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 7534ba46123..94d1d1b2c47 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1741,7 +1741,7 @@ AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting men AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification AGENDA_REMINDER_EMAIL=Enable event reminder by emails (remind option/delay can be defined on each event). -AGENDA_REMINDER_EMAIL_NOTE=The frequency of the task %s must be enough to be sure that the remind are sent at the correct moment. +AGENDA_REMINDER_EMAIL_NOTE=Note: The frequency of the task %s must be enough to be sure that the remind are sent at the correct moment. AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view ##### Clicktodial ##### ClickToDialSetup=Click To Dial module setup From 9004be1df299f8898b6f2eb720899431182fb43d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 21 Nov 2020 17:42:07 +0100 Subject: [PATCH 20/38] Debug feature to send remind by email --- htdocs/comm/action/class/actioncomm.class.php | 62 +++++++++++++------ .../action/class/actioncommreminder.class.php | 49 +++++++-------- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/lib/functions.lib.php | 2 +- .../install/mysql/migration/12.0.0-13.0.0.sql | 1 + .../mysql/tables/llx_actioncomm_reminder.sql | 1 + 6 files changed, 69 insertions(+), 48 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 95f2a3f3494..c0885e4311a 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -2087,6 +2087,7 @@ class ActionComm extends CommonObject if ($res > 0) { // PREPARE EMAIL + $errormesg = ''; // Make substitution in email content $substitutionarray = getCommonSubstitutionArray($langs, 0, '', $this); @@ -2102,43 +2103,65 @@ class ActionComm extends CommonObject // Recipient $recipient = new User($this->db); $res = $recipient->fetch($actionCommReminder->fk_user); - if ($res > 0 && !empty($recipient->email)) $to = $recipient->email; - else { - $errorsMsg[] = "Failed to load recipient"; + if ($res > 0) { + if (!empty($recipient->email)) { + $to = $recipient->email; + } else { + $errormesg = "Failed to send remind to user id=".$actionCommReminder->fk_user.". No email defined for user."; + $error++; + } + } else { + $errormesg = "Failed to load recipient with user id=".$actionCommReminder->fk_user; $error++; } // Sender $from = $conf->global->MAIN_MAIL_EMAIL_FROM; if (empty($from)) { - $errorsMsg[] = "Failed to load recipient"; + $errormesg = "Failed to get sender into global setup MAIN_MAIL_EMAIL_FROM"; $error++; } - // Errors Recipient - $errors_to = $conf->global->MAIN_MAIL_ERRORS_TO; + if (!$error) { + // Errors Recipient + $errors_to = $conf->global->MAIN_MAIL_ERRORS_TO; - // Mail Creation - $cMailFile = new CMailFile($sendTopic, $to, $from, $sendContent, array(), array(), array(), '', "", 0, 1, $errors_to, '', '', '', '', ''); + // Mail Creation + $cMailFile = new CMailFile($sendTopic, $to, $from, $sendContent, array(), array(), array(), '', "", 0, 1, $errors_to, '', '', '', '', ''); - // Sending Mail - if ($cMailFile->sendfile()) - { + // Sending Mail + if ($cMailFile->sendfile()) { + $nbMailSend++; + } else { + $errormesg = $cMailFile->error.' : '.$to; + $error++; + } + } + + if (!$error) { $actionCommReminder->status = $actionCommReminder::STATUS_DONE; + $res = $actionCommReminder->update($user); - if ($res < 0) - { - $errorsMsg[] = "Failed to update status of ActionComm Reminder"; + if ($res < 0) { + $errorsMsg[] = "Failed to update status to done of ActionComm Reminder"; + $error++; + break; // This is to avoid to have this error on all the selected email. If we fails here for one record, it may fails for others. We must solve first. + } + } else { + $actionCommReminder->status = $actionCommReminder::STATUS_ERROR; + $actionCommReminder->lasterror = dol_trunc($errormesg, 128, 'right', 'UTF-8', 1); + + $res = $actionCommReminder->update($user); + if ($res < 0) { + $errorsMsg[] = "Failed to update status to error of ActionComm Reminder"; $error++; break; // This is to avoid to have this error on all the selected email. If we fails here for one record, it may fails for others. We must solve first. } else { - $nbMailSend++; + $errorsMsg[] = $errormesg; } - } else { - $errorsMsg[] = $cMailFile->error.' : '.$to; - $error++; } } else { + $errorsMsg[] = 'Failed to fetch record actioncomm with ID = '.$actionCommReminder->fk_actioncomm; $error++; } } @@ -2152,6 +2175,7 @@ class ActionComm extends CommonObject // Delete also very old past events (we do not keep more than 1 month record in past) $sql = "DELETE FROM ".MAIN_DB_PREFIX."actioncomm_reminder"; $sql .= " WHERE dateremind < '".$this->db->idate($now - (3600 * 24 * 32))."'"; + $sql .= " AND status = ".$actionCommReminder::STATUS_DONE; $resql = $this->db->query($sql); if (!$resql) { @@ -2166,7 +2190,7 @@ class ActionComm extends CommonObject return 0; } else { - $this->db->rollback(); + $this->db->commit(); // We commit also on error, to have the error message recorded. $this->error = 'Nb of emails sent : '.$nbMailSend.', '.(!empty($errorsMsg)) ? join(', ', $errorsMsg) : $error; return $error; } diff --git a/htdocs/comm/action/class/actioncommreminder.class.php b/htdocs/comm/action/class/actioncommreminder.class.php index 09c9a25ca1a..0f43dae13f8 100644 --- a/htdocs/comm/action/class/actioncommreminder.class.php +++ b/htdocs/comm/action/class/actioncommreminder.class.php @@ -52,6 +52,7 @@ class ActionCommReminder extends CommonObject const STATUS_TODO = 0; const STATUS_DONE = 1; + const STATUS_ERROR = -1; /** @@ -84,8 +85,9 @@ class ActionCommReminder extends CommonObject 'offsetvalue' => array('type'=>'integer', 'label'=>'OffsetValue', 'visible'=>1, 'enabled'=>1, 'position'=>56, 'notnull'=>1,), 'offsetunit' => array('type'=>'varchar(1)', 'label'=>'OffsetUnit', 'visible'=>1, 'enabled'=>1, 'position'=>57, 'notnull'=>1, 'comment'=>"y, m, d, w, h, i",), 'status' => array('type'=>'integer', 'label'=>'Status', 'visible'=>1, 'enabled'=>1, 'position'=>58, 'notnull'=>1, 'default'=>0, 'index'=>0, 'arrayofkeyval'=>array('0'=>'ToDo', '1'=>'Done')), - 'fk_actioncomm' => array('type'=>'integer', 'label'=>'Project', 'visible'=>1, 'enabled'=>1, 'position'=>59, 'notnull'=>1, 'index'=>1,), - 'fk_email_template' => array('type'=>'integer', 'label'=>'EmailTemplate', 'visible'=>1, 'enabled'=>1, 'position'=>60, 'notnull'=>0), + 'lasterror' => array('type'=>'varchar(128)', 'label'=>'LastError', 'visible'=>-1, 'enabled'=>1, 'position'=>59, 'index'=>0), + 'fk_actioncomm' => array('type'=>'integer', 'label'=>'Project', 'visible'=>1, 'enabled'=>1, 'position'=>70, 'notnull'=>1, 'index'=>1,), + 'fk_email_template' => array('type'=>'integer', 'label'=>'EmailTemplate', 'visible'=>1, 'enabled'=>1, 'position'=>80, 'notnull'=>0), ); /** @@ -114,6 +116,11 @@ class ActionCommReminder extends CommonObject */ public $status; + /** + * @var string Last error message + */ + public $lasterror; + /** * @var int Project */ @@ -217,31 +224,19 @@ class ActionCommReminder extends CommonObject // phpcs:enable global $langs; - if ($mode == 0 || $mode == 1) - { - if ($status == 1) return $langs->trans('Done'); - elseif ($status == 0) return $langs->trans('ToDo'); - } elseif ($mode == 2) - { - if ($status == 1) return img_picto($langs->trans('Done'), 'statut4').' '.$langs->trans('Done'); - elseif ($status == 0) return img_picto($langs->trans('ToDo'), 'statut5').' '.$langs->trans('ToDo'); - } elseif ($mode == 3) - { - if ($status == 1) return img_picto($langs->trans('Done'), 'statut4'); - elseif ($status == 0) return img_picto($langs->trans('ToDo'), 'statut5'); - } elseif ($mode == 4) - { - if ($status == 1) return img_picto($langs->trans('Done'), 'statut4').' '.$langs->trans('Done'); - elseif ($status == 0) return img_picto($langs->trans('ToDo'), 'statut5').' '.$langs->trans('ToDo'); - } elseif ($mode == 5) - { - if ($status == 1) return $langs->trans('Done').' '.img_picto($langs->trans('Done'), 'statut4'); - elseif ($status == 0) return $langs->trans('ToDo').' '.img_picto($langs->trans('ToDo'), 'statut5'); - } elseif ($mode == 6) - { - if ($status == 1) return $langs->trans('Done').' '.img_picto($langs->trans('Done'), 'statut4'); - elseif ($status == 0) return $langs->trans('ToDo').' '.img_picto($langs->trans('ToDo'), 'statut5'); - } + $labelStatus = $langs->trans('ToDo'); + if ($status == 1) $labelStatus = $langs->trans('Done'); + elseif ($status == -1) $labelStatus = $langs->trans('Error'); + + $labelStatusShort = $langs->trans('ToDo'); + if ($status == 1) $labelStatus = $langs->trans('Done'); + elseif ($status == -1) $labelStatus = $langs->trans('Error'); + + $statusType = 'status5'; + if ($status == 1) $statusType = 'status4'; + elseif ($status == -1) $statusType = 'status8'; + + return dolGetStatus($labelStatus, $labelStatusShort, '', $statusType, $mode); } /** diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7c3b368ae14..55ab524daec 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -7907,7 +7907,7 @@ abstract class CommonObject }*/ } - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET '.implode(',', $tmp).' WHERE rowid='.$this->id; + $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET '.implode(', ', $tmp).' WHERE rowid='.$this->id; $this->db->begin(); if (!$error) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 74f77c28558..13a3a408abb 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3096,7 +3096,7 @@ function dol_substr($string, $start, $length, $stringencoding = '', $trunconbyte * * @param string $string String to truncate * @param int $size Max string size visible (excluding ...). 0 for no limit. WARNING: Final string size can have 3 more chars (if we added ..., or if size was max+1 or max+2 or max+3 so it does not worse to replace with ...) - * @param string $trunc Where to trunc: right, left, middle (size must be a 2 power), wrap + * @param string $trunc Where to trunc: 'right', 'left', 'middle' (size must be a 2 power), 'wrap' * @param string $stringencoding Tell what is source string encoding * @param int $nodot Truncation do not add ... after truncation. So it's an exact truncation. * @param int $display Trunc is used to display data and can be changed for small screen. TODO Remove this param (must be dealt with CSS) diff --git a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql index 9ef94188171..d4cfaddb4eb 100644 --- a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql +++ b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql @@ -356,6 +356,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value ALTER TABLE llx_actioncomm_reminder ADD COLUMN entity integer NOT NULL DEFAULT 1; ALTER TABLE llx_actioncomm_reminder ADD COLUMN fk_actioncomm integer NOT NULL; ALTER TABLE llx_actioncomm_reminder ADD COLUMN fk_email_template integer; +ALTER TABLE llx_actioncomm_reminder ADD COLUMN lasterror varchar(128) NULL; ALTER TABLE llx_actioncomm_reminder DROP INDEX uk_actioncomm_reminder_unique; ALTER TABLE llx_actioncomm_reminder ADD UNIQUE uk_actioncomm_reminder_unique (fk_user, typeremind, offsetvalue, offsetunit, fk_actioncomm); diff --git a/htdocs/install/mysql/tables/llx_actioncomm_reminder.sql b/htdocs/install/mysql/tables/llx_actioncomm_reminder.sql index 78dd00d6ea5..bc09c2e80dc 100644 --- a/htdocs/install/mysql/tables/llx_actioncomm_reminder.sql +++ b/htdocs/install/mysql/tables/llx_actioncomm_reminder.sql @@ -23,6 +23,7 @@ CREATE TABLE llx_actioncomm_reminder( offsetvalue integer NOT NULL, offsetunit varchar(1) NOT NULL, status integer NOT NULL DEFAULT 0, + lasterror varchar(128) NULL, entity integer NOT NULL DEFAULT 1, fk_actioncomm integer NOT NULL, fk_email_template integer From 73a3a033986b5ca8dabf36c5cad8da343590e8a0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 21 Nov 2020 23:36:20 +0100 Subject: [PATCH 21/38] Fix for smartphone --- htdocs/core/lib/project.lib.php | 7 ++----- htdocs/core/tpl/ajaxrow.tpl.php | 3 ++- htdocs/projet/class/task.class.php | 4 +++- htdocs/projet/tasks.php | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 0f0b2474d51..fe9ae98ec61 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -678,10 +678,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t print $hookmanager->resPrint; // Tick to drag and drop - if ($addordertick) - { - print '
 
'.$langs->trans("Currency").''; @@ -927,10 +927,10 @@ END; if (!empty($arrayfields['pfp.quantity']['checked'])) print_liste_field_titre("QtyMin", $_SERVER["PHP_SELF"], "pfp.quantity", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre("PriceQtyMinHT", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'right '); - if ($conf->multicurrency->enabled) print_liste_field_titre("PriceQtyMinHTCurrency", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'right '); + if (!empty($conf->multicurrency->enabled)) print_liste_field_titre("PriceQtyMinHTCurrency", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['pfp.unitprice']['checked'])) print_liste_field_titre("UnitPriceHT", $_SERVER["PHP_SELF"], "pfp.unitprice", "", $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['pfp.multicurrency_unitprice']['checked'])) print_liste_field_titre("UnitPriceHTCurrency", $_SERVER["PHP_SELF"], "pfp.multicurrency_unitprice", "", $param, '', $sortfield, $sortorder, 'right '); - if ($conf->multicurrency->enabled) print_liste_field_titre("Currency", $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); + if (!empty($conf->multicurrency->enabled)) print_liste_field_titre("Currency", $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre("DiscountQtyMin", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['pfp.delivery_time_days']['checked'])) print_liste_field_titre("NbDaysToDelivery", $_SERVER["PHP_SELF"], "pfp.delivery_time_days", "", $param, '', $sortfield, $sortorder, 'right '); if (!empty($arrayfields['pfp.supplier_reputation']['checked'])) print_liste_field_titre("ReputationForThisProduct", $_SERVER["PHP_SELF"], "pfp.supplier_reputation", "", $param, '', $sortfield, $sortorder, 'center '); @@ -1019,7 +1019,7 @@ END; print $productfourn->fourn_price ?price($productfourn->fourn_price) : ""; print ''; print $productfourn->fourn_multicurrency_price ? price($productfourn->fourn_multicurrency_price) : ""; @@ -1041,7 +1041,7 @@ END; print ''; print $productfourn->fourn_multicurrency_code ? currency_name($productfourn->fourn_multicurrency_code) : ''; print '
'.$ref.''; + print ''; if (!empty($actioncomm->userownerid)) { if (is_object($cacheusers[$actioncomm->userownerid])) @@ -266,13 +268,13 @@ class FormActions if ($actioncomm->type_picto) { $imgpicto = img_picto('', $actioncomm->type_picto); } else { - if ($actioncomm->type_code == 'AC_RDV') $imgpicto = img_picto('', 'object_group', '', false, 0, 0, '', 'paddingright').' '; - elseif ($actioncomm->type_code == 'AC_TEL') $imgpicto = img_picto('', 'object_phoning', '', false, 0, 0, '', 'paddingright').' '; - elseif ($actioncomm->type_code == 'AC_FAX') $imgpicto = img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'paddingright').' '; - elseif ($actioncomm->type_code == 'AC_EMAIL') $imgpicto = img_picto('', 'object_email', '', false, 0, 0, '', 'paddingright').' '; - elseif ($actioncomm->type_code == 'AC_INT') $imgpicto = img_picto('', 'object_intervention', '', false, 0, 0, '', 'paddingright').' '; - elseif ($actioncomm->type_code == 'AC_OTH' && $actioncomm->code == 'TICKET_MSG') $imgpicto = img_picto('', 'object_conversation', '', false, 0, 0, '', 'paddingright').' '; - elseif (!preg_match('/_AUTO/', $actioncomm->type_code)) $imgpicto = img_picto('', 'object_action', '', false, 0, 0, '', 'paddingright').' '; + if ($actioncomm->type_code == 'AC_RDV') $imgpicto = img_picto('', 'object_group', '', false, 0, 0, '', 'paddingright'); + elseif ($actioncomm->type_code == 'AC_TEL') $imgpicto = img_picto('', 'object_phoning', '', false, 0, 0, '', 'paddingright'); + elseif ($actioncomm->type_code == 'AC_FAX') $imgpicto = img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'paddingright'); + elseif ($actioncomm->type_code == 'AC_EMAIL') $imgpicto = img_picto('', 'object_email', '', false, 0, 0, '', 'paddingright'); + elseif ($actioncomm->type_code == 'AC_INT') $imgpicto = img_picto('', 'object_intervention', '', false, 0, 0, '', 'paddingright'); + elseif ($actioncomm->type_code == 'AC_OTH' && $actioncomm->code == 'TICKET_MSG') $imgpicto = img_picto('', 'object_conversation', '', false, 0, 0, '', 'paddingright'); + elseif (!preg_match('/_AUTO/', $actioncomm->type_code)) $imgpicto = img_picto('', 'object_action', '', false, 0, 0, '', 'paddingright'); } } print $imgpicto; @@ -282,8 +284,10 @@ class FormActions print $actioncomm->type_short ? $actioncomm->type_short : $actioncomm->type; } print ''.$label.''.dol_print_date($actioncomm->datep, 'dayhour', 'tzuserrel'); if ($actioncomm->datef) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 4e63e915593..af1e6873016 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -986,6 +986,12 @@ select.flat.selectlimit { text-overflow: ellipsis; white-space: nowrap; } +.tdoverflowmax125 { /* For tdoverflow, the max-midth become a minimum ! */ + max-width: 125px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} .tdoverflowmax150 { /* For tdoverflow, the max-midth become a minimum ! */ max-width: 150px; overflow: hidden; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index d863f53285b..51678064568 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1011,6 +1011,12 @@ select.flat.selectlimit { text-overflow: ellipsis; white-space: nowrap; } +.tdoverflowmax125 { /* For tdoverflow, the max-midth become a minimum ! */ + max-width: 125px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} .tdoverflowmax150 { /* For tdoverflow, the max-midth become a minimum ! */ max-width: 150px; overflow: hidden; From 9b4b11b4bd0d1220dde69758b6e1e4ab826bd502 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Nov 2020 14:49:30 +0100 Subject: [PATCH 34/38] Fix var not defined --- htdocs/core/lib/pdf.lib.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index f61ae5b7976..cb5e638ce40 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -817,8 +817,7 @@ function pdf_bank(&$pdf, $outputlangs, $curx, $cury, $account, $onlynumber = 0, $pdf->SetFont('', '', $default_font_size - $diffsizecontent); - if (empty($onlynumber) && !empty($account->domiciliation)) - { + if (empty($onlynumber) && !empty($account->domiciliation)) { $pdf->SetXY($curx, $cury); $val = $outputlangs->transnoentities("Residence").': '.$outputlangs->convToOutputCharset($account->domiciliation); $pdf->MultiCell(100, 3, $val, 0, 'L', 0); @@ -828,15 +827,15 @@ function pdf_bank(&$pdf, $outputlangs, $curx, $cury, $account, $onlynumber = 0, $cury += $tmpy; } - if (!empty($account->proprio)) - { + if (!empty($account->proprio)) { $pdf->SetXY($curx, $cury); $val = $outputlangs->transnoentities("BankAccountOwner").': '.$outputlangs->convToOutputCharset($account->proprio); $pdf->MultiCell(100, 3, $val, 0, 'L', 0); $tmpy = $pdf->getStringHeight(100, $val); $cury += $tmpy; - $cur += 1; - } elseif (!$usedetailedbban) $cury += 1; + } elseif (!$usedetailedbban) { + $cury += 1; + } // Use correct name of bank id according to country $ibankey = FormBank::getIBANLabel($account); From af2eabb24d5e9f438fb9da0b885040a2bc25cc14 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Nov 2020 15:06:53 +0100 Subject: [PATCH 35/38] Fix warning --- htdocs/core/class/dolreceiptprinter.class.php | 2 +- .../commande/doc/pdf_einstein.modules.php | 4 ++-- .../commande/doc/pdf_eratosthene.modules.php | 4 ++-- .../modules/facture/doc/pdf_crabe.modules.php | 12 +++++------ .../facture/doc/pdf_sponge.modules.php | 20 +++++++++---------- .../modules/propale/doc/pdf_azur.modules.php | 4 ++-- .../modules/propale/doc/pdf_cyan.modules.php | 4 ++-- .../doc/pdf_canelle.modules.php | 16 +++++++-------- .../supplier_order/doc/pdf_cornas.modules.php | 4 ++-- .../doc/pdf_muscadet.modules.php | 4 ++-- htdocs/takepos/receipt.php | 2 +- 11 files changed, 38 insertions(+), 38 deletions(-) diff --git a/htdocs/core/class/dolreceiptprinter.class.php b/htdocs/core/class/dolreceiptprinter.class.php index 5ff3f397813..ec8d9fa15bd 100644 --- a/htdocs/core/class/dolreceiptprinter.class.php +++ b/htdocs/core/class/dolreceiptprinter.class.php @@ -793,7 +793,7 @@ class dolReceiptPrinter extends Printer $row = $this->db->fetch_object($resql); $spacestoadd = $nbcharactbyline - strlen($langs->transnoentitiesnoconv("PaymentTypeShort".$row->code)) - 12; $spaces = str_repeat(' ', $spacestoadd); - $amount_payment = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount; + $amount_payment = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount; if ($row->code == "LIQ") $amount_payment = $amount_payment + $row->pos_change; // Show amount with excess received if is cash payment $this->printer->text($spaces.$langs->transnoentitiesnoconv("PaymentTypeShort".$row->code).' '.str_pad(price($amount_payment), 10, ' ', STR_PAD_LEFT)."\n"); if ($row->code == "LIQ" && $row->pos_change > 0) // Print change only in cash payments diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index d148796d746..7f5a18e2521 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -900,14 +900,14 @@ class pdf_einstein extends ModelePDFCommandes $pdf->SetXY($col1x, $tab2_top + 0); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("TotalHT") : ''), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (!empty($object->remise) ? $object->remise : 0), 0, $outputlangs), 0, 'R', 1); // Show VAT by rates and total $pdf->SetFillColor(248, 248, 248); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $this->atleastoneratenotnull = 0; if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) diff --git a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php index 1deaa8c0e2d..46409b362af 100644 --- a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php @@ -1114,14 +1114,14 @@ class pdf_eratosthene extends ModelePDFCommandes $pdf->SetFillColor(255, 255, 255); $pdf->SetXY($col1x, $tab2_top + 0); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("TotalHT") : ''), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (!empty($object->remise) ? $object->remise : 0), 0, $outputlangs), 0, 'R', 1); // Show VAT by rates and total $pdf->SetFillColor(248, 248, 248); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $this->atleastoneratenotnull = 0; if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 381cc7ab01c..e005c93e976 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -853,7 +853,7 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetXY($tab3_posx, $tab3_top + $y); $pdf->MultiCell(20, 3, dol_print_date($this->db->jdate($obj->datef), 'day', false, $outputlangs, true), 0, 'L', 0); $pdf->SetXY($tab3_posx + 21, $tab3_top + $y); - $pdf->MultiCell(20, 3, price(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $obj->multicurrency_amount_ttc : $obj->amount_ttc, 0, $outputlangs), 0, 'L', 0); + $pdf->MultiCell(20, 3, price((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $obj->multicurrency_amount_ttc : $obj->amount_ttc, 0, $outputlangs), 0, 'L', 0); $pdf->SetXY($tab3_posx + 40, $tab3_top + $y); $pdf->MultiCell(20, 3, $text, 0, 'L', 0); $pdf->SetXY($tab3_posx + 58, $tab3_top + $y); @@ -901,7 +901,7 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetXY($tab3_posx, $tab3_top + $y); $pdf->MultiCell(20, 3, dol_print_date($this->db->jdate($row->date), 'day', false, $outputlangs, true), 0, 'L', 0); $pdf->SetXY($tab3_posx + 21, $tab3_top + $y); - $pdf->MultiCell(20, 3, price($sign * (($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount), 0, $outputlangs), 0, 'L', 0); + $pdf->MultiCell(20, 3, price($sign * ((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount), 0, $outputlangs), 0, 'L', 0); $pdf->SetXY($tab3_posx + 40, $tab3_top + $y); $oper = $outputlangs->transnoentitiesnoconv("PaymentTypeShort".$row->code); @@ -1177,14 +1177,14 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetXY($col1x, $tab2_top + 0); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($total_ht + (!empty($object->remise) ? $object->remise : 0)), 0, $outputlangs), 0, 'R', 1); // Show VAT by rates and total $pdf->SetFillColor(248, 248, 248); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $this->atleastoneratenotnull = 0; if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) @@ -1405,8 +1405,8 @@ class pdf_crabe extends ModelePDFFactures } $pdf->SetTextColor(0, 0, 0); - $creditnoteamount = $object->getSumCreditNotesUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); // Warning, this also include excess received - $depositsamount = $object->getSumDepositsUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); + $creditnoteamount = $object->getSumCreditNotesUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); // Warning, this also include excess received + $depositsamount = $object->getSumDepositsUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); //print "x".$creditnoteamount."-".$depositsamount;exit; $resteapayer = price2num($total_ttc - $deja_regle - $creditnoteamount - $depositsamount, 'MT'); if (!empty($object->paye)) $resteapayer = 0; diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index 05e2f4e92f8..4107e25ca03 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -293,9 +293,9 @@ class pdf_sponge extends ModelePDFFactures { $object->fetch_thirdparty(); - $deja_regle = $object->getSommePaiement(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); - $amount_credit_notes_included = $object->getSumCreditNotesUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); - $amount_deposits_included = $object->getSumDepositsUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); + $deja_regle = $object->getSommePaiement((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); + $amount_credit_notes_included = $object->getSumCreditNotesUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); + $amount_deposits_included = $object->getSumDepositsUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); // Definition of $dir and $file if ($object->specimen) @@ -1002,7 +1002,7 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetXY($tab3_posx, $tab3_top + $y); $pdf->MultiCell(20, 3, dol_print_date($this->db->jdate($obj->datef), 'day', false, $outputlangs, true), 0, 'L', 0); $pdf->SetXY($tab3_posx + 21, $tab3_top + $y); - $pdf->MultiCell(20, 3, price(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $obj->multicurrency_amount_ttc : $obj->amount_ttc, 0, $outputlangs), 0, 'L', 0); + $pdf->MultiCell(20, 3, price((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $obj->multicurrency_amount_ttc : $obj->amount_ttc, 0, $outputlangs), 0, 'L', 0); $pdf->SetXY($tab3_posx + 40, $tab3_top + $y); $pdf->MultiCell(20, 3, $text, 0, 'L', 0); $pdf->SetXY($tab3_posx + 58, $tab3_top + $y); @@ -1039,7 +1039,7 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetXY($tab3_posx, $tab3_top + $y); $pdf->MultiCell(20, 3, dol_print_date($this->db->jdate($row->date), 'day', false, $outputlangs, true), 0, 'L', 0); $pdf->SetXY($tab3_posx + 21, $tab3_top + $y); - $pdf->MultiCell(20, 3, price($sign * (($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount), 0, $outputlangs), 0, 'L', 0); + $pdf->MultiCell(20, 3, price($sign * ((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount), 0, $outputlangs), 0, 'L', 0); $pdf->SetXY($tab3_posx + 40, $tab3_top + $y); $oper = $outputlangs->transnoentitiesnoconv("PaymentTypeShort".$row->code); @@ -1396,7 +1396,7 @@ class pdf_sponge extends ModelePDFFactures $tab2_top += 3; // Get Total HT - $total_ht = ($conf->multicurrency->enabled && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = (!empty($conf->multicurrency->enabled) && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht); // Total remise $total_line_remise = 0; @@ -1432,14 +1432,14 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("TotalHT") : ''), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($total_ht + (!empty($object->remise) ? $object->remise : 0)), 0, $outputlangs), 0, 'R', 1); // Show VAT by rates and total $pdf->SetFillColor(248, 248, 248); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $this->atleastoneratenotnull = 0; if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) @@ -1693,8 +1693,8 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetTextColor(0, 0, 0); - $creditnoteamount = $object->getSumCreditNotesUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); // Warning, this also include excess received - $depositsamount = $object->getSumDepositsUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); + $creditnoteamount = $object->getSumCreditNotesUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); // Warning, this also include excess received + $depositsamount = $object->getSumDepositsUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); $resteapayer = price2num($total_ttc - $deja_regle - $creditnoteamount - $depositsamount, 'MT'); if (!empty($object->paye)) $resteapayer = 0; diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 4ac1f82d178..b88a3d367dd 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -1056,14 +1056,14 @@ class pdf_azur extends ModelePDFPropales $pdf->SetXY($col1x, $tab2_top + 0); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (!empty($object->remise) ? $object->remise : 0), 0, $outputlangs), 0, 'R', 1); // Show VAT by rates and total $pdf->SetFillColor(248, 248, 248); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $this->atleastoneratenotnull = 0; if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) diff --git a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php index 49de09d911c..ac83d194749 100644 --- a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php @@ -1199,14 +1199,14 @@ class pdf_cyan extends ModelePDFPropales $pdf->SetXY($col1x, $tab2_top + 0); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT").(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transnoentities("TotalHT") : ''), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (!empty($object->remise) ? $object->remise : 0), 0, $outputlangs), 0, 'R', 1); // Show VAT by rates and total $pdf->SetFillColor(248, 248, 248); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $this->atleastoneratenotnull = 0; if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) diff --git a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php index 43169e0253a..2409ffeca54 100644 --- a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php @@ -224,9 +224,9 @@ class pdf_canelle extends ModelePDFSuppliersInvoices { $object->fetch_thirdparty(); - $deja_regle = $object->getSommePaiement(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); - $amount_credit_notes_included = $object->getSumCreditNotesUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); - $amount_deposits_included = $object->getSumDepositsUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); + $deja_regle = $object->getSommePaiement((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); + $amount_credit_notes_included = $object->getSumCreditNotesUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); + $amount_deposits_included = $object->getSumDepositsUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); // Definition of $dir and $file if ($object->specimen) @@ -656,14 +656,14 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetXY($col1x, $tab2_top + 0); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($total_ht + (!empty($object->remise) ? $object->remise : 0)), 0, $outputlangs), 0, 'R', 1); // Show VAT by rates and total $pdf->SetFillColor(248, 248, 248); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $this->atleastoneratenotnull = 0; foreach ($this->tva as $tvakey => $tvaval) @@ -785,8 +785,8 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->MultiCell($largcol2, $tab2_hl, price($sign * $total_ttc, 0, $outputlangs), $useborder, 'R', 1); $pdf->SetTextColor(0, 0, 0); - $creditnoteamount = $object->getSumCreditNotesUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); // Warning, this also include excess received - $depositsamount = $object->getSumDepositsUsed(($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? 1 : 0); + $creditnoteamount = $object->getSumCreditNotesUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); // Warning, this also include excess received + $depositsamount = $object->getSumDepositsUsed((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? 1 : 0); //print "x".$creditnoteamount."-".$depositsamount;exit; $resteapayer = price2num($total_ttc - $deja_regle - $creditnoteamount - $depositsamount, 'MT'); if (!empty($object->paye)) $resteapayer = 0; @@ -1020,7 +1020,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetXY($tab3_posx, $tab3_top + $y); $pdf->MultiCell(20, 3, dol_print_date($this->db->jdate($row->date), 'day', false, $outputlangs, true), 0, 'L', 0); $pdf->SetXY($tab3_posx + 21, $tab3_top + $y); - $pdf->MultiCell(20, 3, price($sign * (($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount)), 0, 'L', 0); + $pdf->MultiCell(20, 3, price($sign * ((!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount)), 0, 'L', 0); $pdf->SetXY($tab3_posx + 40, $tab3_top + $y); $oper = $outputlangs->transnoentitiesnoconv("PaymentTypeShort".$row->code); diff --git a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php index 8564d87aabf..6c1b5aef21d 100644 --- a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php +++ b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php @@ -924,7 +924,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->SetXY($col1x, $tab2_top + 0); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (!empty($object->remise) ? $object->remise : 0)), 0, 'R', 1); @@ -1058,7 +1058,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->SetFillColor(224, 224, 224); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalTTC"), $useborder, 'L', 1); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($total_ttc), $useborder, 'R', 1); $pdf->SetFont('', '', $default_font_size - 1); diff --git a/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php index 745b220bd05..1595659093c 100644 --- a/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php @@ -805,7 +805,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetXY($col1x, $tab2_top + 0); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 1); - $total_ht = (($conf->multicurrency->enabled && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = ((!empty($conf->multicurrency->enabled) && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ht : $object->total_ht); $pdf->SetXY($col2x, $tab2_top + 0); $pdf->MultiCell($largcol2, $tab2_hl, price($total_ht + (!empty($object->remise) ? $object->remise : 0)), 0, 'R', 1); @@ -939,7 +939,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetFillColor(224, 224, 224); $pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalTTC"), $useborder, 'L', 1); - $total_ttc = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; + $total_ttc = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $object->multicurrency_total_ttc : $object->total_ttc; $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); $pdf->MultiCell($largcol2, $tab2_hl, price($total_ttc), $useborder, 'R', 1); $pdf->SetFont('', '', $default_font_size - 1); diff --git a/htdocs/takepos/receipt.php b/htdocs/takepos/receipt.php index 31d86881fe0..6a305362839 100644 --- a/htdocs/takepos/receipt.php +++ b/htdocs/takepos/receipt.php @@ -222,7 +222,7 @@ if ($conf->global->TAKEPOS_PRINT_PAYMENT_METHOD) { echo $langs->transnoentitiesnoconv("PaymentTypeShort".$row->code); echo ''; - $amount_payment = ($conf->multicurrency->enabled && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount; + $amount_payment = (!empty($conf->multicurrency->enabled) && $object->multicurrency_tx != 1) ? $row->multicurrency_amount : $row->amount; if ($row->code == "LIQ") $amount_payment = $amount_payment + $row->pos_change; // Show amount with excess received if is cash payment echo price($amount_payment, 1, '', 1, - 1, - 1, $conf->currency); echo '
'; print ''; print ''; print ''; -print ''; -print ''; +print ''; +print ''; print ''; print "\n"; diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index 92e495ad93b..b8cfb64a39f 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -395,6 +395,8 @@ while ($i < min($num, $limit)) { $subscription->ref = $obj->crowid; $subscription->id = $obj->crowid; + $subscription->dateh = $db->jdate($obj->dateadh); + $subscription->datef = $db->jdate($obj->datef); $adherent->lastname = $obj->lastname; $adherent->firstname = $obj->firstname; diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 42da694b2e6..ec6ab640125 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -243,7 +243,6 @@ clearstatcache(); print '
'; print '
'.$langs->trans("MembersTypes").''.$langs->trans("MembersStatusToValid").''.$langs->trans("MenuMembersNotUpToDate").''.$langs->trans("MenuMembersUpToDate").''.$langs->trans("OutOfDate").''.$langs->trans("UpToDate").''.$langs->trans("MembersStatusResiliated").'
'; print ''; -print ''; // Default language @@ -251,14 +250,12 @@ print ''; -print ''; print ''; // Multilingual GUI print ''; -print ''; print ''; print '
'.$langs->trans("Language").' '; print '
'.$langs->trans("DefaultLangua print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT, 'MAIN_LANG_DEFAULT', 1, null, '', 0, 0, 'minwidth300', 2); print ''; print ' 
'.$langs->trans("EnableMultilangInterface").''; print ajax_constantonoff("MAIN_MULTILANGS", array(), $conf->entity, 0, 0, 1, 0); print ' 

'."\n"; diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index e7b7e2cd59b..d7e0962239b 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -512,7 +512,7 @@ if ($mode == 'common' || $mode == 'commonkanban') $moreforfilter .= $langs->trans('Keyword').': '; $moreforfilter .= '
'; $moreforfilter .= '
'; - $moreforfilter .= $langs->trans('Origin').': '.$form->selectarray('search_nature', $arrayofnatures, dol_escape_htmltag($search_nature), 1, 0, 0, '', 0, 0, 0, '', 'maxwidth100'); + $moreforfilter .= $langs->trans('Origin').': '.$form->selectarray('search_nature', $arrayofnatures, dol_escape_htmltag($search_nature), 1, 0, 0, '', 0, 0, 0, '', 'maxwidth200', 1); $moreforfilter .= '
'; if (!empty($conf->global->MAIN_FEATURES_LEVEL)) { @@ -521,17 +521,17 @@ if ($mode == 'common' || $mode == 'commonkanban') if ($conf->global->MAIN_FEATURES_LEVEL > 0) $array_version['experimental'] = $langs->trans("Experimental"); if ($conf->global->MAIN_FEATURES_LEVEL > 1) $array_version['development'] = $langs->trans("Development"); $moreforfilter .= '
'; - $moreforfilter .= $langs->trans('Version').': '.$form->selectarray('search_version', $array_version, $search_version, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth100'); + $moreforfilter .= $langs->trans('Version').': '.$form->selectarray('search_version', $array_version, $search_version, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth150', 1); $moreforfilter .= '
'; } $moreforfilter .= '
'; - $moreforfilter .= $langs->trans('Status').': '.$form->selectarray('search_status', array('active'=>$langs->transnoentitiesnoconv("Enabled"), 'disabled'=>$langs->transnoentitiesnoconv("Disabled")), $search_status, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth100'); + $moreforfilter .= $langs->trans('Status').': '.$form->selectarray('search_status', array('active'=>$langs->transnoentitiesnoconv("Enabled"), 'disabled'=>$langs->transnoentitiesnoconv("Disabled")), $search_status, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth150', 1); $moreforfilter .= '
'; $moreforfilter .= ' '; $moreforfilter .= '
'; $moreforfilter .= ''; $moreforfilter .= ' '; - $moreforfilter .= ''; + $moreforfilter .= ''; $moreforfilter .= '
'; $moreforfilter .= '
'; diff --git a/htdocs/admin/translation.php b/htdocs/admin/translation.php index b94d5b940c7..49e10d23af1 100644 --- a/htdocs/admin/translation.php +++ b/htdocs/admin/translation.php @@ -209,12 +209,9 @@ if (empty($conf->global->MAIN_ENABLE_OVERWRITE_TRANSLATION)) print load_fiche_titre($langs->trans("Translation"), $enabledisablehtml, 'title_setup'); -//print ''.$langs->trans("TranslationDesc")."
\n"; -//print "
\n"; - $current_language_code = $langs->defaultlang; $s = picto_from_langcode($current_language_code); -print ''.$form->textwithpicto($langs->trans("CurrentUserLanguage").': '.$s.' '.$current_language_code.'', $langs->trans("TranslationDesc")).'
'; +print $form->textwithpicto(''.$langs->trans("CurrentUserLanguage").': '.$s.' '.$current_language_code.'', $langs->trans("TranslationDesc")).'
'; print '
'; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 3f6c9d956a5..ade778263e9 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3663,6 +3663,9 @@ class Commande extends CommonOrder if (!empty($this->total_ttc)) { $label .= '
'.$langs->trans('AmountTTC').': '.price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency); } + if (!empty($this->date)) { + $label .= '
'.$langs->trans('Date').': '.dol_print_date($this->date, 'dayhour'); + } if (!empty($this->delivery_date)) { $label .= '
'.$langs->trans('DeliveryDate').': '.dol_print_date($this->delivery_date, 'dayhour'); } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 55ab524daec..32a79d5c667 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -6884,7 +6884,7 @@ abstract class CommonObject $helptoshow = $langs->trans($extrafields->attributes[$this->table_element]['help'][$key]); $out .= ''; - $out .= ''; + if ($helppresent) $text .= ''; $text .= ''; $toprightmenu .= $form->textwithtooltip('', $title, 2, 1, $text, 'login_block_elem', 2); } diff --git a/htdocs/product/list.php b/htdocs/product/list.php index b1dbb2609e1..b69786cca30 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -600,7 +600,7 @@ if ($resql) $categoriesProductArr = $form->select_all_categories(Categorie::TYPE_PRODUCT, '', '', 64, 0, 1); $categoriesProductArr[-2] = '- '.$langs->trans('NotCategorized').' -'; $moreforfilter .= Form::multiselectarray('search_category_product_list', $categoriesProductArr, $searchCategoryProductList, 0, 0, 'minwidth300'); - $moreforfilter .= ' '.$langs->trans('UseOrOperatorForCategories').''; + $moreforfilter .= ' '.$langs->trans('UseOrOperatorForCategories').''; $moreforfilter .= '
'; } diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 0f596a8764c..6825c219fc9 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -973,7 +973,6 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) setEventMessages($langs->trans('NewCustomerSupplierCodeProposed'), '', 'warnings'); } - $object->address = GETPOST('address', 'alphanohtml'); $object->zip = GETPOST('zipcode', 'alphanohtml'); $object->town = GETPOST('town', 'alphanohtml'); @@ -1306,7 +1305,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) // Country print ''.$form->editfieldkey('Country', 'selectcountry_id', '', $object, 0).''; print img_picto('', 'globe-americas', 'class="paddingrightonly"'); - print $form->select_country((GETPOSTISSET('country_id') ? GETPOST('country_id') : $object->country_id), 'country_id', '', 0, 'minwidth300 widthcentpercentminusx'); + print $form->select_country((GETPOSTISSET('country_id') ? GETPOST('country_id') : $object->country_id), 'country_id', '', 0, 'minwidth300 maxwidth500 widthcentpercentminusx'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); print ''; @@ -1334,9 +1333,9 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) // Email / Web print ''.$form->editfieldkey('EMail', 'email', '', $object, 0, 'string', '', $conf->global->SOCIETE_EMAIL_MANDATORY).''; - print ''.img_picto('', 'object_email').' '; + print ''.img_picto('', 'object_email').' '; print ''.$form->editfieldkey('Web', 'url', '', $object, 0).''; - print ''.img_picto('', 'globe').' '; + print ''.img_picto('', 'globe').' '; if (!empty($conf->socialnetworks->enabled)) { foreach ($socialnetworks as $key => $value) { diff --git a/htdocs/theme/eldy/btn.inc.php b/htdocs/theme/eldy/btn.inc.php index c866b187638..364723e2152 100644 --- a/htdocs/theme/eldy/btn.inc.php +++ b/htdocs/theme/eldy/btn.inc.php @@ -7,11 +7,13 @@ if (!defined('ISLOADEDBYSTEELSHEET')) die('Must be call by steelsheet'); ?> --btncolorbg: #fbfbfb; --btncolorborderhover: none; --btncolorborder: #FFF; + /* --butactionbg:rgba(150, 110, 162, 0.95); */ + --butactionbg:rgb(118, 145, 225); + --butactionbg:rgba(150, 110, 162, 0.95); --butactiondeletebg: rgb(234,228,225); /* tertiary color */ /* --butactionbg:rgb(218, 235, 225); */ /* --butactionbg:rgb(228, 218, 235); */ - --butactionbg:rgb(118, 145, 225); } global->THEME_DARKMODEENABLED)) { --btncolorbg: rgb(26,27,27); --btncolorborderhover: #ffffff; --btncolorborder: #2b2c2e; - --butactionbg:rgb(173,140,79); + --butactionbg: rgb(173,140,79); --butactiondeletebg: rgb(252,84,91); }\n"; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index af1e6873016..cd59b22f1d7 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -21,8 +21,8 @@ --colorbackbody: rgb(); --colortexttitlenotab: rgb(); --colortexttitlenotab2: rgb(); - --colortexttitle: rgb(); - --colortexttitlelink: rgb(); + --colortexttitle: rgba(, 0.9); + --colortexttitlelink: rgba(, 0.9); --colortext: rgb(); --colortextlink: rgb(); --colortextbackhmenu: #; @@ -2610,7 +2610,18 @@ font.vsmenudisabledmargin { margin: 1px 1px 1px 6px; } li a.vsmenudisabled, li.vsmenudisabled { color: #aaa !important; } a.help:link, a.help:visited, a.help:hover, a.help:active, span.help { text-align: ; color: #aaa; text-decoration: none; } -.helppresent, .helppresent:hover { color: #f3e4ac !important; } +.helppresent, .helppresent:hover { + /* color: #f3e4ac !important; */ +} +.helppresentcircle { + color: var(--butactionbg); + margin-left: -7px; + display: inline-block; + margin-top: -10px; + font-size: x-small; + vertical-align: super; + opacity: 0.95; +} .vmenu div.blockvmenufirst, .vmenu div.blockvmenulogo, .vmenu div.blockvmenusearchphone, .vmenu div.blockvmenubookmarks { diff --git a/htdocs/theme/eldy/theme_vars.inc.php b/htdocs/theme/eldy/theme_vars.inc.php index 850c39b6567..572404f3eea 100644 --- a/htdocs/theme/eldy/theme_vars.inc.php +++ b/htdocs/theme/eldy/theme_vars.inc.php @@ -65,9 +65,9 @@ $colorbacklinepairhover = '230,237,244'; // line hover $colorbacklinepairchecked = '230,237,244'; // line checked $colorbacklinebreak = '248,247,244'; // line break $colorbackbody = '255,255,255'; -$colortexttitlenotab = '10,120,140'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,123,140, violet: 0,50,120 +$colortexttitlenotab = '35,135,140'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,123,140, violet: 0,50,120 $colortexttitlenotab2 = '100,0,100'; // 150,90,121 140,80,10 or 10,140,80 #875a7b green=0,123,140, violet: 0,50,120 -$colortexttitle = '0,0,0'; +$colortexttitle = '40, 40, 60'; $colortexttitlelink = '10, 20, 100'; $colortext = '0,0,0'; $colortextlink = '10, 20, 100'; @@ -110,8 +110,8 @@ $badgeStatus1 = '#bc9526'; // validated $badgeStatus1b = '#bc9526'; // validated $badgeStatus2 = '#9c9c26'; // approved $badgeStatus3 = '#bca52b'; -$badgeStatus4 = '#55a580'; // Color ok -$badgeStatus4b = '#55a580'; // Color ok +$badgeStatus4 = '#25a580'; // Color ok +$badgeStatus4b = '#25a580'; // Color ok $badgeStatus5 = '#cad2d2'; $badgeStatus6 = '#cad2d2'; $badgeStatus7 = '#baa32b'; From d2d202dfc793b9e4865b8742021f4d535f4b14c9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Nov 2020 13:22:17 +0100 Subject: [PATCH 38/38] Fix ProfID5 must be EORI for ES too --- htdocs/langs/en_US/companies.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index d46f95866f9..8a18520c2fc 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -172,7 +172,7 @@ ProfId1ES=Prof Id 1 (CIF/NIF) ProfId2ES=Prof Id 2 (Social security number) ProfId3ES=Prof Id 3 (CNAE) ProfId4ES=Prof Id 4 (Collegiate number) -ProfId5ES=Prof Id 5 (EUID) +ProfId5ES=EORI number ProfId6ES=- ProfId1FR=Prof Id 1 (SIREN) ProfId2FR=Prof Id 2 (SIRET)