From cbba014355f6395468670ea6d7f021697b581446 Mon Sep 17 00:00:00 2001 From: Eric - CAP-REL <1468823+rycks@users.noreply.github.com> Date: Sat, 15 Jun 2024 16:27:54 +0200 Subject: [PATCH 1/5] =?UTF-8?q?fk=5Fproduct=20could=20be=20=3D=20-1=20then?= =?UTF-8?q?=20line=20added=20is=20not=20linked=20to=20selected=20pr?= =?UTF-8?q?=E2=80=A6=20(#30013)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fk_product could be = -1 then line added is not linked to selected product * more clear conditions * idprod could be set if prev dropdown menu was used --- htdocs/projet/tasks/time.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 58995267410..99eb3b01b36 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -499,8 +499,9 @@ if ($action == 'confirm_generateinvoice') { if (getDolGlobalInt('PROJECT_USE_REAL_COST_FOR_TIME_INVOICING')) { // We set unit price to 0 to force the use of the rate saved during recording $pu_ht = 0; - } else { + } elseif ($idprod <= 0) { // We want to sell all the time spent with the last hourly rate of user + // -> but what about choice user selected ? add idprod test $pu_ht = $fuser->thm; } @@ -520,7 +521,7 @@ if ($action == 'confirm_generateinvoice') { $localtax2line = $localtax2; // If a particular product/service was defined for the task - if (!empty($fk_product) && $fk_product !== $idprod) { + if (!empty($fk_product) && ($fk_product > 0) && ($fk_product !== $idprod)) { if (!array_key_exists($fk_product, $product_data_cache)) { $result = $tmpproduct->fetch($fk_product); if ($result < 0) { From 9c6a1eac945b1acadaa024384df66e039dbe4cf0 Mon Sep 17 00:00:00 2001 From: HENRY Florian Date: Mon, 24 Jun 2024 23:47:34 +0200 Subject: [PATCH 2/5] fix: bad errors variable for error return (#30145) * fix: bad errors variable for error return * fix: bad errors variable for error return * Update contrat.class.php fix review --- htdocs/contrat/class/contrat.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 65e5249bf82..3718c2740e0 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -1621,7 +1621,8 @@ class Contrat extends CommonObject $contractline->id = $contractlineid; $result = $contractline->insertExtraFields(); if ($result < 0) { - $this->error[] = $contractline->error; + $this->errors = array_merge($this->errors, $contractline->errors); + $this->error = $contractline->error; $error++; } } From 42d9b384d4400272f5a00648ee898c0d27de1c5a Mon Sep 17 00:00:00 2001 From: noec764 <58433943+noec764@users.noreply.github.com> Date: Sat, 29 Jun 2024 19:29:14 +0200 Subject: [PATCH 3/5] FIX: Bad calculation of $nbtotalofrecord (#30183) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Noé --- htdocs/user/group/list.php | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/htdocs/user/group/list.php b/htdocs/user/group/list.php index d0998329fa0..11b5165f48b 100644 --- a/htdocs/user/group/list.php +++ b/htdocs/user/group/list.php @@ -174,6 +174,9 @@ $morecss = array(); // Build and execute select // -------------------------------------------------------------------- $sql = "SELECT g.rowid, g.nom as name, g.note, g.entity, g.datec, g.tms, COUNT(DISTINCT ugu.fk_user) as nb, COUNT(DISTINCT ugr.fk_id) as nbpermissions"; + +$sqlfields = $sql; + $sql .= " FROM ".MAIN_DB_PREFIX."usergroup as g"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_usergroup = g.rowid"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_rights as ugr ON ugr.fk_usergroup = g.rowid"; @@ -190,11 +193,29 @@ if ($search_all) { } $sql .= " GROUP BY g.rowid, g.nom, g.note, g.entity, g.datec, g.tms"; +// Count total nb of records +$nbtotalofrecords = ''; +if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) { + /* The fast and low memory method to get and count full list converts the sql into a sql count */ + $sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql); + $sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount); + $resql = $db->query($sqlforcount); + if ($resql) { + $objforcount = $db->fetch_object($resql); + $nbtotalofrecords = $objforcount->nbtotalofrecords; + } else { + dol_print_error($db); + } + + if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller than paging size (filtering), goto and load page 0 + $page = 0; + $offset = 0; + } + $db->free($resql); +} + // Complete request and execute it with limit $sql .= $db->order($sortfield, $sortorder); -if ($limit) { - $sql .= $db->plimit($limit + 1, $offset); -} $resql = $db->query($sql); if (!$resql) { @@ -204,9 +225,6 @@ if (!$resql) { $num = $db->num_rows($resql); - -$nbtotalofrecords = $num; - $i = 0; From 2e6af8782385775dbfc58e96a37f9a582d96ce8e Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sat, 29 Jun 2024 19:30:06 +0200 Subject: [PATCH 4/5] FIX User List - Function is show in wrong column when module HRM enabled (#30186) --- htdocs/user/list.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/user/list.php b/htdocs/user/list.php index c7a10b2c3cb..e5ca8d9cf72 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -1,9 +1,9 @@ - * Copyright (C) 2004-2021 Laurent Destailleur - * Copyright (C) 2005-2017 Regis Houssin - * Copyright (C) 2015 Alexandre Spangaro - * Copyright (C) 2016 Marcos García +/* Copyright (C) 2002-2005 Rodolphe Quiedeville + * Copyright (C) 2004-2021 Laurent Destailleur + * Copyright (C) 2005-2017 Regis Houssin + * Copyright (C) 2015-2024 Alexandre Spangaro + * Copyright (C) 2016 Marcos García * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -134,9 +134,9 @@ $arrayfields = array( 'u.email'=>array('label'=>"EMail", 'checked'=>1, 'position'=>35), 'u.api_key'=>array('label'=>"ApiKey", 'checked'=>0, 'position'=>40, "enabled"=>(isModEnabled('api') && $user->admin)), 'u.fk_soc'=>array('label'=>"Company", 'checked'=>($contextpage == 'employeelist' ? 0 : 1), 'position'=>45), - 'u.ref_employee'=>array('label'=>"RefEmployee", 'checked'=>-1, 'position'=>60, 'enabled'=>(isModEnabled('hrm') && $permissiontoreadhr)), - 'u.national_registration_number'=>array('label'=>"NationalRegistrationNumber", 'checked'=>-1, 'position'=>61, 'enabled'=>(isModEnabled('hrm') && $permissiontoreadhr)), - 'u.job'=>array('label'=>"PostOrFunction", 'checked'=>-1, 'position'=>50), + 'u.ref_employee'=>array('label'=>"RefEmployee", 'checked'=>-1, 'position'=>50, 'enabled'=>(isModEnabled('hrm') && $permissiontoreadhr)), + 'u.national_registration_number'=>array('label'=>"NationalRegistrationNumber", 'checked'=>-1, 'position'=>51, 'enabled'=>(isModEnabled('hrm') && $permissiontoreadhr)), + 'u.job'=>array('label'=>"PostOrFunction", 'checked'=>-1, 'position'=>60), 'u.salary'=>array('label'=>"Salary", 'checked'=>-1, 'position'=>80, 'enabled'=>(isModEnabled('salaries') && $user->hasRight("salaries", "readall")), 'isameasure'=>1), 'u.datelastlogin'=>array('label'=>"LastConnexion", 'checked'=>1, 'position'=>100), 'u.datepreviouslogin'=>array('label'=>"PreviousConnexion", 'checked'=>0, 'position'=>110), @@ -897,10 +897,6 @@ if (!empty($arrayfields['u.entity']['checked'])) { print_liste_field_titre($arrayfields['u.entity']['label'], $_SERVER['PHP_SELF'], "u.entity", $param, "", "", $sortfield, $sortorder); $totalarray['nbfield']++; } -if (!empty($arrayfields['u.job']['checked'])) { - print_liste_field_titre($arrayfields['u.job']['label'], $_SERVER['PHP_SELF'], "u.job", $param, "", "", $sortfield, $sortorder); - $totalarray['nbfield']++; -} if (!empty($arrayfields['u.ref_employee']['checked'])) { print_liste_field_titre("RefEmployee", $_SERVER['PHP_SELF'], "u.ref_employee", $param, "", "", $sortfield, $sortorder); $totalarray['nbfield']++; @@ -909,6 +905,10 @@ if (!empty($arrayfields['u.national_registration_number']['checked'])) { print_liste_field_titre("NationalRegistrationNumber", $_SERVER['PHP_SELF'], "u.national_registration_number", $param, "", "", $sortfield, $sortorder); $totalarray['nbfield']++; } +if (!empty($arrayfields['u.job']['checked'])) { + print_liste_field_titre($arrayfields['u.job']['label'], $_SERVER['PHP_SELF'], "u.job", $param, "", "", $sortfield, $sortorder); + $totalarray['nbfield']++; +} if (!empty($arrayfields['u.salary']['checked'])) { print_liste_field_titre("Salary", $_SERVER['PHP_SELF'], "u.salary", $param, "", "", $sortfield, $sortorder, 'right '); $totalarray['nbfield']++; From 6cd3d7943d95f9cbbd5cf2200654e7add2e2f7fd Mon Sep 17 00:00:00 2001 From: lvessiller-opendsi Date: Sat, 29 Jun 2024 19:31:08 +0200 Subject: [PATCH 5/5] FIX orders to bill menu (#30179) * FIX orders to bill menu * only fix url menu * FIX orders supplier to bill menu --- htdocs/core/menus/standard/eldy.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 6e03224a306..dcaead425ef 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1494,7 +1494,7 @@ function get_left_menu_billing($mainmenu, &$newmenu, $usemenuhider = 1, $leftmen if (isModEnabled('commande')) { $langs->load("orders"); if (isModEnabled('facture')) { - $newmenu->add("/commande/list.php?leftmenu=orders&search_status=-3&billed=0&contextpage=billableorders", $langs->trans("MenuOrdersToBill2"), 0, $user->hasRight('commande', 'lire'), '', $mainmenu, 'orders', 0, '', '', '', img_picto('', 'order', 'class="paddingright pictofixedwidth"')); + $newmenu->add("/commande/list.php?leftmenu=orders&search_status=-3&search_billed=0&contextpage=billableorders", $langs->trans("MenuOrdersToBill2"), 0, $user->hasRight('commande', 'lire'), '', $mainmenu, 'orders', 0, '', '', '', img_picto('', 'order', 'class="paddingright pictofixedwidth"')); } //if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->hasRight('commande', 'lire')); } @@ -1503,7 +1503,7 @@ function get_left_menu_billing($mainmenu, &$newmenu, $usemenuhider = 1, $leftmen if (isModEnabled('supplier_invoice')) { if (!empty($conf->global->SUPPLIER_MENU_ORDER_RECEIVED_INTO_INVOICE)) { $langs->load("supplier"); - $newmenu->add("/fourn/commande/list.php?leftmenu=orders&search_status=5&billed=0", $langs->trans("MenuOrdersSupplierToBill"), 0, $user->hasRight('commande', 'lire'), '', $mainmenu, 'orders', 0, '', '', '', img_picto('', 'supplier_order', 'class="paddingright pictofixedwidth"')); + $newmenu->add("/fourn/commande/list.php?leftmenu=orders&search_status=5&search_billed=0", $langs->trans("MenuOrdersSupplierToBill"), 0, $user->hasRight('commande', 'lire'), '', $mainmenu, 'orders', 0, '', '', '', img_picto('', 'supplier_order', 'class="paddingright pictofixedwidth"')); //if ($usemenuhider || empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->hasRight('commande', 'lire')); } }