From e84ea68218e5f82d9ed0170ffa1b03a3a8cbf680 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 15 Oct 2025 18:58:53 +0200 Subject: [PATCH 1/4] FIX wrong getEntiy element name (#35771) --- htdocs/core/boxes/box_last_knowledgerecord.php | 2 +- htdocs/core/boxes/box_last_modified_knowledgerecord.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/boxes/box_last_knowledgerecord.php b/htdocs/core/boxes/box_last_knowledgerecord.php index 9f4d98999ac..cc1b158f356 100644 --- a/htdocs/core/boxes/box_last_knowledgerecord.php +++ b/htdocs/core/boxes/box_last_knowledgerecord.php @@ -93,7 +93,7 @@ class box_last_knowledgerecord extends ModeleBoxes if ($user->hasRight('knowledgemanagement', 'knowledgerecord', 'read')) { $sql = 'SELECT k.rowid as id, k.date_creation, k.ref, k.lang, k.question, k.status as status'; $sql .= " FROM ".MAIN_DB_PREFIX."knowledgemanagement_knowledgerecord as k"; - $sql .= " WHERE k.entity IN (".getEntity('knowledgemanagement').")"; + $sql .= " WHERE k.entity IN (".getEntity('knowledgerecord').")"; if ($user->socid) { $sql .= " AND k.fk_soc= ".((int) $user->socid); diff --git a/htdocs/core/boxes/box_last_modified_knowledgerecord.php b/htdocs/core/boxes/box_last_modified_knowledgerecord.php index c41d141d5e8..cc8c47bf46a 100644 --- a/htdocs/core/boxes/box_last_modified_knowledgerecord.php +++ b/htdocs/core/boxes/box_last_modified_knowledgerecord.php @@ -93,7 +93,7 @@ class box_last_modified_knowledgerecord extends ModeleBoxes if ($user->hasRight('knowledgemanagement', 'knowledgerecord', 'read')) { $sql = 'SELECT k.rowid as id, k.date_creation, k.ref, k.lang, k.question, k.status as status'; $sql .= " FROM ".MAIN_DB_PREFIX."knowledgemanagement_knowledgerecord as k"; - $sql .= " WHERE k.entity IN (".getEntity('knowledgemanagement').")"; + $sql .= " WHERE k.entity IN (".getEntity('knowledgerecord').")"; if ($user->socid) { $sql .= " AND k.fk_soc= ".((int) $user->socid); From f85108b8aca1684ce9cec36cda09901adb322606 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 15 Oct 2025 18:59:33 +0200 Subject: [PATCH 2/4] FIX check if category module is enabled (#35770) --- .../core/modules/modKnowledgeManagement.class.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/core/modules/modKnowledgeManagement.class.php b/htdocs/core/modules/modKnowledgeManagement.class.php index d7352647f24..a777585745b 100644 --- a/htdocs/core/modules/modKnowledgeManagement.class.php +++ b/htdocs/core/modules/modKnowledgeManagement.class.php @@ -300,9 +300,9 @@ class modKnowledgeManagement extends DolibarrModules 'langs' => 'knowledgemanagement', 'position' => 101, // Define condition to show or hide menu entry. Use '$conf->knowledgemanagement->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. - 'enabled' => '$conf->knowledgemanagement->enabled', + 'enabled' => 'isModEnabled("knowledgemanagement")', // Use 'perms'=>'$user->rights->knowledgemanagement->level1->level2' if you want your menu with a permission rules - 'perms' => '$user->rights->knowledgemanagement->knowledgerecord->read', + 'perms' => '$user->hasRight("knowledgemanagement", "knowledgerecord", "read")', 'target' => '', // 0=Menu for internal users, 1=external users, 2=both 'user' => 2, @@ -320,9 +320,9 @@ class modKnowledgeManagement extends DolibarrModules 'langs' => 'knowledgemanagement', 'position' => 111, // Define condition to show or hide menu entry. Use '$conf->knowledgemanagement->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. - 'enabled' => '$conf->knowledgemanagement->enabled', + 'enabled' => 'isModEnabled("knowledgemanagement")', // Use 'perms'=>'$user->rights->knowledgemanagement->level1->level2' if you want your menu with a permission rules - 'perms' => '$user->rights->knowledgemanagement->knowledgerecord->read', + 'perms' => '$user->hasRight("knowledgemanagement", "knowledgerecord", "read")', 'target' => '', // 0=Menu for internal users, 1=external users, 2=both 'user' => 2, @@ -340,7 +340,7 @@ class modKnowledgeManagement extends DolibarrModules 'langs' => 'knowledgemanagement', 'position' => 110, // Define condition to show or hide menu entry. Use '$conf->knowledgemanagement->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. - 'enabled' => '$conf->knowledgemanagement->enabled', + 'enabled' => 'isModEnabled("knowledgemanagement")', // Use 'perms'=>'$user->rights->knowledgemanagement->level1->level2' if you want your menu with a permission rules 'perms' => '$user->hasRight("knowledgemanagement", "knowledgerecord", "write")', 'target' => '', @@ -355,8 +355,8 @@ class modKnowledgeManagement extends DolibarrModules 'url' => '/categories/index.php?type=13', 'langs' => 'knowledgemanagement', 'position' => 112, - 'enabled' => '$conf->knowledgemanagement->enabled', - 'perms' => '$user->rights->knowledgemanagement->knowledgerecord->read', + 'enabled' => 'isModEnabled("knowledgemanagement") && isModenabled("category")', + 'perms' => '$user->hasRight("knowledgemanagement", "knowledgerecord", "read")', 'target' => '', 'user' => 0 ); From c7a61226fb3d750cb91bc8aa29163bb6233ae035 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Oct 2025 01:48:32 +0200 Subject: [PATCH 3/4] FIX #35784 --- htdocs/core/boxes/box_last_ticket.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/boxes/box_last_ticket.php b/htdocs/core/boxes/box_last_ticket.php index f251cd944bf..0703c3fd652 100644 --- a/htdocs/core/boxes/box_last_ticket.php +++ b/htdocs/core/boxes/box_last_ticket.php @@ -83,9 +83,9 @@ class box_last_ticket extends ModeleBoxes $sql .= " type.label as type_label, category.label as category_label, severity.label as severity_label,"; $sql .= " s.nom as company_name, s.email as socemail, s.client, s.fournisseur"; $sql .= " FROM ".MAIN_DB_PREFIX."ticket as t"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_type as type ON type.code=t.type_code"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_category as category ON category.code=t.category_code"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_severity as severity ON severity.code=t.severity_code"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_type as type ON type.code = t.type_code AND type.entity = t.entity"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_category as category ON category.code = t.category_code AND category.entity = t.entity"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_ticket_severity as severity ON severity.code = t.severity_code AND severity.entity = t.entity"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid=t.fk_soc"; $sql .= " WHERE t.entity IN (".getEntity('ticket').")"; // $sql.= " AND e.rowid = er.fk_event"; From 54f8ac41531e109a870d5e491e123dd9bbce7097 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Fri, 17 Oct 2025 02:15:33 +0200 Subject: [PATCH 4/4] FIX Accountancy - Missing subledger information on mass cloning (#35777) * FIX Accountancy - Missing subledger information on mass cloning * Clarify - Add date_creation / Remove doc_type, fk_doc, fk_docdet * Last fix * Fix phan on user->Id * Update bookkeeping.class.php --------- Co-authored-by: Laurent Destailleur --- .../accountancy/class/bookkeeping.class.php | 53 +++++++++++++++---- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index eb17e2728e0..eb080d5fbb3 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -3547,7 +3547,7 @@ class BookKeeping extends CommonObject */ public function newCloneMass($toselect, $code_journal, $docdate) { - global $langs; + global $langs, $user; $error = 0; $this->db->begin(); @@ -3601,22 +3601,55 @@ class BookKeeping extends CommonObject if ($bookKeeping->fetch($toselectid)) { $code_journal = getDolGlobalString('ACCOUNTING_CLONING_ENABLE_INPUT_JOURNAL') ? $code_journal : $bookKeeping->code_journal; $journal_label = getDolGlobalString('ACCOUNTING_CLONING_ENABLE_INPUT_JOURNAL') ? $accountingJournal->label : $bookKeeping->journal_label; - $sql = "SELECT piece_num, label_operation, numero_compte, label_compte, doc_type, code_journal, fk_user_author, doc_ref, fk_doc, fk_docdet, debit, credit, journal_label, sens, montant "; - $sql .= "FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping WHERE rowid = " . ((int) $toselectid); + $sql = "SELECT piece_num, label_operation, numero_compte, label_compte, subledger_account, subledger_label, doc_type, code_journal, fk_user_author, doc_ref, fk_doc, fk_docdet, debit, credit, journal_label, sens, montant"; + $sql .= " FROM ".$this->db->prefix()."accounting_bookkeeping WHERE rowid = " . ((int) $toselectid); $resql = $this->db->query($sql); if ($resql) { while ($obj = $this->db->fetch_object($resql)) { $docRef = $langs->trans("CloneOf", $obj->doc_ref); - $sql_insert = "INSERT INTO ".$this->db->prefix()."accounting_bookkeeping"; - $sql_insert .= " (piece_num, label_operation, numero_compte, label_compte, doc_type, code_journal, doc_date,"; - $sql_insert .= " fk_user_author, doc_ref, fk_doc, fk_docdet, debit, credit, journal_label, sens, montant"; + $sql_insert = "INSERT INTO ".$this->db->prefix()."accounting_bookkeeping ("; + $sql_insert .= " piece_num"; + $sql_insert .= ", label_operation"; + $sql_insert .= ", numero_compte"; + $sql_insert .= ", label_compte"; + $sql_insert .= ", subledger_account"; + $sql_insert .= ", subledger_label"; + $sql_insert .= ", doc_type"; + $sql_insert .= ", code_journal"; + $sql_insert .= ", doc_date"; + $sql_insert .= ", date_creation"; + $sql_insert .= ", fk_user_author"; + $sql_insert .= ", doc_ref"; + $sql_insert .= ", fk_doc"; + $sql_insert .= ", fk_docdet"; + $sql_insert .= ", debit"; + $sql_insert .= ", credit"; + $sql_insert .= ", journal_label"; + $sql_insert .= ", sens"; + $sql_insert .= ", montant"; $sql_insert .= ")"; - $sql_insert .= " VALUES (" . ((int) $pieceNumNext) . ", '" . $this->db->escape($obj->label_operation) . "', '" . $this->db->escape($obj->numero_compte) . "',"; - $sql_insert .= " '" . $this->db->escape($obj->label_compte) . "', '" . $this->db->escape($obj->doc_type) . "', '" . $this->db->escape($code_journal) . "', '" . $this->db->idate($docdate)."',"; - $sql_insert .= " '" . $this->db->escape($obj->fk_user_author) . "', '" . $this->db->escape($docRef) . "', " . ((int) $obj->fk_doc) . ", " . ((int) $obj->fk_docdet) . ","; - $sql_insert .= " " . (float) $obj->debit . ", " . (float) $obj->credit . ", '" . $this->db->escape($journal_label) . "', '" . $this->db->escape($obj->sens) . "', " . (float) $obj->montant; + $sql_insert .= " VALUES ("; + $sql_insert .= $pieceNumNext; + $sql_insert .= ", '" . $this->db->escape($obj->label_operation) . "'"; + $sql_insert .= ", '" . $this->db->escape($obj->numero_compte) . "'"; + $sql_insert .= ", '" . $this->db->escape($obj->label_compte) . "'"; + $sql_insert .= ", '" . $this->db->escape($obj->subledger_account) . "'"; + $sql_insert .= ", '" . $this->db->escape($obj->subledger_label) . "'"; + $sql_insert .= ", ''"; + $sql_insert .= ", '" . $this->db->escape($code_journal) . "'"; + $sql_insert .= ", '" . $this->db->idate($docdate)."'"; + $sql_insert .= ", '" . $this->db->idate($now)."'"; + $sql_insert .= ", ".($user->id > 0 ? ((int) $user->id) : "NULL"); + $sql_insert .= ", '" . $this->db->escape($docRef) . "'"; + $sql_insert .= ", 0"; + $sql_insert .= ", 0"; + $sql_insert .= ", " . (float) $obj->debit; + $sql_insert .= ", " . (float) $obj->credit; + $sql_insert .= ", '" . $this->db->escape($journal_label) . "'"; + $sql_insert .= ", '" . $this->db->escape($obj->sens) . "'"; + $sql_insert .= ", " . (float) $obj->montant; $sql_insert .= ")"; $resqlInsert = $this->db->query($sql_insert);