diff --git a/ChangeLog b/ChangeLog
index 18e2b1cdc72..3c92aa71c1d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -32,6 +32,48 @@ Following changes may create regressions for some external modules, but were nec
* Tables llx_prelevement_facture and llx_prelevement_facture_demande have been renamed into llx_prelevement and llx_prelevement_demande.
+
+***** ChangeLog for 16.0.2 compared to 16.0.1 *****
+
+FIX: 16.0 - computed extrafields are not displayed if the object has no other extrafields
+FIX: #22538
+FIX: Accountancy - Review of Winfic - eWinfic - Winsis compta export format
+FIX: add loadRoleMode on getlinearray
+FIX: Autosearch on takepos was broken
+FIX: avoid access forbidden with numeric ref
+FIX: avoid error, check of product fetch is already check before
+FIX: avoid error, fetch of product is mandatory (by id or by ref)
+FIX: avoid unnecessary multiple calculation (#22637)
+FIX: bug on selected value for select_bom() function
+FIX: can not set prospect status "Do not contact"
+FIX: change in the communication status of the prospect
+FIX: check $id, already checked before
+FIX: closed warehouse for shipping
+FIX: extrafields_add tpl for stock movement
+FIX: the request SQL for transversal user, the join on usergroup table must be with getEntity('usergroup')
+FIX: Import of contact when there is duplicate thirdparties
+FIX: Import of socialnetwork field
+FIX: input selector is wrong with PRODUCT_LOAD_EXTRAFIELD_INTO_OBJECTLINES usage
+FIX: install wizard error management
+FIX: just add integer
+FIX: Missing $object for online signature link build
+FIX: missing quote
+FIX: only modify hidden checkbox/multislected extrafields on update if they are provided in request
+FIX: php doc
+FIX: private message ticket become public if edit action
+FIX: remove > 0 and -1
+FIX: remove db object to avoid error with postgresql
+FIX: Search ambigous field on MO list
+FIX: Search on social networks
+FIX: Subscription must be stopped when max of attendees reached.
+FIX: supplier price update: missing error reporting
+FIX: travis & stickler feedbacks
+FIX: we must be able to select only bom of a specific product + several fixes on select_bom() function
+FIX: wrong perm check
+FIX: wrong typo, remove quote
+FIX: wrong var typo
+
+
***** ChangeLog for 16.0.1 compared to 16.0.0 *****
FIX: #16476 on massaction the pdf generation is not using the t…
diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php
index bd7d6273848..628dceafd12 100644
--- a/htdocs/accountancy/index.php
+++ b/htdocs/accountancy/index.php
@@ -113,15 +113,17 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S
';
}
-
print load_fiche_titre($langs->trans("AccountancyArea"), $resultboxes['selectboxlist'], 'accountancy', 0, '', '', $showtutorial);
+ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_SITUATION == 1) {
+ print info_admin($langs->trans("SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices"));
+ print "
";
+ }
+
print '
| '.$langs->trans("Parameter").' | '.$langs->trans("Value").' |
| '.$langs->trans("Parameter").' |
| '.$langs->trans("LastMovements", min($num, $max)).' | '; print ''.$langs->trans("Product").' | '; if (isModEnabled('productbatch')) { @@ -202,7 +202,7 @@ if ($resql) { print '||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| '.img_picto($langs->trans("Ref").' '.$objp->mid, 'movement', 'class="pictofixedwidth"').dol_print_date($db->jdate($objp->datem), 'dayhour').' | '; - print ''; + print ' | '; print $producttmp->getNomUrl(1); print " | \n"; if (isModEnabled('productbatch')) { @@ -216,7 +216,7 @@ if ($resql) { print ''.dol_print_date($db->jdate($objp->eatby), 'day').' | '; }*/ } - print ''; + print ' | '; print $warehouse->getNomUrl(1); print " | \n"; print '';
diff --git a/htdocs/product/stock/massstockmove.php b/htdocs/product/stock/massstockmove.php
index 0c41cbed44a..df0eb013397 100644
--- a/htdocs/product/stock/massstockmove.php
+++ b/htdocs/product/stock/massstockmove.php
@@ -1,5 +1,5 @@
+/* Copyright (C) 2013-2022 Laurent Destaileur '; print ' '; @@ -569,25 +581,25 @@ $param = ''; print ' ';
+print ' | ';
print img_picto($langs->trans("WarehouseSource"), 'stock', 'class="paddingright"').$formproduct->selectWarehouses($id_sw, 'id_sw', 'warehouseopen,warehouseinternal', 1, 0, 0, '', 0, 0, array(), 'minwidth200imp maxwidth200');
print ' | ';
// To warehouse
-print '';
+print ' | ';
print img_picto($langs->trans("WarehouseTarget"), 'stock', 'class="paddingright"').$formproduct->selectWarehouses($id_tw, 'id_tw', 'warehouseopen,warehouseinternal', 1, 0, 0, '', 0, 0, array(), 'minwidth200imp maxwidth200');
print ' | ';
// Product
-print '';
+print ' | ';
$filtertype = 0;
if (!empty($conf->global->STOCK_SUPPORTS_SERVICES)) {
$filtertype = '';
@@ -603,13 +615,13 @@ print $form->select_produits($id_product, 'productid', $filtertype, $limit, 0, -
print ' | ';
// Batch number
if (isModEnabled('productbatch')) {
- print '';
+ print ' | ';
print img_picto($langs->trans("LotSerial"), 'lot', 'class="paddingright"');
- print '';
+ print '';
print ' | ';
}
// Qty
-print '';
+print ' | ';
// Button to add line
print ' | ';
@@ -617,18 +629,25 @@ print ' | ';
- print $warehousestatics->getNomUrl(1);
+ if ($warehousestatics->id > 0) {
+ print $warehousestatics->getNomUrl(1);
+ } else {
+ print '';
+ print $langs->trans("None");
+ print '';
+ }
print ' | ';
print '';
print $warehousestatict->getNomUrl(1);
@@ -649,7 +674,7 @@ foreach ($listofdata as $key => $val) {
print dol_escape_htmltag($val['batch']);
print ' | ';
}
- print ''.price2num((float) $val['qty'], 'MS').' | ';
+ print ''.price2num((float) $val['qty'], 'MS').' | ';
print ''.img_delete($langs->trans("Remove")).' | ';
print '';
print ''.$langs->trans("InventoryCode").': ';
@@ -696,6 +721,7 @@ if ($action == 'delete') {
llxFooter();
$db->close();
+
/**
* Verify if $haystack startswith $needle
*
diff --git a/htdocs/product/stock/movement_list.php b/htdocs/product/stock/movement_list.php
index 171ee79be9d..56030347d12 100644
--- a/htdocs/product/stock/movement_list.php
+++ b/htdocs/product/stock/movement_list.php
@@ -600,7 +600,6 @@ if (!empty($conf->project->enabled)) {
}
// Build and execute select
-// --------------------------------------------------------------------
$sql = "SELECT p.rowid, p.ref as product_ref, p.label as produit, p.tosell, p.tobuy, p.tobatch, p.fk_product_type as type, p.entity,";
$sql .= " e.ref as warehouse_ref, e.rowid as entrepot_id, e.lieu, e.fk_parent, e.statut,";
$sql .= " m.rowid as mid, m.value as qty, m.datem, m.fk_user_author, m.label, m.inventorycode, m.fk_origin, m.origintype,";
@@ -691,32 +690,6 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php';
$parameters = array();
$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook
$sql .= $hookmanager->resPrint;
-
-/* If a group by is required
- $sql .= " GROUP BY ";
- foreach($object->fields as $key => $val) {
- $sql .= "t.".$key.", ";
- }
- // Add fields from extrafields
- if (!empty($extrafields->attributes[$object->table_element]['label'])) {
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
- $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.', ' : '');
- }
- }
- // Add where from hooks
- $parameters = array();
- $reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters, $object); // Note that $action and $object may have been modified by hook
- $sql .= $hookmanager->resPrint;
- $sql = preg_replace('/,\s*$/', '', $sql);
- */
-
-// Add HAVING from hooks
-/*
- $parameters = array();
- $reshook = $hookmanager->executeHooks('printFieldListHaving', $parameters, $object); // Note that $action and $object may have been modified by hook
- $sql .= empty($hookmanager->resPrint) ? "" : " HAVING 1=1 ".$hookmanager->resPrint;
- */
-
// Count total nb of records
$nbtotalofrecords = '';
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
@@ -1369,7 +1342,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) {
print ' ';
+ print ' | ';
print img_picto($langs->trans("StockMovement"), 'movement', 'class="pictofixedwidth"');
print $obj->mid;
print ' | '; // This is primary not movement id
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index dd184bb1f3d..1d1ad691505 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -1325,7 +1325,7 @@ while ($i < $imaxinloop) {
}
// Sales Representatives
if (!empty($arrayfields['commercial']['checked'])) {
- print '';
+ print ' | ';
if ($obj->socid) {
$companystatic->id = $obj->socid;
$companystatic->name = $obj->name;
diff --git a/htdocs/public/eventorganization/attendee_new.php b/htdocs/public/eventorganization/attendee_new.php
index 8d7e4503c6b..b4f6ee14217 100644
--- a/htdocs/public/eventorganization/attendee_new.php
+++ b/htdocs/public/eventorganization/attendee_new.php
@@ -104,14 +104,16 @@ if ($type == 'global') {
$errmsg .= $project->error;
$errors = array_merge($errors, $project->errors);
} else {
- $sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."projet";
- $sql .= " WHERE ".MAIN_DB_PREFIX."eventorganization_conferenceorboothattendee = ".((int) $project->id);
+ $sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."eventorganization_conferenceorboothattendee";
+ $sql .= " WHERE fk_project = ".((int) $project->id);
- $resql = $db->query($resql);
+ $resql = $db->query($sql);
if ($resql) {
$obj = $db->fetch_object($resql);
if ($obj) {
$currentnbofattendees = $obj->nb;
+ } else {
+ dol_print_error($db);
}
}
}
diff --git a/htdocs/public/ticket/create_ticket.php b/htdocs/public/ticket/create_ticket.php
index 862f50d88a9..43c2e7bbd78 100644
--- a/htdocs/public/ticket/create_ticket.php
+++ b/htdocs/public/ticket/create_ticket.php
@@ -163,8 +163,17 @@ if (empty($reshook)) {
// Le premier contact trouvé est utilisé pour déterminer le contact suivi
$contacts = $object->searchContactByEmail($origin_email);
+ // Ensure that contact is active and select first active contact
+ $cid = -1;
+ foreach ($contacts as $key => $contact) {
+ if ((int) $contact->statut == 1) {
+ $cid = $key;
+ break;
+ }
+ }
+
// Option to require email exists to create ticket
- if (!empty($conf->global->TICKET_EMAIL_MUST_EXISTS) && !$contacts[0]->socid) {
+ if (!empty($conf->global->TICKET_EMAIL_MUST_EXISTS) && ($cid < 0 || empty($contacts[$cid]->socid))) {
$error++;
array_push($object->errors, $langs->trans("ErrorEmailMustExistToCreateTicket"));
$action = '';
@@ -314,9 +323,9 @@ if (empty($reshook)) {
$object->fk_soc = $searched_companies[0]->id;
}
- if (is_array($contacts) && count($contacts) > 0) {
- $object->fk_soc = $contacts[0]->socid;
- $usertoassign = $contacts[0]->id;
+ if (is_array($contacts) && count($contacts) > 0 && $cid >= 0) {
+ $object->fk_soc = $contacts[$cid]->socid;
+ $usertoassign = $contacts[$cid]->id;
}
$ret = $extrafields->setOptionalsFromPost(null, $object);
diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php
index 58df4aaaa70..210f068af0a 100644
--- a/htdocs/reception/list.php
+++ b/htdocs/reception/list.php
@@ -1119,10 +1119,12 @@ while ($i < min($num, $limit)) {
// Type ent
if (!empty($arrayfields['typent.code']['checked'])) {
print ' | ';
- if (count($typenArray) == 0) {
+ if (!isset($typenArray) || empty($typenArray)) {
$typenArray = $formcompany->typent_array(1);
}
- print $typenArray[$obj->typent_code];
+ if (isset($typenArray[$obj->typent_code])) {
+ print $typenArray[$obj->typent_code];
+ }
print ' | ';
if (!$i) {
$totalarray['nbfield']++;
diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php
index 01f8b6329cc..dce20c35863 100644
--- a/htdocs/theme/eldy/global.inc.php
+++ b/htdocs/theme/eldy/global.inc.php
@@ -1966,7 +1966,7 @@ td.showDragHandle {
.side-nav-vert {
position: sticky;
top: 0px;
- z-index: 1001;
+ z-index: 1005;
}
global->THEME_DARKMODEENABLED)) { ?>
@@ -2536,6 +2536,12 @@ span.mainmenuaspan.tmenudisabled {
cursor: not-allowed;
}
+a.disabled {
+ color: #aaa;
+ text-decoration: none !important;
+ cursor: default;
+}
+
a.tmenu:link, a.tmenu:visited, a.tmenu:hover, a.tmenu:active {
padding: 0px 2px 0px 2px;
margin: 0px 0px 0px 0px;
@@ -5354,10 +5360,17 @@ td.cal_other_month {
/* ============================================================================== */
-/* Ajax - Liste deroulante de l'autocompletion */
+/* Ajax - Combo list for autocompletion */
/* ============================================================================== */
-.ui-widget-content { border: solid 1px rgba(0,0,0,.3); background: #fff !important; }
+.ui-widget-content {
+ border: solid 1px rgba(0,0,0,.3);
+ background: var(--colorbackbody) !important;
+ color: var(--colortext) !important;
+}
+/*.ui-widget-header {
+ background: var(--colorbacktitle);
+}*/
.ui-autocomplete-loading { background: white url() right center no-repeat; }
.ui-autocomplete {
@@ -6454,7 +6467,7 @@ ul.select2-results__options li {
min-width: 220px !important;
}
.onrightofpage span.select2-dropdown.ui-dialog.select2-dropdown--below {
- min-width: 140px !important;
+ min-width: 140px !important;
}
.select2-container--open .select2-dropdown--below {
diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php
index daa3ff1da21..b860e69abba 100644
--- a/htdocs/theme/eldy/info-box.inc.php
+++ b/htdocs/theme/eldy/info-box.inc.php
@@ -297,17 +297,17 @@ if (GETPOSTISSET('THEME_SATURATE_RATIO')) {
}
.member-company-back {
padding: 2px 7px 2px 7px;
- background-color: #e4e4e4;
- color: #666;
- border-radius: 10px;
- white-space: nowrap;
+ background-color: #e4e4e4;
+ color: #666;
+ border-radius: 10px;
+ white-space: nowrap;
}
.member-individual-back {
padding: 2px 7px 2px 7px;
- background-color: #e4e4e4;
- color: #666;
- border-radius: 10px;
- white-space: nowrap;
+ background-color: #e4e4e4;
+ color: #666;
+ border-radius: 10px;
+ white-space: nowrap;
}
diff --git a/htdocs/theme/md/info-box.inc.php b/htdocs/theme/md/info-box.inc.php
index e2733acc2bc..c48a9d537a8 100644
--- a/htdocs/theme/md/info-box.inc.php
+++ b/htdocs/theme/md/info-box.inc.php
@@ -50,17 +50,17 @@ if (GETPOSTISSET('THEME_SATURATE_RATIO')) {
}
.member-company-back {
padding: 2px 7px 2px 7px;
- background-color: #e4e4e4;
- color: #666;
- border-radius: 10px;
- white-space: nowrap;
+ background-color: #e4e4e4;
+ color: #666;
+ border-radius: 10px;
+ white-space: nowrap;
}
.member-individual-back {
padding: 2px 7px 2px 7px;
- background-color: #e4e4e4;
- color: #666;
- border-radius: 10px;
- white-space: nowrap;
+ background-color: #e4e4e4;
+ color: #666;
+ border-radius: 10px;
+ white-space: nowrap;
}
.bg-infobox-project{
diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php
index 6a21b5a6812..4a56c179b13 100644
--- a/htdocs/theme/md/style.css.php
+++ b/htdocs/theme/md/style.css.php
@@ -2118,7 +2118,7 @@ body.sidebar-collapse .side-nav, body.sidebar-collapse .login_block
.side-nav-vert {
position: sticky;
top: 0px;
- z-index: 1001;
+ z-index: 1005;
}
@@ -2586,6 +2586,12 @@ span.mainmenuaspan.tmenudisabled {
cursor: not-allowed;
}
+a.disabled {
+ color: #aaa;
+ text-decoration: none !important;
+ cursor: default;
+}
+
a.tmenu:link, a.tmenu:visited, a.tmenu:hover, a.tmenu:active {
font-weight: normal;
padding: 0px 5px 0px 5px;
@@ -5188,10 +5194,14 @@ td.cal_other_month {
/* ============================================================================== */
-/* Ajax - Liste deroulante de l'autocompletion */
+/* Ajax - Combo list for autocompletion */
/* ============================================================================== */
-.ui-widget-content { border: solid 1px rgba(0,0,0,.3); background: #fff !important; }
+.ui-widget-content {
+ border: solid 1px rgba(0,0,0,.3);
+ background: var(--colorbackbody) !important;
+ color: var(--colortext) !important;
+}
.ui-autocomplete-loading { background: white url() right center no-repeat; }
.ui-autocomplete {
@@ -6222,7 +6232,7 @@ ul.select2-results__options li {
min-width: 220px !important;
}
.onrightofpage span.select2-dropdown.ui-dialog.select2-dropdown--below {
- min-width: 140px !important;
+ min-width: 140px !important;
}
.select2-container--open .select2-dropdown--below {
diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php
index 6e21c91d810..d49f810f915 100644
--- a/htdocs/user/class/user.class.php
+++ b/htdocs/user/class/user.class.php
@@ -717,6 +717,7 @@ class User extends CommonObject
'shipping' => 'expedition',
'task' => 'task@projet',
'fichinter' => 'ficheinter',
+ 'propale' => 'propal',
'inventory' => 'stock',
'invoice' => 'facture',
'invoice_supplier' => 'fournisseur',
|