diff --git a/ChangeLog b/ChangeLog index ef81aea3d19..b0684cbcf2d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ English Dolibarr ChangeLog -------------------------------------------------------------- + + ***** ChangeLog for 10.0.0 compared to 9.0.0 ***** For Users: NEW: Module "Ticket" is available as a stable module. @@ -34,6 +36,57 @@ Following changes may create regressions for some external modules, but were nec * Deprecated property ->fk_departement is now ->state_id everywhere. + +***** ChangeLog for 9.0.2 compared to 9.0.1 ***** +FIX: #10822 +FIX: Accountancy - Format EBP import +FIX: A page of a site replaced with another when switching in edit mode +FIX: Autodetect buy price for invoices autogenerated with templates. +FIX: Avoid error 500 when extension php-intl not loaded +FIX: bad check on type of expense report (mandatory status not working) +FIX: Bad label of status for members (must be short version in list) +FIX: Can not create contract with numbering module without autogen rule +FIX: Can't set default value of extrafield of type varchar +FIX: check only if invoice module is enabled (bank is check after) +FIX: counter of permissions in badge was wrong +FIX: default value of language of thirdparty +FIX: Don't show accountingjournal:getNomUrl without data +FIX: Duplicate executeHook function +FIX: Edit of personalized groups +FIX: Error with various & salary payment on project +FIX: extrafields always visible on view mode +FIX: function not found +FIX: If we build one invoice for several orders, we must put the ref of + orders on lines. +FIX: expensereport must be in $check array +FIX: missing entity filter and wrong var name +FIX: Missing field "In sale" in list +FIX: missing hook completeTabsHead in margins module +FIX: missing hook in agenda export +FIX: missing vat_src_code when inserting an expense report line +FIX: More complete auto setup of barcode module +FIX: need to round with 2 decimals to avoid movements not correctly balanced +FIX: no need to test anything to display documents tabs on expense report +FIX: old export models was not visible +FIX: Param keepn must be 1 when dol_escape_htmltag used for textarea +FIX: possibility to set up payment mode when invoice module is disabled +FIX: problem with sign of various payment in project preview +FIX: Remane of project +FIX: setup of module export +FIX: several hooks in shipping/delivery cards +FIX: supplier discount was not retrieved when choosing a product +FIX: The minimum amount filter does not work in the VAT report per customer +FIX: Tooltip on click was ko on smartphone +FIX: translation +FIX: useless join +FIX: Vat src code lost after editing expense report line +FIX: we need to keep originline special_code +FIX: Can't insert if there is extrafields mandatory on another entity. +FIX: error in create object when 2 extra fields are mandatory in 2 different entities +FIX: when we create deposit with multi tva, we mustn't add line if amount = 0 (example when we have a 100% reduc on one of origin invoice line) +FIX: wrong redirect link on holiday refuse +NEW: Add more complete error messages in log on stripe payments + ***** ChangeLog for 9.0.1 compared to 9.0.0 ***** FIX: #10381 FIX: #10460 compatibility with MariaDB 10.4 diff --git a/htdocs/accountancy/bookkeeping/thirdparty_lettering_customer.php b/htdocs/accountancy/bookkeeping/thirdparty_lettering_customer.php index 1a91f2dafbb..7844bea0896 100644 --- a/htdocs/accountancy/bookkeeping/thirdparty_lettering_customer.php +++ b/htdocs/accountancy/bookkeeping/thirdparty_lettering_customer.php @@ -150,6 +150,7 @@ if (dol_strlen($search_year)) { $sql .= " AND ( bk.doc_date BETWEEN '" . $db->idate($date_start) . "' AND '" . $db->idate($date_end) . "' )"; } +$sql.= ' AND bk.entity IN ('.getEntity('accountingbookkeeping').')'; $sql .= $db->order($sortfield, $sortorder); $debit = 0; diff --git a/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php b/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php index df1d4317252..9b8d7b684e5 100644 --- a/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php +++ b/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php @@ -142,13 +142,12 @@ $sql .= " bk.subledger_account, bk.numero_compte , bk.label_compte, bk.debit, "; $sql .= " bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num, bk.lettering_code "; $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk"; $sql .= " WHERE (bk.subledger_account = '" . $object->code_compta_fournisseur . "' AND bk.numero_compte = '" . $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER . "' )"; - if (dol_strlen($search_year)) { $date_start = dol_mktime(0, 0, 0, 1, 1, $search_year); $date_end = dol_mktime(23, 59, 59, 12, 31, $search_year); $sql .= " AND ( bk.doc_date BETWEEN '".$db->idate($date_start)."' AND '".$db->idate($date_end)."' )"; } - +$sql.= ' AND bk.entity IN ('.getEntity('accountingbookkeeping').')'; $sql.= $db->order($sortfield, $sortorder); $debit = 0; diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index 2108cb82eef..812d1b9eccf 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -894,7 +894,7 @@ if ($id > 0 || ! empty($ref)) print $langs->trans("WarehouseSource"); //print ''; //print ''; - print $formproduct->selectWarehouses(! empty($object->warehouse_id)?$object->warehouse_id:-1, 'entrepot_id', '', 1, 0, 0, '', 0, 0, array(), 'minwidth200'); + print $formproduct->selectWarehouses(! empty($object->warehouse_id)?$object->warehouse_id:'ifone', 'entrepot_id', '', 1, 0, 0, '', 0, 0, array(), 'minwidth200'); if (count($formproduct->cache_warehouses) <= 0) { print '   '.$langs->trans("WarehouseSourceNotDefined").' '.$langs->trans("AddOne").''; diff --git a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql index fd33f50f7af..9bd74119d34 100644 --- a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql +++ b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql @@ -286,4 +286,5 @@ DELETE from llx_accounting_account where rowid in (select minid from tmp_llx_acc ALTER TABLE llx_accounting_account DROP INDEX uk_accounting_account; ALTER TABLE llx_accounting_account ADD UNIQUE INDEX uk_accounting_account (account_number, entity, fk_pcg_version); +UPDATE llx_projet SET fk_opp_status = NULL WHERE fk_opp_status = -1; diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index 3f059cd8694..52028ac7160 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -51,6 +51,8 @@ if ($mode == 'mine') $mine=1; $projectid=''; $projectid=isset($_GET["id"])?$_GET["id"]:$_POST["projectid"]; +$hookmanager->initHooks(array('timesheetperdaycard')); + // Security check $socid=0; // For external user, no check is done on company because readability is managed by public status of project and assignement. diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index ba3f6a5b608..80745b5d352 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -51,6 +51,8 @@ if ($mode == 'mine') $mine=1; $projectid=''; $projectid=isset($_GET["id"])?$_GET["id"]:$_POST["projectid"]; +$hookmanager->initHooks(array('timesheetperweekcard')); + // Security check $socid=0; // For external user, no check is done on company because readability is managed by public status of project and assignement. diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 5786b390a09..779666b4b9d 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -226,7 +226,7 @@ class Project extends CommonObject $sql.= ", " . ($this->socid > 0 ? $this->socid : "null"); $sql.= ", " . $user->id; $sql.= ", ".(is_numeric($this->statut) ? $this->statut : '0'); - $sql.= ", ".(is_numeric($this->opp_status) ? $this->opp_status : 'NULL'); + $sql.= ", ".((is_numeric($this->opp_status) && $this->opp_status > 0) ? $this->opp_status : 'NULL'); $sql.= ", ".(is_numeric($this->opp_percent) ? $this->opp_percent : 'NULL'); $sql.= ", " . ($this->public ? 1 : 0); $sql.= ", '".$this->db->idate($now)."'"; diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index e90a3330403..c18a5324726 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -277,7 +277,6 @@ if ($resql) else dol_print_error($db); if (count($listofprojectcontacttype) == 0) $listofprojectcontacttype[0]='0'; // To avoid sql syntax error if not found - $distinct='DISTINCT'; // We add distinct until we are added a protection to be sure a contact of a project and task is only once. $sql = "SELECT ".$distinct." p.rowid as id, p.ref, p.title, p.fk_statut, p.fk_opp_status, p.public, p.fk_user_creat"; $sql.= ", p.datec as date_creation, p.dateo as date_start, p.datee as date_end, p.opp_amount, p.opp_percent, p.tms as date_update, p.budget_amount, p.bill_time"; @@ -351,10 +350,10 @@ if ($search_status >= 0) if ($search_opp_status) { if (is_numeric($search_opp_status) && $search_opp_status > 0) $sql .= " AND p.fk_opp_status = ".$db->escape($search_opp_status); - if ($search_opp_status == 'all') $sql .= " AND p.fk_opp_status IS NOT NULL"; - if ($search_opp_status == 'openedopp') $sql .= " AND p.fk_opp_status IS NOT NULL AND p.fk_opp_status NOT IN (SELECT rowid FROM ".MAIN_DB_PREFIX."c_lead_status WHERE code IN ('WON','LOST'))"; - if ($search_opp_status == 'notopenedopp') $sql .= " AND (p.fk_opp_status IS NULL OR p.fk_opp_status IN (SELECT rowid FROM ".MAIN_DB_PREFIX."c_lead_status WHERE code IN ('WON')))"; - if ($search_opp_status == 'none') $sql .= " AND p.fk_opp_status IS NULL"; + if ($search_opp_status == 'all') $sql .= " AND (p.fk_opp_status IS NOT NULL AND p.fk_opp_status <> -1)"; + if ($search_opp_status == 'openedopp') $sql .= " AND p.fk_opp_status IS NOT NULL AND p.fk_opp_status <> -1 AND p.fk_opp_status NOT IN (SELECT rowid FROM ".MAIN_DB_PREFIX."c_lead_status WHERE code IN ('WON','LOST'))"; + if ($search_opp_status == 'notopenedopp') $sql .= " AND (p.fk_opp_status IS NULL OR p.fk_opp_status = -1 OR p.fk_opp_status IN (SELECT rowid FROM ".MAIN_DB_PREFIX."c_lead_status WHERE code IN ('WON')))"; + if ($search_opp_status == 'none') $sql .= " AND (p.fk_opp_status IS NULL OR p.fk_opp_status = -1)"; } if ($search_public!='') $sql .= " AND p.public = ".$db->escape($search_public); // For external user, no check is done on company permission because readability is managed by public status of project and assignement.