Compare commits

...

8 Commits

Author SHA1 Message Date
Laurent Destailleur
aacf34b3b5 Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-30 14:52:44 +01:00
Laurent Destailleur
32ed90740c Debug v23 2025-12-30 14:51:28 +01:00
Laurent Destailleur
b474c07d48 Debug v23 2025-12-30 13:08:23 +01:00
Laurent Destailleur
a5d95ae8e6 Debug v23 2025-12-30 12:55:39 +01:00
Laurent Destailleur
99b685ce2a Debug v23 2025-12-30 11:57:01 +01:00
Laurent Destailleur
0953156549 Debug v23 2025-12-29 22:58:32 +01:00
Laurent Destailleur
a009bf4ef7 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2025-12-29 18:38:17 +01:00
Laurent Destailleur
60c98ddc30 Prepare v24 2025-12-29 17:52:21 +01:00
16 changed files with 125 additions and 69 deletions

View File

@@ -688,7 +688,7 @@ if (empty($reshook)) {
if ($user->hasRight('adherent', 'supprimer') && $action == 'confirm_delete' && $confirm == 'yes') {
$result = $object->delete($user);
if ($result > 0) {
setEventMessages($langs->trans("RecordDeleted"), null, 'errors');
setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
if (!empty($backtopage) && !preg_match('/'.preg_quote($_SERVER["PHP_SELF"], '/').'/', $backtopage)) {
header("Location: ".$backtopage);
exit;

View File

@@ -33,12 +33,6 @@
// Load Dolibarr environment
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
/**
* @var Conf $conf
* @var DoliDB $db
@@ -46,6 +40,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
* @var Translate $langs
* @var User $user
*/
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
// Load translation files required by the page
$langs->loadLangs(array("members", "companies", "categories"));
@@ -1039,7 +1037,7 @@ print $hookmanager->resPrint;
// Date creation
if (!empty($arrayfields['d.datec']['checked'])) {
print '<td class="liste_titre">';
print '<td class="liste_titre center">';
print '<div class="nowrapfordate">';
print $form->selectDate($search_datec_start ? $search_datec_start : -1, 'search_datec_start_', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
print '</div>';

View File

@@ -26,15 +26,6 @@
// Load Dolibarr environment
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
'
@phan-var-force string $dolibarr_main_document_root_alt
';
/**
* @var Conf $conf
* @var DoliDB $db
@@ -45,6 +36,14 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
* @var string $dolibarr_main_document_root_alt
* @var string $conffile
*/
'
@phan-var-force string $dolibarr_main_document_root_alt
';
require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
// Load translation files required by the page
$langs->loadLangs(array("install", "other", "admin"));
@@ -169,9 +168,15 @@ if (preg_match('/[a-z]+/i', $version)) {
print '</td></tr>'."\n";
print '<tr class="oddeven"><td>'.$langs->trans("VersionLastUpgrade").'<br><span class="opacitymedium">('.$langs->trans("Database").')</span></td><td>';
print '<span class="badge-text badge-secondary">'.getDolGlobalString('MAIN_VERSION_LAST_UPGRADE').'</span></td></tr>'."\n";
if (getDolGlobalString('MAIN_VERSION_LAST_UPGRADE')) {
print '<span class="badge-text badge-secondary">'.getDolGlobalString('MAIN_VERSION_LAST_UPGRADE').'</span>';
}
print '</td></tr>'."\n";
print '<tr class="oddeven"><td>'.$langs->trans("VersionLastInstall").'<br><span class="opacitymedium">('.$langs->trans("Database").')</span></td><td>';
print '<span class="badge-text badge-secondary">'.getDolGlobalString('MAIN_VERSION_LAST_INSTALL').'</span></td></tr>'."\n";
if (getDolGlobalString('MAIN_VERSION_LAST_INSTALL')) {
print '<span class="badge-text badge-secondary">'.getDolGlobalString('MAIN_VERSION_LAST_INSTALL').'</span>';
}
print '</td></tr>'."\n";
print '</table>';
print '</div>';
print '<br>';

View File

@@ -547,7 +547,7 @@ class BlockedLog
}
}
// ref
// ref object
$this->ref_object = ((!empty($object->newref)) ? $object->newref : $object->ref); // newref is set when validating a draft, ref is set in other cases
// type of object
$this->element = $object->element;
@@ -595,7 +595,13 @@ class BlockedLog
'fk_incoterms', 'label_incoterms', 'location_incoterms', 'lines'));
}
if (!empty($object->thirdparty)) {
// For customer payment and supplier payment, the thirdparty can be added in payment detail
$addthirdpartyatpaymentlevel = 0;
if (!empty($object->thirdparty) && !in_array($this->element, array('payment', 'payment_supplier'))) {
$addthirdpartyatpaymentlevel = 1;
}
if (!empty($object->thirdparty) && !$addthirdpartyatpaymentlevel) {
$this->object_data->thirdparty = new stdClass();
foreach ($object->thirdparty as $key => $value) {
@@ -652,7 +658,7 @@ class BlockedLog
$valuequalifiedforstorage = true; // We accept '' value for some fields
$value = (string) $value;
}
if (!is_null($value) && empty($value) && in_array($key, array('tva_assuj'))) {
if (!is_null($value) && empty($value) && in_array($key, array('tva_assuj', 'localtax1_assuj', 'localtax2_assuj'))) {
$valuequalifiedforstorage = true; // We accept zero value for amounts
}
if (!is_null($value) && (string) $value !== '') {
@@ -753,6 +759,33 @@ class BlockedLog
if (!empty($object->newref)) {
$this->object_data->ref = $object->newref;
}
// Add data for action emails
if ($action == 'BILL_SENTBYMAIL') {
$emailobj = new stdClass();
$emailobj->email_from = $object->email_from;
//$emailobj->email_to = $object->email_to;
$emailobj->email_msgid = $object->email_msgid;
$emailobj->email_subject = $object->email_subject;
$this->object_data->action_email_sent = $emailobj;
}
// Add data for action doc_preview
if ($action == 'DOC_PREVIEW') {
$docpreviewobj = new stdClass();
$docpreviewobj->pos_print_counter = $object->pos_print_counter;
//$this->object_data->action_doc_preview = $docpreviewobj;
}
// Add data for action doc_download
if ($action == 'DOC_DOWNLOAD') {
$docdownloadobj = new stdClass();
$docdownloadobj->pos_print_counter = $object->pos_print_counter;
//$this->object_data->action_doc_download = $docdownloadobj;
}
} elseif ($this->element == 'invoice_supplier') {
'@phan-var-force FactureFournisseur $object';
foreach ($object as $key => $value) {
@@ -849,7 +882,9 @@ class BlockedLog
$paymentpart = new stdClass();
$paymentpart->amount = $amount;
if (!in_array($this->element, array('payment_donation', 'payment_various'))) {
// If we want to add thirdparty on each payment level
// (seems not necessary as we have one thirdparty per payment on invoice level)
if ($addthirdpartyatpaymentlevel) {
$result = $tmpobject->fetch_thirdparty();
if ($result == 0) {
$this->error = 'Failed to fetch thirdparty for object with id '.$tmpobject->id;
@@ -870,7 +905,7 @@ class BlockedLog
// List of thirdparty fields qualified
if (!in_array($key, array(
'name', 'name_alias', 'ref_ext', 'address', 'zip', 'town', 'state_code', 'country_code', 'idprof1', 'idprof2', 'idprof3', 'idprof4', 'idprof5', 'idprof6', 'phone', 'fax', 'email', 'barcode',
'tva_intra', 'localtax1_assuj', 'localtax1_value', 'localtax2_assuj', 'localtax2_value', 'managers', 'capital', 'typent_code', 'forme_juridique_code', 'code_client', 'code_fournisseur'
'tva_intra', 'tva_assuj', 'localtax1_assuj', 'localtax1_value', 'localtax2_assuj', 'localtax2_value', 'managers', 'capital', 'typent_code', 'forme_juridique_code', 'code_client', 'code_fournisseur'
))) {
continue; // Discard if not into a dedicated list
}

View File

@@ -2232,7 +2232,7 @@ class Facture extends CommonInvoice
$sql .= ', p.code as mode_reglement_code, p.libelle as mode_reglement_libelle';
$sql .= ', c.code as cond_reglement_code, c.libelle as cond_reglement_libelle, c.libelle_facture as cond_reglement_libelle_doc';
$sql .= ', f.fk_incoterms, f.location_incoterms';
$sql .= ', f.module_source, f.pos_source, f.pos_print_counter';
$sql .= ', f.module_source, f.pos_source, f.pos_print_counter, f.email_sent_counter';
$sql .= ", i.libelle as label_incoterms";
$sql .= ", f.retained_warranty as retained_warranty, f.retained_warranty_date_limit as retained_warranty_date_limit, f.retained_warranty_fk_cond_reglement as retained_warranty_fk_cond_reglement";
$sql .= ", f.payment_reference, f.dispute_status";
@@ -2361,6 +2361,7 @@ class Facture extends CommonInvoice
$this->module_source = $obj->module_source;
$this->pos_source = $obj->pos_source;
$this->pos_print_counter = $obj->pos_print_counter;
$this->email_sent_counter = $obj->email_sent_counter;
// Multicurrency
$this->fk_multicurrency = $obj->fk_multicurrency;

View File

@@ -457,7 +457,11 @@ if (($action == 'send' || $action == 'relance') && !GETPOST('addfile') && !GETPO
// If sending email for invoice, we increase the counter of invoices sent by email
$sql = "UPDATE ".MAIN_DB_PREFIX."facture SET email_sent_counter = email_sent_counter + 1";
$sql .= " WHERE rowid = ".((int) $object->id);
$db->query($sql);
$resql = $db->query($sql);
if ($resql) {
$object->email_sent_counter += 1;
}
}
$result = $object->call_trigger($triggersendname, $user); // @phan-suppress-current-line PhanPossiblyUndeclaredGlobalVariable

View File

@@ -96,8 +96,8 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers
|| $action === 'MEMBER_SUBSCRIPTION_CREATE' || $action === 'MEMBER_SUBSCRIPTION_MODIFY' || $action === 'MEMBER_SUBSCRIPTION_DELETE'
|| $action === 'DON_VALIDATE' || (($action === 'DON_MODIFY' || $action === 'DON_DELETE') && ($object->statut != 0 || $object->status != 0))
|| $action === 'CASHCONTROL_VALIDATE'
|| (in_array($object->element, array('facture', 'supplier_invoice')) && $action === 'DOC_DOWNLOAD' && ($object->statut != 0 || $object->status != 0))
|| (in_array($object->element, array('facture', 'supplier_invoice')) && $action === 'DOC_PREVIEW' && ($object->statut != 0 || $object->status != 0))
|| (in_array($object->element, array('facture', 'supplier_invoice')) && $action === 'DOC_PREVIEW' && ($object->statut != 0 || $object->status != 0 || $object->module_source != ''))
|| (in_array($object->element, array('facture', 'supplier_invoice')) && $action === 'DOC_DOWNLOAD' && ($object->statut != 0 || $object->status != 0 || $object->module_source != ''))
|| (getDolGlobalString('BLOCKEDLOG_ADD_ACTIONS_SUPPORTED') && in_array($action, explode(',', getDolGlobalString('BLOCKEDLOG_ADD_ACTIONS_SUPPORTED'))))
) {
$qualified++;

View File

@@ -33,7 +33,7 @@
*/
define('DOL_MINOR_VERSION', '0.0');
define('DOL_MINOR_VERSION', '0.0-alpha');
if (!defined('DOL_APPLICATION_TITLE')) {
define('DOL_APPLICATION_TITLE', 'Dolibarr');

View File

@@ -1286,7 +1286,8 @@ class CommandeFournisseur extends CommonOrder
*/
public function approve($user, $idwarehouse = 0, $secondlevel = 0)
{
global $langs, $conf;
global $langs;
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
$error = 0;
@@ -1429,8 +1430,6 @@ class CommandeFournisseur extends CommonOrder
*/
public function refuse($user)
{
global $conf, $langs;
$error = 0;
dol_syslog(get_class($this)."::refuse");
@@ -3939,14 +3938,22 @@ class CommandeFournisseur extends CommonOrder
if ($selected >= 0) {
$return .= '<input id="cb'.$this->id.'" class="flat checkforselect fright" type="checkbox" name="toselect[]" value="'.$this->id.'"'.($selected ? ' checked="checked"' : '').'>';
}
if (property_exists($this, 'socid') || property_exists($this, 'total_tva')) {
$return .= '<br><span class="info-box-label amount">'.$this->socid.'</span>';
if (!empty($arraydata['thirdparty'])) {
$return .= '<br><span class="info-box-label">'.$arraydata['thirdparty'].'</span>';
}
if (property_exists($this, 'billed')) {
$return .= '<br><span class="opacitymedium">'.$langs->trans("Billed").' : </span><span class="info-box-label">'.yn($this->billed).'</span>';
if (property_exists($this, 'date')) {
$return .= '<br><span class="info-box-label">'.dol_print_date($this->date ? $this->date : $this->date_creation, 'day').'</span>';
}
if (property_exists($this, 'total_ht')) {
$return .= ' &nbsp; <span class="info-box-label amount" title="'.dol_escape_htmltag($langs->trans("AmountHT")).'">'.price($this->total_ht);
$return .= ' '.$langs->trans("HT");
$return .= '</span>';
}
if (method_exists($this, 'getLibStatut')) {
$return .= '<br><div class="info-box-status">'.$this->getLibStatut(3).'</div>';
$return .= '<br><span class="info-box-status">'.$this->getLibStatut(3).'</span>';
}
if (property_exists($this, 'billed')) {
$return .= ' &nbsp; <span class="opacitymedium">'.$langs->trans("Billed").': </span><span class="info-box-label">'.yn($this->billed).'</span>';
}
$return .= '</div>';
$return .= '</div>';

View File

@@ -1827,7 +1827,9 @@ if ($resql) {
$objectstatic->total_ht = $obj->total_ht;
$objectstatic->total_tva = $obj->total_tva;
$objectstatic->total_ttc = $obj->total_ttc;
$objectstatic->date = $db->jdate($obj->date_commande);
$objectstatic->date_commande = $db->jdate($obj->date_commande);
$objectstatic->date_creation = $db->jdate($obj->date_creation);
$objectstatic->delivery_date = $db->jdate($obj->delivery_date);
$objectstatic->note_public = $obj->note_public;
$objectstatic->note_private = $obj->note_private;

View File

@@ -673,8 +673,8 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
print '<input type="hidden" name="action" value="add" />';
print '<br>';
$messagemandatory = '<span class="">'.$langs->trans("FieldsWithAreMandatory", '*').'</span>';
//print '<br><span class="opacitymedium">'.$langs->trans("FieldsWithAreMandatory", '*').'</span><br>';
//$messagemandatory = '<span class="">'.$langs->trans("FieldsWithAreMandatory", '*').'</span>';
//print '<br>'.$messagemandatory.'<br>';
//print $langs->trans("FieldsWithIsForPublic",'**').'<br>';
print dol_get_fiche_head();
@@ -683,10 +683,12 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
print "\n".'<script type="text/javascript">'."\n";
print 'jQuery(document).ready(function () {
jQuery("#selectcountry_id").change(function() {
console.log("We change country, so we reload page");
document.newmember.action.value="create";
document.newmember.submit();
});
function initfieldrequired() {
console.log("initfieldrequired");
jQuery("#tdcompany").removeClass("fieldrequired");
jQuery("#tdlastname").removeClass("fieldrequired");
jQuery("#tdfirstname").removeClass("fieldrequired");
@@ -727,12 +729,11 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
// Moral/Physic attribute
$morphys = [
// "" => $langs->trans("MorAndPhy"),
"phy" => $langs->trans("Physical"),
"mor" => $langs->trans("Moral"),
];
$checkednature = GETPOST("morphy", 'alpha');
$listetype_natures = $adht->morphyByType(1); // Load the array of morphy per type
$listetype_natures = $adht->morphyByType(1); // Load the array of morphy per typeof membership
$listetype_natures_json = json_encode($listetype_natures);
if (!getDolGlobalString('MEMBER_NEWFORM_FORCEMORPHY')) {
@@ -746,10 +747,9 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
// Add JS to manage the background of nature
if ($conf->use_javascript_ajax) {
print "<script>
var listetype_natures = $listetype_natures_json;
</script>";
print '<script>
var listetype_natures = '.$listetype_natures_json.';
jQuery(function($) {
function refreshNatureCss() {
$(".spannature").each(function(index) {
@@ -775,7 +775,9 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
});
$("#typeid").on("change", function() {
console.log("Type of member is modified");
let morphy = listetype_natures[$(this).val()];
console.log("morphy="+morphy);
let $phyInput = $("#phisicalinput");
let $morInput = $("#moralinput");
@@ -807,7 +809,7 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
break;
default:';
if ($action != "subscription") {
if ($action != "subscription" && !GETPOST('morphy')) {
print ' $phyInput.prop({disabled: false, checked: false});
$morInput.prop({disabled: false, checked: false});
$span1.removeClass("member-individual-back").addClass("nonature-back");
@@ -953,6 +955,7 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
print '<script type="text/javascript">
jQuery(document).ready(function () {
initturnover();
jQuery("#morphy").change(function() {
initturnover();
});
@@ -960,15 +963,9 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
if (jQuery("#budget").val() > 0) { jQuery(".amount").val(jQuery("#budget").val()); }
else { jQuery("#budget").val(\'\'); }
});
/*jQuery("#typeid").change(function() {
if (jQuery("#typeid").val()==1) { jQuery("#morphy").val(\'mor\'); }
if (jQuery("#typeid").val()==2) { jQuery("#morphy").val(\'phy\'); }
if (jQuery("#typeid").val()==3) { jQuery("#morphy").val(\'mor\'); }
if (jQuery("#typeid").val()==4) { jQuery("#morphy").val(\'mor\'); }
initturnover();
});*/
function initturnover() {
console.log("Switch mor/phy");
console.log("Set fields according to nature mor/phy");
if (jQuery("#morphy").val()==\'phy\') {
jQuery(".amount").val(20);
jQuery("#trbudget").hide();
@@ -1036,14 +1033,20 @@ if (getDolGlobalString('MEMBER_SKIP_TABLE') || getDolGlobalString('MEMBER_NEWFOR
if ($caneditamount === "1") {
print '<input type="text" name="amount" id="amount" class="flat amount width50" value="'.$showedamount.'">';
print '<input type="text" name="amount" id="amounthidden" class="flat amount width50 hidden" disabled value="'.$showedamount.'">';
print ' '.$langs->trans("Currency".$conf->currency).'<span class="opacitymedium hideifautoturnover"> - ';
print $amount > 0 ? $langs->trans("AnyAmountWithAdvisedAmount", price($amount, 0, $langs, 1, -1, -1, $conf->currency)) : $langs->trans("AnyAmountWithoutAdvisedAmount");
print ' '.$langs->trans("Currency".$conf->currency).'<span class="opacitymedium hideifautoturnover">';
if (!getDolGlobalString('MEMBER_NEWFORM_DOLIBARRTURNOVER')) {
print ' - ';
print $amount > 0 ? $langs->trans("AnyAmountWithAdvisedAmount", price($amount, 0, $langs, 1, -1, -1, $conf->currency)) : $langs->trans("AnyAmountWithoutAdvisedAmount");
}
print '</span>';
} else {
print '<input type="text" name="amount" id="amount" class="flat amount width50 hidden" value="'.$showedamount.'">';
print '<input type="text" name="amount" id="amounthidden" class="flat amount width50" disabled value="'.$showedamount.'">';
print ' '.$langs->trans("Currency".$conf->currency).'<span class="opacitymedium hideifautoturnover hidden"> - ';
print $amount > 0 ? $langs->trans("AnyAmountWithAdvisedAmount", price($amount, 0, $langs, 1, -1, -1, $conf->currency)) : $langs->trans("AnyAmountWithoutAdvisedAmount");
print ' '.$langs->trans("Currency".$conf->currency).'<span class="opacitymedium hideifautoturnover hidden">';
if (!getDolGlobalString('MEMBER_NEWFORM_DOLIBARRTURNOVER')) {
print ' - ';
print $amount > 0 ? $langs->trans("AnyAmountWithAdvisedAmount", price($amount, 0, $langs, 1, -1, -1, $conf->currency)) : $langs->trans("AnyAmountWithoutAdvisedAmount");
}
print '</span>';
}
print '</td></tr>';

View File

@@ -228,8 +228,8 @@ div#topmenu-global-search-dropdown a::after, div#topmenu-quickadd-dropdown a::af
}
#topmenu-global-search-dropdown .dropdown-menu{
width: 310px;
max-width: 100%;
width: 370px;
max-width: 370px;
}
div#topmenu-global-search-dropdown, div#topmenu-bookmark-dropdown, div#topmenu-quickadd-dropdown {

View File

@@ -9093,7 +9093,8 @@ table.jPicker {
width: 260px;
}
.side-nav-vert .user-menu .dropdown-menu, #topmenu-bookmark-dropdown .dropdown-menu, #topmenu-quickadd-dropdown .dropdown-menu {
.side-nav-vert .user-menu .dropdown-menu,
#topmenu-global-search-dropdown .dropdown-menu, #topmenu-bookmark-dropdown .dropdown-menu, #topmenu-quickadd-dropdown .dropdown-menu {
width: 285px !important; /* must be width of menu + padding + padding of sidenav */
min-width: unset !important;
}

View File

@@ -256,8 +256,8 @@ a.info-box-text-a i.fa.fa-exclamation-triangle, span.badge i.fa.fa-exclamation-t
.info-box-content {
padding-top: 5px;
padding-bottom: 5px;
padding-left: 10px;
padding-right: 5px;
padding-<?php echo $left; ?>: 14px;
padding-<?php echo $right; ?>: 5px;
margin-left: 84px;
}
.info-box-sm .info-box-content {
@@ -279,21 +279,21 @@ a.info-box-text-a i.fa.fa-exclamation-triangle, span.badge i.fa.fa-exclamation-t
}
.progress-description,
.info-box-text,
.info-box-title{
.info-box-title {
display: block;
font-size: 12px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.info-box-title{
.info-box-title {
text-transform: uppercase;
font-weight: bold;
/* font-weight: bold; */
margin-bottom: 3px; /* not too much space so we can add another lines */
opacity: 0.6;
opacity: 0.5;
/* color: var(--colortexttitlenotab); */
}
.info-box-text{
.info-box-text {
font-size: 0.92em;
}
/* Force values for small screen 480 */

View File

@@ -396,7 +396,7 @@ print 'fontsize='.$fontsize."\n";
print 'nbtopmenuentries='.$nbtopmenuentries."\n";
print '*/'."\n";
$leftmenuwidth = 242;
$leftmenuwidth = 254;
?>

View File

@@ -37,7 +37,7 @@ if (!defined('DOL_APPLICATION_TITLE')) {
}
// The major version of Dolibarr
define('DOL_MAJOR_VERSION', '23');
define('DOL_MAJOR_VERSION', '24');
define('DOL_VERSION', constant('DOL_MAJOR_VERSION').'.'.constant('DOL_MINOR_VERSION'));
// DOL_VERSION is now a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c