'.$langs->trans("Message").' ';
- if ($user->rights->ticket->write && !$user->socid) {
+ if ($user->hasRight("ticket", "write") && !$user->socid) {
$texttooltip = $langs->trans("TicketMessageHelp");
if (getDolGlobalString('TICKET_MESSAGE_MAIL_INTRO') || getDolGlobalString('TICKET_MESSAGE_MAIL_SIGNATURE')) {
$texttooltip .= ' '.$langs->trans("ForEmailMessageWillBeCompletedWith").'...';
diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php
index c0dcc67378d..ab64d0c052a 100644
--- a/htdocs/core/class/utils.class.php
+++ b/htdocs/core/class/utils.class.php
@@ -173,6 +173,7 @@ class Utils
}
if ($count > 0) {
+ $langs->load("admin");
$this->output = $langs->trans("PurgeNDirectoriesDeleted", $countdeleted);
if ($count > $countdeleted) {
$this->output .= ' '.$langs->trans("PurgeNDirectoriesFailed", ($count - $countdeleted));
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index af4228c9777..90ce1a5b821 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -3853,10 +3853,11 @@ function isValidPhone($phone)
* @param int $nbofchar Nb of characters to keep
* @return string Return first chars.
*/
-function dolGetFirstLetters($s, $nbofchar = 1) {
+function dolGetFirstLetters($s, $nbofchar = 1)
+{
$ret = '';
$tmparray = explode(' ', $s);
- foreach($tmparray as $tmps) {
+ foreach ($tmparray as $tmps) {
$ret .= dol_substr($tmps, 0, $nbofchar);
}
@@ -5746,7 +5747,7 @@ function price($amount, $form = 0, $outlangs = '', $trunc = 1, $rounding = -1, $
if ((string) $forcerounding != '-1') {
if ($forcerounding == 'MU') {
$nbdecimal = $conf->global->MAIN_MAX_DECIMALS_UNIT;
- } else if ($forcerounding == 'MT') {
+ } elseif ($forcerounding == 'MT') {
$nbdecimal = $conf->global->MAIN_MAX_DECIMALS_TOT;
} elseif ($forcerounding >= 0) {
$nbdecimal = $forcerounding;
diff --git a/htdocs/core/lib/signature.lib.php b/htdocs/core/lib/signature.lib.php
index 9cc8f1f03a9..d26b20219ff 100644
--- a/htdocs/core/lib/signature.lib.php
+++ b/htdocs/core/lib/signature.lib.php
@@ -59,7 +59,7 @@ function showOnlineSignatureUrl($type, $ref)
*/
function getOnlineSignatureUrl($mode, $type, $ref = '', $localorexternal = 1)
{
- global $conf, $db, $langs, $dolibarr_main_url_root;
+ global $conf, $object, $dolibarr_main_url_root;
$ref = str_replace(' ', '', $ref);
$out = '';
diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
index 3d7da995e6f..39d833de6cc 100644
--- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
+++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php
@@ -1176,6 +1176,18 @@ class pdf_crabe extends ModelePDFFactures
$posy = $pdf->GetY();
}
+ // Show if Option VAT debit option is on also if transmitter is french
+ // Decret n°2099-1299 2022-10-07
+ // French mention : "Option pour le paiement de la taxe d'après les débits"
+ if ($this->emetteur->country_code == 'FR') {
+ if ($conf->global->TAX_MODE == 1) {
+ $pdf->SetXY($this->marge_gauche, $posy);
+ $pdf->writeHTMLCell(80, 5, '', '', $outputlangs->transnoentities("MentionVATDebitOptionIsOn"), 0, 1);
+
+ $posy = $pdf->GetY() + 1;
+ }
+ }
+
// Show online payment link
if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'CB' || $object->mode_reglement_code == 'VAD') {
$useonlinepayment = 0;
diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
index da278cb45ac..e11cd90bc43 100644
--- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
+++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php
@@ -1259,7 +1259,7 @@ class pdf_sponge extends ModelePDFFactures
$posy = $pdf->GetY() + 1;
}
- // Show payment mode
+ // Show payment mode
if (!empty($object->mode_reglement_code)
&& $object->mode_reglement_code != 'CHQ'
&& $object->mode_reglement_code != 'VIR') {
@@ -1286,7 +1286,19 @@ class pdf_sponge extends ModelePDFFactures
$posy = $pdf->GetY();
}
- // Show online payment link
+ // Show if Option VAT debit option is on also if transmitter is french
+ // Decret n°2099-1299 2022-10-07
+ // French mention : "Option pour le paiement de la taxe d'après les débits"
+ if ($this->emetteur->country_code == 'FR') {
+ if ($conf->global->TAX_MODE == 1) {
+ $pdf->SetXY($this->marge_gauche, $posy);
+ $pdf->writeHTMLCell(80, 5, '', '', $outputlangs->transnoentities("MentionVATDebitOptionIsOn"), 0, 1);
+
+ $posy = $pdf->GetY() + 1;
+ }
+ }
+
+ // Show online payment link
if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'CB' || $object->mode_reglement_code == 'VAD') {
$useonlinepayment = 0;
if (!empty($conf->global->PDF_SHOW_LINK_TO_ONLINE_PAYMENT)) {
diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php
index 1e48fc4d5a0..7657fe21e96 100644
--- a/htdocs/core/tpl/massactions_pre.tpl.php
+++ b/htdocs/core/tpl/massactions_pre.tpl.php
@@ -113,6 +113,44 @@ if ($massaction == 'presetsupervisor') {
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmSetSupervisor"), $langs->trans("ConfirmSetSupervisorQuestion", count($toselect)), "setsupervisor", $formquestion, 1, 0, 200, 500, 1);
}
+if ($massaction == 'preaffectuser') {
+ $formquestion = array();
+
+ $valuefielduser = '';
+ $valuefielduser .= img_picto('', 'user').' ';
+ $valuefielduser .= $form->select_dolusers('', 'usertoaffect', 1, $arrayofselected, 0, '', 0, $object->entity, 0, 0, '', 0, '', 'widthcentpercentminusx maxwidth300');
+ $valuefielduser .= '
';
+
+ $valuefieldprojrole = '';
+ $valuefieldprojrole .= $formcompany->selectTypeContact($object, '', 'projectrole', 'internal', 'position', 0, 'widthcentpercentminusx maxwidth300', 0);
+ $valuefieldprojrole .= '
';
+
+ $valuefieldtasksrole = '';
+ $valuefieldtasksrole .= $formcompany->selectTypeContact($taskstatic, '', 'tasksrole', 'internal', 'position', 0, 'widthcentpercentminusx maxwidth300', 0);
+ $valuefieldtasksrole .= '
';
+
+ $formquestion[] = array(
+ 'type' => 'other',
+ 'name' => 'usertoaffect',
+ 'label' => $langs->trans("User"),
+ 'value' => $valuefielduser
+ );
+ $formquestion[] = array(
+ 'type' => 'other',
+ 'name' => 'projectrole',
+ 'label' => $langs->trans("ProjectRole"),
+ 'value' => $valuefieldprojrole
+ );
+
+ $formquestion[] = array(
+ 'type' => 'other',
+ 'name' => 'tasksrole',
+ 'label' => $langs->trans("TasksRole"),
+ 'value' => $valuefieldtasksrole
+ );
+
+ print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmAffectUser"), $langs->trans("ConfirmAffectUserQuestion", count($toselect)), "affectuser", $formquestion, 1, 0, 200, 500, 1);
+}
if ($massaction == 'presend') {
$langs->load("mails");
diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php
index 3f4df8b847b..ab7b13aba90 100644
--- a/htdocs/ecm/class/ecmfiles.class.php
+++ b/htdocs/ecm/class/ecmfiles.class.php
@@ -751,7 +751,13 @@ class EcmFiles extends CommonObject
}
// If you need to delete child tables to, you can insert them here
-
+ if (!$error) {
+ $result = $this->deleteExtraFields();
+ if (!$result) {
+ dol_syslog(get_class($this)."::delete error ".$this->error, LOG_ERR);
+ $error++;
+ }
+ }
if (!$error) {
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element;
$sql .= ' WHERE rowid='.((int) $this->id);
diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php
index 3a7eebbffac..910b56ddae4 100644
--- a/htdocs/filefunc.inc.php
+++ b/htdocs/filefunc.inc.php
@@ -34,7 +34,7 @@ if (!defined('DOL_APPLICATION_TITLE')) {
define('DOL_APPLICATION_TITLE', 'Dolibarr');
}
if (!defined('DOL_VERSION')) {
- define('DOL_VERSION', '17.0.0-alpha'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c
+ define('DOL_VERSION', '17.0.0-beta'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c
}
if (!defined('EURO')) {
diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang
index d2ae1e7f7a1..e988764d8ba 100644
--- a/htdocs/langs/en_US/accountancy.lang
+++ b/htdocs/langs/en_US/accountancy.lang
@@ -336,6 +336,7 @@ NumberOfAccountancyMovements=Number of movements
ACCOUNTING_DISABLE_BINDING_ON_SALES=Disable binding & transfer in accountancy on sales (customer invoices will not be taken into account in accounting)
ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disable binding & transfer in accountancy on purchases (vendor invoices will not be taken into account in accounting)
ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accountancy on expense reports (expense reports will not be taken into account in accounting)
+ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting
## Export
NotExportLettering=Do not export the lettering when generating the file
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index eb03e174525..af1fd5f0066 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -2338,3 +2338,4 @@ DesktopsOnly=Desktops only
DesktopsAndSmartphones=Desktops et smartphones
AllowOnlineSign=Allow online signing
AllowExternalDownload=Allow external download (without login, using a shared link)
+DeadlineDayVATSubmission=Deadline day for vat submission on the next month
diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang
index f13baf06446..2551f92af53 100644
--- a/htdocs/langs/en_US/bills.lang
+++ b/htdocs/langs/en_US/bills.lang
@@ -625,3 +625,4 @@ PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to pa
SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices
MakePaymentAndClassifyPayed=Record payment
BulkPaymentNotPossibleForInvoice=Bulk payment is not possible for invoice %s (bad type or status)
+MentionVATDebitOptionIsOn=Option to pay tax based on debits
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index 6f849e39be1..2b86c2d3e65 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -1146,12 +1146,17 @@ UpdateForAllLines=Update for all lines
OnHold=On hold
Civility=Civility
AffectTag=Affect Tag
+AffectUser=Affect User
SetSupervisor=Set Supervisor
CreateExternalUser=Create external user
ConfirmAffectTag=Bulk Tag Affect
+ConfirmAffectUser=Bulk User Affect
+ProjectRole=Role assigned on each project
+TasksRole=Role assigned on each task of each project
ConfirmSetSupervisor=Bulk Supervisor Set
ConfirmUpdatePrice=Choose a increase/decrease price rate
ConfirmAffectTagQuestion=Are you sure you want to affect tags to the %s selected record(s)?
+ConfirmAffectUserQuestion=Are you sure you want to affect users to the %s selected record(s)?
ConfirmSetSupervisorQuestion=Are you sure you want to set supervisor to the %s selected record(s)?
ConfirmUpdatePriceQuestion=Are you sure you want to update the price of the %s selected record(s)?
CategTypeNotFound=No tag type found for type of records
diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang
index 39d857ae0e8..eb787cb279d 100644
--- a/htdocs/langs/fr_FR/main.lang
+++ b/htdocs/langs/fr_FR/main.lang
@@ -1146,13 +1146,18 @@ UpdateForAllLines=Mise à jour de toutes les lignes
OnHold=En attente
Civility=Civilité
AffectTag=Affecter un tag/catégorie
+AffectUser=Affecter un utilisateur
SetSupervisor=Choisir un superviseur
CreateExternalUser=Créer utilisateur externe
ConfirmAffectTag=Affecter les tags en masse
ConfirmSetSupervisor=Choisir un superviseur en masse
+ConfirmAffectUser=Affecter les utilisateurs en masse
+ProjectRole=Role attribué pour chaque projet
+TasksRole=Role attribué pour chaque tâche de chaque projet
ConfirmUpdatePrice=Choisir un pourcentage de hausse/baisse des prix
ConfirmAffectTagQuestion=Êtes-vous sur de vouloir affecter ces catégories aux %s lignes sélectionnées ?
ConfirmSetSupervisorQuestion=Êtes-vous sur de vouloir affecter ce superviseur aux %s lignes sélectionnées ?
+ConfirmAffectUserQuestion=Êtes-vous sur de vouloir affecter cet utilisateur aux %s lignes sélectionnées ?
ConfirmUpdatePriceQuestion=Êtes-vous sur de vouloir mettre à jour les prix des %s lignes sélectionnées ?
CategTypeNotFound=Aucun type de tag trouvé pour ce type d'enregistrements
Rate=Taux
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index d3a5a203487..dd184bb1f3d 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -35,6 +35,8 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
+require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
if (isModEnabled('categorie')) {
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcategory.class.php';
@@ -355,8 +357,10 @@ if (empty($reshook)) {
*/
$form = new Form($db);
+$formcompany = new FormCompany($db);
$companystatic = new Societe($db);
+$taskstatic = new Task($db);
$formother = new FormOther($db);
$formproject = new FormProjets($db);
@@ -802,6 +806,7 @@ $arrayofmassactions = array(
//if($user->rights->societe->creer) $arrayofmassactions['createbills']=$langs->trans("CreateInvoiceForThisCustomer");
if ($user->rights->projet->creer) {
$arrayofmassactions['close'] = img_picto('', 'close_title', 'class="pictofixedwidth"').$langs->trans("Close");
+ $arrayofmassactions['preaffectuser'] = img_picto('', 'user', 'class="pictofixedwidth"').$langs->trans("AffectUser");
}
if ($user->rights->projet->supprimer) {
$arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete");
@@ -809,7 +814,7 @@ if ($user->rights->projet->supprimer) {
if (isModEnabled('category') && $user->rights->projet->creer) {
$arrayofmassactions['preaffecttag'] = img_picto('', 'category', 'class="pictofixedwidth"').$langs->trans("AffectTag");
}
-if (in_array($massaction, array('presend', 'predelete', 'preaffecttag'))) {
+if (in_array($massaction, array('presend', 'predelete', 'preaffecttag', 'preaffectuser'))) {
$arrayofmassactions = array();
}
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 50f5a8776c2..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 = '';
@@ -310,13 +319,13 @@ if (empty($reshook)) {
}
}
- if (is_array($searched_companies)) {
+ if (!empty($searched_companies) && is_array($searched_companies)) {
$object->fk_soc = $searched_companies[0]->id;
}
- if (is_array($contacts) and 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);
@@ -329,7 +338,7 @@ if (empty($reshook)) {
if ($nb_post_max > 0 && $nb_post_ip >= $nb_post_max) {
$error++;
$errors = array($langs->trans("AlreadyTooMuchPostOnThisIPAdress"));
- array_push($object->errors, array($langs->trans("AlreadyTooMuchPostOnThisIPAdress")));
+ array_push($object->errors, $langs->trans("AlreadyTooMuchPostOnThisIPAdress"));
$action = 'create_ticket';
}
diff --git a/htdocs/public/ticket/list.php b/htdocs/public/ticket/list.php
index 3fe6253b879..c929c2486bd 100644
--- a/htdocs/public/ticket/list.php
+++ b/htdocs/public/ticket/list.php
@@ -62,6 +62,8 @@ $cancel = GETPOST('cancel', 'aZ09');
$track_id = GETPOST('track_id', 'alpha');
$email = strtolower(GETPOST('email', 'alpha'));
+$suffix = "";
+$moreforfilter = "";
if (GETPOST('btn_view_ticket_list')) {
unset($_SESSION['track_id_customer']);
@@ -364,7 +366,7 @@ if ($action == "view_ticketlist") {
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."element_contact as ec ON ec.element_id = t.rowid";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_type_contact as tc ON ec.fk_c_type_contact = tc.rowid";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople sp ON ec.fk_socpeople = sp.rowid";
- if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
+ if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."ticket_extrafields as ef on (t.rowid = ef.fk_object)";
}
$sql .= " WHERE t.entity IN (".getEntity('ticket').")";
@@ -736,7 +738,7 @@ if ($action == "view_ticketlist") {
print '';
print ''.$langs->trans('Email').' ';
- print ' ';
+ print ' ';
print '
';
print '';
diff --git a/htdocs/public/ticket/view.php b/htdocs/public/ticket/view.php
index bab3c501ca3..edf2504fb0c 100644
--- a/htdocs/public/ticket/view.php
+++ b/htdocs/public/ticket/view.php
@@ -63,6 +63,7 @@ $cancel = GETPOST('cancel', 'aZ09');
$track_id = GETPOST('track_id', 'alpha');
$email = GETPOST('email', 'email');
+$suffix = "";
if (GETPOST('btn_view_ticket')) {
unset($_SESSION['email_customer']);
@@ -205,7 +206,7 @@ if ($action == "view_ticket" || $action == "presend" || $action == "close" || $a
$triggersendname = 'TICKET_SENTBYMAIL';
$paramname = 'id';
$autocopy = 'MAIN_MAIL_AUTOCOPY_TICKET_TO'; // used to know the automatic BCC to add
-$trackid = 'tic'.$object->id;
+if (!empty($object->id)) $trackid = 'tic'.$object->id;
include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';
@@ -401,7 +402,7 @@ if ($action == "view_ticket" || $action == "presend" || $action == "close" || $a
print '
';
print ''.$langs->trans('Email').' ';
- print ' ';
+ print ' ';
print '
';
print '';
diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php
index 86df18dfb37..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)) { ?>
@@ -5360,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 {
@@ -6460,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 3abb4e8773e..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;
}
@@ -5194,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 {
@@ -6228,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/ticket/class/actions_ticket.class.php b/htdocs/ticket/class/actions_ticket.class.php
index 133fb72e7f2..c5e267fddf6 100644
--- a/htdocs/ticket/class/actions_ticket.class.php
+++ b/htdocs/ticket/class/actions_ticket.class.php
@@ -199,7 +199,7 @@ class ActionsTicket
print '
';
print $langs->trans("InitialMessage");
print ' ';
- if ($user->rights->ticket->manage) {
+ if ($user->hasRight("ticket", "manage")) {
print ''.img_edit($langs->trans('Modify')).' ';
}
print ' ';
diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php
index 3a6adeb6c20..6c195c16704 100644
--- a/htdocs/ticket/class/ticket.class.php
+++ b/htdocs/ticket/class/ticket.class.php
@@ -1666,7 +1666,7 @@ class Ticket extends CommonObject
*/
public function loadCacheMsgsTicket()
{
- if (is_array($this->cache_msgs_ticket) && count($this->cache_msgs_ticket)) {
+ if (!empty($this->cache_msgs_ticket) && is_array($this->cache_msgs_ticket) && count($this->cache_msgs_ticket)) {
return 0;
}
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',