diff --git a/ChangeLog b/ChangeLog
index 87535abffce..20b3a514342 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -176,6 +176,7 @@ NEW: Weighing Scale compatibility with TakePOS connector
NEW: when creating a user from a member linked to a thirdparty, you can choose to create it as external or internal user
NEW: add clone button on miscellaneous payment
NEW: #15065 Add option to put the product label in bold in the PDF templates if configured
+NEW: Add option "If the feature to manage kits of module Stock is used, show details of subproducts of a kit on PDF."
For developers:
diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php
index 51d7f84aae7..da955a67ea4 100644
--- a/htdocs/admin/company.php
+++ b/htdocs/admin/company.php
@@ -478,6 +478,14 @@ if (!empty($mysoc->logo_small)) {
print '
'."\n";
}
+ // Accountancy account
+ if (!empty($conf->accounting->enabled)) {
+ // TODO Remove the fieldrequired and allow instead to edit a various payment to enter accounting code
+ print '
';
- }
-
- // Accountancy account
- if (!empty($conf->accounting->enabled))
- {
- // TODO Remove the fieldrequired and allow instead to edit a various payment to enter accounting code
- print '
';
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index ab3a6dc45a8..41d0ed9362e 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -4282,7 +4282,11 @@ function getTitleFieldOfList($name, $thead = 0, $file = "", $field = "", $begin
$out .= '>';
}
- if ($tooltip) $out .= $form->textwithpicto($langs->trans($name), $langs->trans($tooltip));
+ if ($tooltip) {
+ // You can also use 'TranslationString:keyfortooltiponlick' for a tooltip on click.
+ $tmptooltip = explode(':', $tooltip);
+ $out .= $form->textwithpicto($langs->trans($name), $langs->trans($tmptooltip[0]), 1, 'help', '', 0, 3, (empty($tmptooltip[1]) ? '' : 'extra_'.str_replace('.', '_', $field).'_'.$tmptooltip[1]));
+ }
else $out .= $langs->trans($name);
if (empty($thead) && $field && empty($disablesortlink)) // If this is a sort field
diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php
index e6637c59549..6e4cc60ce53 100644
--- a/htdocs/core/lib/pdf.lib.php
+++ b/htdocs/core/lib/pdf.lib.php
@@ -1288,7 +1288,7 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0,
$prodser->get_sousproduits_arbo();
if (!empty($prodser->sousprods) && is_array($prodser->sousprods) && count($prodser->sousprods)) {
$tmparrayofsubproducts = reset($prodser->sousprods);
- foreach($tmparrayofsubproducts as $subprodval) {
+ foreach ($tmparrayofsubproducts as $subprodval) {
$libelleproduitservice .= "\n * ".$subprodval[5].(($subprodval[5] && $subprodval[3]) ? ' - ' : '').$subprodval[3].' ('.$subprodval[1].')';
}
}
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index 4e339c4880e..85b63a6f4e3 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -1245,14 +1245,14 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM
// Journals
if (!empty($conf->accounting->enabled) && !empty($user->rights->accounting->comptarapport->lire) && $mainmenu == 'accountancy') {
- $newmenu->add('', $langs->trans("RegistrationInAccounting"), 1, $user->rights->accounting->comptarapport->lire);
+ $newmenu->add('', $langs->trans("RegistrationInAccounting"), 1, $user->rights->accounting->comptarapport->lire, '', '', '');
// Multi journal
$sql = "SELECT rowid, code, label, nature";
$sql .= " FROM ".MAIN_DB_PREFIX."accounting_journal";
$sql .= " WHERE entity = ".$conf->entity;
$sql .= " AND active = 1";
- $sql .= " ORDER BY label DESC";
+ $sql .= " ORDER BY nature ASC, label DESC";
$resql = $db->query($sql);
if ($resql) {
diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php
index bc02e490c34..9db0ae13824 100644
--- a/htdocs/core/tpl/extrafields_view.tpl.php
+++ b/htdocs/core/tpl/extrafields_view.tpl.php
@@ -128,8 +128,13 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element]
print '
';
- if (!empty($extrafields->attributes[$object->table_element]['help'][$tmpkeyextra])) print $form->textwithpicto($langs->trans($tmplabelextra), $langs->trans($extrafields->attributes[$object->table_element]['help'][$tmpkeyextra]));
- else print $langs->trans($tmplabelextra);
+ if (!empty($extrafields->attributes[$object->table_element]['help'][$tmpkeyextra])) {
+ // You can also use 'TranslationString:keyfortooltiponlick' for a tooltip on click.
+ $tmptooltip = explode(':', $extrafields->attributes[$object->table_element]['help'][$tmpkeyextra]);
+ print $form->textwithpicto($langs->trans($tmplabelextra), $langs->trans($tmptooltip[0]), 1, 'help', '', 0, 3, (empty($tmptooltip[1]) ? '' : 'extra_'.$tmpkeyextra.'_'.$tmptooltip[1]));
+ } else {
+ print $langs->trans($tmplabelextra);
+ }
print '
';
//TODO Improve element and rights detection
diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php
index e652dc5a3c1..023155a706f 100644
--- a/htdocs/expedition/class/expedition.class.php
+++ b/htdocs/expedition/class/expedition.class.php
@@ -1868,6 +1868,7 @@ class Expedition extends CommonObject
$statusType = 'status'.$status;
if ($status == self::STATUS_VALIDATED) $statusType = 'status4';
if ($status == self::STATUS_CLOSED) $statusType = 'status6';
+ if ($status == self::STATUS_CANCELED) $statusType = 'status9';
return dolGetStatus($labelStatus, $labelStatusShort, '', $statusType, $mode);
}
diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang
index 3211a0b62df..41a4cfa59d5 100644
--- a/htdocs/langs/en_US/accountancy.lang
+++ b/htdocs/langs/en_US/accountancy.lang
@@ -198,7 +198,8 @@ Docdate=Date
Docref=Reference
LabelAccount=Label account
LabelOperation=Label operation
-Sens=Sens
+Sens=Direction
+AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you received For an accounting account of a supplier, use Debit to record a payment you make
LetteringCode=Lettering code
Lettering=Lettering
Codejournal=Journal
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 83b5a70de44..23b3b5462c9 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -2084,4 +2084,5 @@ YouMayFindSecurityAdviceHere=You may find security advisory here
ModuleActivatedMayExposeInformation=This module may expose sensitive data. If you don't need it, disable it.
ModuleActivatedDoNotUseInProduction=A module designed for the development has been enabled. Do not enable it on a production environment.
CombinationsSeparator=Separator character for product combinations
-SeeLinkToOnlineDocumentation=See link to online documention on top menu for examples
\ No newline at end of file
+SeeLinkToOnlineDocumentation=See link to online documention on top menu for examples
+SHOW_SUBPRODUCT_REF_IN_PDF=If the feature "%s" of module %s is used, show details of subproducts of a kit on PDF.
\ No newline at end of file
diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang
index e1cb168500a..73bd9aebd42 100644
--- a/htdocs/langs/en_US/sendings.lang
+++ b/htdocs/langs/en_US/sendings.lang
@@ -30,6 +30,7 @@ OtherSendingsForSameOrder=Other shipments for this order
SendingsAndReceivingForSameOrder=Shipments and receipts for this order
SendingsToValidate=Shipments to validate
StatusSendingCanceled=Canceled
+StatusSendingCanceledShort=Canceled
StatusSendingDraft=Draft
StatusSendingValidated=Validated (products to ship or already shipped)
StatusSendingProcessed=Processed
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 2753a4e1fc8..1b6179fdc81 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -565,12 +565,15 @@ if (!defined('NOLOGIN'))
// Hooks for security access
$action = '';
$hookmanager->initHooks(array('login'));
- $parameters = array('dol_authmode'=>$dol_authmode);
- $reshook = $hookmanager->executeHooks('loginCheckSecurityAccess', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks
- if ($reshook < 0) $error++;
+ $parameters = array();
+ $reshook = $hookmanager->executeHooks('beforeLoginAuthentication', $parameters, $user, $action); // Note that $action and $object may have been modified by some hooks
+ if ($reshook < 0) {
+ $test = false;
+ $error++;
+ }
// Verification security graphic code
- if (GETPOST("username", "alpha", 2) && !empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA) && !isset($_SESSION['dol_bypass_antispam']))
+ if ($test && GETPOST("username", "alpha", 2) && !empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA) && !isset($_SESSION['dol_bypass_antispam']))
{
$sessionkey = 'dol_antispam_value';
$ok = (array_key_exists($sessionkey, $_SESSION) === true && (strtolower($_SESSION[$sessionkey]) == strtolower($_POST['code'])));
diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php
index c0798fd52b8..76aeabf2c2b 100644
--- a/htdocs/modulebuilder/template/class/myobject.class.php
+++ b/htdocs/modulebuilder/template/class/myobject.class.php
@@ -85,7 +85,7 @@ class MyObject extends CommonObject
* 'searchall' is 1 if we want to search in this field when making a search from the quick search button.
* 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8).
* 'css' and 'cssview' and 'csslist' is the CSS style to use on field. 'css' is used in creation and update. 'cssview' is used in view mode. 'csslist' is used for columns in lists. For example: 'maxwidth200', 'wordbreak', 'tdoverflowmax200'
- * 'help' is a string visible as a tooltip on field
+ * 'help' is a 'TranslationString' to use to show a tooltip on field. You can also use 'TranslationString:keyfortooltiponlick' for a tooltip on click.
* 'showoncombobox' if value of the field must be visible into the label of the combobox that list record
* 'disabled' is 1 if we want to have the field locked by a 'disabled' attribute. In most cases, this is never set into the definition of $fields into class, but is set dynamically by some part of code.
* 'arraykeyval' to set list of value if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel")
diff --git a/htdocs/public/opensurvey/studs.php b/htdocs/public/opensurvey/studs.php
index 95045d2e943..3f19fb68b7e 100644
--- a/htdocs/public/opensurvey/studs.php
+++ b/htdocs/public/opensurvey/studs.php
@@ -535,7 +535,7 @@ while ($compteur < $num)
// Button edit at end of line
if ($compteur != $ligneamodifier && $mod_ok)
{
- print '
'."\n";
+ print '
'."\n";
}
//demande de confirmation pour modification de ligne
@@ -729,7 +729,7 @@ if ($comments)
// Form to add comment
if ($object->allow_comments) {
- print '
\n"; + print '
\n"; print '
'."\n"; print $langs->trans("Name").': '; diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 48a01a94390..71f0f08cc9d 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -615,13 +615,12 @@ if ($contextpage == 'poslist' && $type == 't' && (!empty($conf->global->PRODUIT_ // Show the new button only when this page is not opend from the Extended POS (pop-up window) // but allow it too, when a user has the rights to create a new customer -if ($contextpage != 'poslist') -{ +if ($contextpage != 'poslist') { $url = DOL_URL_ROOT.'/societe/card.php?action=create'.$typefilter; if (!empty($socid)) $url .= '&socid='.$socid; $newcardbutton = dolGetButtonTitle($langs->trans($label), '', 'fa fa-plus-circle', $url, '', $user->rights->societe->creer); } elseif ($user->rights->societe->creer) { - $url = DOL_URL_ROOT.'/societe/card.php?action=create&type=t&contextpage=poslist&optioncss=print&backtopage='.$_SERVER["PHP_SELF"].'?type=t&contextpage=poslist&nomassaction=1&optioncss=print&place='.urlencode($place); + $url = DOL_URL_ROOT.'/societe/card.php?action=create&type=t&contextpage=poslist&optioncss=print&backtopage='.urlencode($_SERVER["PHP_SELF"].'?type=t&contextpage=poslist&nomassaction=1&optioncss=print&place='.$place); $label = 'MenuNewCustomer'; $newcardbutton .= dolGetButtonTitle($langs->trans($label), '', 'fa fa-plus-circle', $url); } diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index fcd196ff122..b0ddba41b5c 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -4613,7 +4613,7 @@ table.cal_event td.cal_event_right { padding: 4px 4px !important; } .cal_event a:link { color: #111111; font-weight: normal !important; } .cal_event a:visited { color: #111111; font-weight: normal !important; } .cal_event a:active { color: #111111; font-weight: normal !important; } -.cal_event_notbusy a.cal_event_title:hover { color: #111111; font-weight: normal !important; color:rgba(255,255,255,.75); } +.cal_event_notbusy a.cal_event_title:hover { color: #111111; font-weight: normal !important; } .cal_event_busy { } .cal_peruserviewname { max-width: 140px; height: 30px !important; } .cal_event span.badge.badge-status { border: 1px solid #aaa; } diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 4a22b211c5f..be03f9ce0b0 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -956,7 +956,7 @@ if ($action == 'create' || $action == 'adduserldap') // Hierarchy print '