diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php
index 9c04463cfc2..01513def14d 100644
--- a/htdocs/adherents/card.php
+++ b/htdocs/adherents/card.php
@@ -1813,7 +1813,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
// Show link to invoices
$tmparray = $company->getOutstandingBills('customer');
if (!empty($tmparray['refs'])) {
- print ' - '.img_picto($langs->trans("Invoices"), 'bill', 'class="paddingright"').''.$langs->trans("Invoices").': '.count($tmparray['refs']);
+ print ' - '.img_picto($langs->trans("Invoices"), 'bill', 'class="paddingright"').' '.$langs->trans("Invoices").' ('.count($tmparray['refs']).')';
// TODO Add alert if warning on at least one invoice late
print ' ';
}
diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php
index 78deca61028..bdb77982733 100644
--- a/htdocs/adherents/class/adherent.class.php
+++ b/htdocs/adherents/class/adherent.class.php
@@ -2185,6 +2185,9 @@ class Adherent extends CommonObject
if (!empty($this->ref)) {
$label .= ''.$langs->trans('Ref').': '.$this->ref;
}
+ if (!empty($this->login)) {
+ $label .= ''.$langs->trans('Login').': '.$this->login;
+ }
if (!empty($this->firstname) || !empty($this->lastname)) {
$label .= ''.$langs->trans('Name').': '.$this->getFullName($langs);
}
diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php
index fd667ad6a2f..d33010a1eff 100644
--- a/htdocs/adherents/list.php
+++ b/htdocs/adherents/list.php
@@ -318,6 +318,7 @@ $sql .= " d.email, d.phone, d.phone_perso, d.phone_mobile, d.skype, d.birth, d.p
$sql .= " d.fk_adherent_type as type_id, d.morphy, d.statut, d.datec as date_creation, d.tms as date_update,";
$sql .= " d.note_private, d.note_public,";
$sql .= " s.nom,";
+$sql .= " ".$db->ifsql("d.societe IS NULL", "s.nom", "d.societe")." as companyname,";
$sql .= " t.libelle as type, t.subscription,";
$sql .= " state.code_departement as state_code, state.nom as state_name,";
// Add fields from extrafields
@@ -492,7 +493,7 @@ if (GETPOSTISSET("search_status")) {
if ($search_status == Adherent::STATUS_VALIDATED && $filter == 'outofdate') {
$titre = $langs->trans("MembersListNotUpToDate");
}
- if ($search_status == Adherent::STATUS_RESILIATED) {
+ if ((string) $search_status == (string) Adherent::STATUS_RESILIATED) { // The cast to string is required to have test false when search_status is ''
$titre = $langs->trans("MembersListResiliated");
}
if ($search_status == Adherent::STATUS_EXCLUDED) {
@@ -833,7 +834,7 @@ if (!empty($arrayfields['d.gender']['checked'])) {
print_liste_field_titre($arrayfields['d.gender']['label'], $_SERVER['PHP_SELF'], 'd.gender', $param, "", "", $sortfield, $sortorder);
}
if (!empty($arrayfields['d.company']['checked'])) {
- print_liste_field_titre($arrayfields['d.company']['label'], $_SERVER["PHP_SELF"], 'd.societe', '', $param, '', $sortfield, $sortorder);
+ print_liste_field_titre($arrayfields['d.company']['label'], $_SERVER["PHP_SELF"], 'companyname', '', $param, '', $sortfield, $sortorder);
}
if (!empty($arrayfields['d.login']['checked'])) {
print_liste_field_titre($arrayfields['d.login']['label'], $_SERVER["PHP_SELF"], 'd.login', '', $param, '', $sortfield, $sortorder);
@@ -906,6 +907,7 @@ while ($i < min($num, $limit)) {
$memberstatic->id = $obj->rowid;
$memberstatic->ref = $obj->ref;
$memberstatic->civility_id = $obj->civility;
+ $memberstatic->login = $obj->login;
$memberstatic->lastname = $obj->lastname;
$memberstatic->firstname = $obj->firstname;
$memberstatic->gender = $obj->gender;
@@ -920,9 +922,13 @@ while ($i < min($num, $limit)) {
if (!empty($obj->fk_soc)) {
$memberstatic->fetch_thirdparty();
- $companyname = $memberstatic->thirdparty->name;
+ if ($memberstatic->thirdparty->id > 0) {
+ $companyname = $memberstatic->thirdparty->name;
+ $companynametoshow = $memberstatic->thirdparty->getNomUrl(1);
+ }
} else {
$companyname = $obj->company;
+ $companynametoshow = $obj->company;
}
$memberstatic->company = $companyname;
@@ -985,7 +991,7 @@ while ($i < min($num, $limit)) {
// Company
if (!empty($arrayfields['d.company']['checked'])) {
print '
';
- print $companyname;
+ print $companynametoshow;
print " \n";
}
// Login
@@ -1095,7 +1101,7 @@ while ($i < min($num, $limit)) {
}
// EMail
if (!empty($arrayfields['d.email']['checked'])) {
- print "".dol_print_email($obj->email, 0, 0, 1)." \n";
+ print ''.dol_print_email($obj->email, 0, 0, 1)." \n";
}
// End of subscription date
$datefin = $db->jdate($obj->datefin);
diff --git a/htdocs/adherents/subscription.php b/htdocs/adherents/subscription.php
index 384b00af25e..f090189b52b 100644
--- a/htdocs/adherents/subscription.php
+++ b/htdocs/adherents/subscription.php
@@ -612,7 +612,7 @@ if ($rowid > 0) {
// Show link to invoices
$tmparray = $company->getOutstandingBills('customer');
if (!empty($tmparray['refs'])) {
- print ' - '.img_picto($langs->trans("Invoices"), 'bill', 'class="paddingright"').''.$langs->trans("Invoices").': '.count($tmparray['refs']);
+ print ' - '.img_picto($langs->trans("Invoices"), 'bill', 'class="paddingright"').' '.$langs->trans("Invoices").' ('.count($tmparray['refs']).')';
// TODO Add alert if warning on at least one invoice late
print ' ';
}
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index e3448d19702..658be446765 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -588,6 +588,11 @@ if ($mode == 'common' || $mode == 'commonkanban') {
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
}
+ $disabled_modules = array();
+ if (!empty($_SESSION["disablemodules"])) {
+ $disabled_modules = explode(',', $_SESSION["disablemodules"]);
+ }
+
// Show list of modules
$oldfamily = '';
$foundoneexternalmodulewithupdate = 0;
@@ -613,6 +618,7 @@ if ($mode == 'common' || $mode == 'commonkanban') {
continue;
}
+ $modulenameshort = strtolower(preg_replace('/^mod/i', '', get_class($objMod)));
$const_name = 'MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i', '', get_class($objMod)));
// Check filters
@@ -754,6 +760,11 @@ if ($mode == 'common' || $mode == 'commonkanban') {
$codeenabledisable = '';
$codetoconfig = '';
+ // Force disable of module disabled into session (for demo for example)
+ if (in_array($modulenameshort, $disabled_modules)) {
+ $objMod->disabled = true;
+ }
+
// Activate/Disable and Setup (2 columns)
if (!empty($conf->global->$const_name)) { // If module is already activated
// Set $codeenabledisable
@@ -761,6 +772,7 @@ if ($mode == 'common' || $mode == 'commonkanban') {
if (!empty($arrayofwarnings[$modName])) {
$codeenabledisable .= ''."\n";
}
+
if (!empty($objMod->disabled)) {
$codeenabledisable .= $langs->trans("Disabled");
} elseif (!empty($objMod->always_enabled) || ((!empty($conf->multicompany->enabled) && $objMod->core_enabled) && ($user->entity || $conf->entity != 1))) {
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index bab9be7670c..294646414cd 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -1625,10 +1625,10 @@ class Facture extends CommonInvoice
}
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
- $result = $this->db->query($sql);
- if ($result) {
- if ($this->db->num_rows($result)) {
- $obj = $this->db->fetch_object($result);
+ $resql = $this->db->query($sql);
+ if ($resql) {
+ if ($this->db->num_rows($resql)) {
+ $obj = $this->db->fetch_object($resql);
$this->id = $obj->rowid;
$this->entity = $obj->entity;
@@ -1730,14 +1730,18 @@ class Facture extends CommonInvoice
$this->error = $this->db->error();
return -3;
}
+
+ $this->db->free($resql);
+
return 1;
} else {
$this->error = 'Invoice with id='.$rowid.' or ref='.$ref.' or ref_ext='.$ref_ext.' not found';
- dol_syslog(get_class($this)."::fetch Error ".$this->error, LOG_ERR);
+
+ dol_syslog(__METHOD__ . $this->error, LOG_WARNING);
return 0;
}
} else {
- $this->error = $this->db->error();
+ $this->error = $this->db->lasterror();
return -1;
}
}
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index c3ee160f0f0..1ab990f59a9 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -1157,7 +1157,7 @@ class ExtraFields
} else {
$checked = ' value="1" ';
}
- $out = ' ';
+ $out = ' ';
} else {
$out .= $form->selectyesno($keyprefix.$key.$keysuffix, $value, 1, false, 1);
}
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 9fe5630023b..265255f6e0a 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -1414,7 +1414,7 @@ class Form
}
}
if ($showempty) {
- $out .= ''.$textifempty.'').'">'.$textifempty.' '."\n";
+ $out .= ''.($textifempty ? $textifempty : ' ').'').'">'.$textifempty.' '."\n";
}
$num = $this->db->num_rows($resql);
diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php
index e87d6df18dc..3f2ab773b06 100644
--- a/htdocs/core/tpl/extrafields_view.tpl.php
+++ b/htdocs/core/tpl/extrafields_view.tpl.php
@@ -199,11 +199,13 @@ if (empty($reshook) && isset($extrafields->attributes[$object->table_element]['l
if (($isdraft || !empty($extrafields->attributes[$object->table_element]['alwayseditable'][$tmpkeyextra]))
&& $permok && $enabled != 5 && ($action != 'edit_extras' || GETPOST('attribute') != $tmpkeyextra)
&& empty($extrafields->attributes[$object->table_element]['computed'][$tmpkeyextra])) {
- $fieldid = 'id';
+ $fieldid = empty($forcefieldid) ? 'id' : $forcefieldid;
+ $valueid = empty($forceobjectid) ? $object->id : $forceobjectid;
if ($object->table_element == 'societe') {
$fieldid = 'socid';
}
- print ''.img_edit().' ';
+
+ print ''.img_edit().' ';
}
print '';
print '';
diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php
index 3e8ef7ea411..b50ca83c6f6 100644
--- a/htdocs/core/tpl/objectline_view.tpl.php
+++ b/htdocs/core/tpl/objectline_view.tpl.php
@@ -79,6 +79,7 @@ if (!empty($conf->global->INVOICE_POSITIVE_CREDIT_NOTE_SCREEN) && in_array($obje
$sign = -1;
}
+
$coldisplay = 0;
?>
@@ -163,32 +164,33 @@ if (($line->info_bits & 2) == 2) {
// Show date range
if ($line->element == 'facturedetrec') {
if ($line->date_start_fill || $line->date_end_fill) {
- print '';
+ print '
';
}
if ($line->date_start_fill) {
- print $langs->trans('AutoFillDateFromShort').': '.yn($line->date_start_fill);
+ print ''.$langs->trans('AutoFillDateFromShort').': '.yn($line->date_start_fill);
}
if ($line->date_start_fill && $line->date_end_fill) {
print ' - ';
}
if ($line->date_end_fill) {
- print $langs->trans('AutoFillDateToShort').': '.yn($line->date_end_fill);
+ print ''.$langs->trans('AutoFillDateToShort').': '.yn($line->date_end_fill);
}
if ($line->date_start_fill || $line->date_end_fill) {
print '
';
}
} else {
if ($line->date_start || $line->date_end) {
- print '
'.get_date_range($line->date_start, $line->date_end, $format).'
';
+ print '
'.get_date_range($line->date_start, $line->date_end, $format).'
';
}
//print get_date_range($line->date_start, $line->date_end, $format);
}
// Add description in form
if ($line->fk_product > 0 && !empty($conf->global->PRODUIT_DESC_IN_FORM)) {
- print (!empty($line->description) && $line->description != $line->product_label) ? '
'.dol_htmlentitiesbr($line->description) : '';
+ print (!empty($line->description) && $line->description != $line->product_label) ? (($line->date_start || $line->date_end) ? '' : '
').'
'.dol_htmlentitiesbr($line->description) : '';
}
- //Line extrafield
+
+ // Line extrafield
if (!empty($extrafields)) {
$temps = $line->showOptionals($extrafields, 'view', array(), '', '', 1, 'line');
if (!empty($temps)) {
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index ca7c95cd464..9980e084789 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -3387,20 +3387,11 @@ class SupplierInvoiceLine extends CommonObjectLine
$this->multicurrency_total_ttc = 0;
}
+ $fk_product = (int) $this->fk_product;
+ $fk_unit = (int) $this->fk_unit;
+
$this->db->begin();
- if (empty($this->fk_product)) {
- $fk_product = "null";
- } else {
- $fk_product = (int) $this->fk_product;
- }
-
- if (empty($this->fk_unit)) {
- $fk_unit = "null";
- } else {
- $fk_unit = (int) $this->fk_unit;
- }
-
$sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn_det SET";
$sql .= " description ='".$this->db->escape($this->description)."'";
$sql .= ", ref ='".$this->db->escape($this->ref_supplier ? $this->ref_supplier : $this->ref)."'";
diff --git a/htdocs/install/mysql/migration/13.0.0-14.0.0.sql b/htdocs/install/mysql/migration/13.0.0-14.0.0.sql
index 032504dfa61..d50b6991261 100644
--- a/htdocs/install/mysql/migration/13.0.0-14.0.0.sql
+++ b/htdocs/install/mysql/migration/13.0.0-14.0.0.sql
@@ -459,7 +459,7 @@ CREATE TABLE llx_partnership(
fk_soc integer,
fk_member integer,
date_partnership_start date NOT NULL,
- date_partnership_end date NOT NULL,
+ date_partnership_end date NULL,
entity integer DEFAULT 1 NOT NULL, -- multi company id, 0 = all
reason_decline_or_cancel text NULL,
date_creation datetime NOT NULL,
diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang
index 2c4409caa88..b193e1f34b6 100644
--- a/htdocs/langs/en_US/members.lang
+++ b/htdocs/langs/en_US/members.lang
@@ -155,7 +155,7 @@ DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right)
DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards
ShowTypeCard=Show type '%s'
HTPasswordExport=htpassword file generation
-NoThirdPartyAssociatedToMember=No third party associated to this member
+NoThirdPartyAssociatedToMember=No third party associated with this member
MembersAndSubscriptions= Members and Subscriptions
MoreActions=Complementary action on recording
MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription
diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang
index 841ee0f3daf..888c9f52161 100644
--- a/htdocs/langs/en_US/users.lang
+++ b/htdocs/langs/en_US/users.lang
@@ -62,8 +62,8 @@ ListOfUsersInGroup=List of users in this group
ListOfGroupsForUser=List of groups for this user
LinkToCompanyContact=Link to third party / contact
LinkedToDolibarrMember=Link to member
-LinkedToDolibarrUser=Link to Dolibarr user
-LinkedToDolibarrThirdParty=Link to Dolibarr third party
+LinkedToDolibarrUser=Link to user
+LinkedToDolibarrThirdParty=Link to third party
CreateDolibarrLogin=Create a user
CreateDolibarrThirdParty=Create a third party
LoginAccountDisableInDolibarr=Account disabled in Dolibarr.
diff --git a/htdocs/partnership/admin/setup.php b/htdocs/partnership/admin/setup.php
index 25567b137db..100dc7027a3 100644
--- a/htdocs/partnership/admin/setup.php
+++ b/htdocs/partnership/admin/setup.php
@@ -65,8 +65,10 @@ if ($action == 'setting') {
$error += $partnership->delete_menus();
$error += $partnership->insert_menus();
- if (GETPOST("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL", 'int'))
+ if (GETPOSTISSET("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL")) {
dolibarr_set_const($db, "PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL", GETPOST("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL", 'int'), 'chaine', 0, '', $conf->entity);
+ }
+
dolibarr_set_const($db, "PARTNERSHIP_BACKLINKS_TO_CHECK", GETPOST("PARTNERSHIP_BACKLINKS_TO_CHECK"), 'chaine', 0, '', $conf->entity);
}
@@ -131,16 +133,16 @@ print '
'.$langs->trans("partnershipforthirdparty
print '';
-if (!empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') {
- print ''.$langs->trans("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL").' ';
- print '';
- $dnbdays = '15';
- $backlinks = (!empty($conf->global->PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL)) ? $conf->global->PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL : $dnbdays;
- print ' ';
- print ' ';
- print ''.$dnbdays.' ';
- print ' ';
-}
+//if (!empty($conf->global->PARTNERSHIP_IS_MANAGED_FOR) && $conf->global->PARTNERSHIP_IS_MANAGED_FOR == 'member') {
+print ''.$langs->trans("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL").' ';
+print '';
+$dnbdays = '30';
+$backlinks = (!empty($conf->global->PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL)) ? $conf->global->PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL : $dnbdays;
+print ' ';
+print ' ';
+print ''.$dnbdays.' ';
+print ' ';
+//}
print '';
print '';
diff --git a/htdocs/societe/partnership.php b/htdocs/societe/partnership.php
index b1f0f24fbe1..a5393e500e3 100644
--- a/htdocs/societe/partnership.php
+++ b/htdocs/societe/partnership.php
@@ -245,7 +245,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
$socid = $object->id;
- // TODO Replace this card with the list of all partnerships.
+ // TODO Replace this card with a table of list of all partnerships.
$object = new Partnership($db);
$partnershipid = $object->fetch(0, '', 0, $socid);
@@ -257,10 +257,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
print ''."\n";
// Common attributes
- //$keyforbreak='fieldkeytoswitchonsecondcolumn'; // We change column just before this field
- //unset($object->fields['fk_project']); // Hide field already shown in banner
- //unset($object->fields['fk_member']); // Hide field already shown in banner
+ unset($object->fields['fk_soc']); // Hide field already shown in banner
include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php';
+ $forcefieldid = 'socid';
+ $forceobjectid = $object->fk_soc;
+ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
print '
';
print '';
diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php
index f48fada2eb9..ff06eff74b6 100644
--- a/htdocs/website/class/website.class.php
+++ b/htdocs/website/class/website.class.php
@@ -1091,8 +1091,8 @@ class Website extends CommonObject
}
}
- $line .= "\n-- For Dolibarr v14+ --\n";
- $line .= "UPDATE llx_website SET fk_default_lang = '".$this->db->escape($this->fk_default_lang)."' WHERE rowid = __WEBSITE_ID__;\n";
+ $line = "\n-- For Dolibarr v14+ --;\n";
+ $line .= "UPDATE llx_website SET lang = '".$this->db->escape($this->fk_default_lang)."' WHERE rowid = __WEBSITE_ID__;\n";
$line .= "UPDATE llx_website SET otherlang = '".$this->db->escape($this->otherlang)."' WHERE rowid = __WEBSITE_ID__;\n";
$line .= "\n";
fputs($fp, $line);