';
}
diff --git a/htdocs/core/modules/modUser.class.php b/htdocs/core/modules/modUser.class.php
index e84998635ff..01303892435 100644
--- a/htdocs/core/modules/modUser.class.php
+++ b/htdocs/core/modules/modUser.class.php
@@ -231,7 +231,8 @@ class modUser extends DolibarrModules
'u.birth'=>'DateOfBirth',
'u.datec'=>"DateCreation", 'u.tms'=>"DateLastModification",
'u.admin'=>"Administrator", 'u.statut'=>'Status', 'u.datelastlogin'=>'LastConnexion', 'u.datepreviouslogin'=>'PreviousConnexion',
- 'u.fk_socpeople'=>"IdContact", 'u.fk_soc'=>"IdCompany", 'u.fk_member'=>"MemberId"
+ 'u.fk_socpeople'=>"IdContact", 'u.fk_soc'=>"IdCompany", 'u.fk_member'=>"MemberId",
+ 'g.nom'=>"Group"
);
$this->export_TypeFields_array[$r] = array(
'u.rowid'=>'Numeric', 'u.login'=>"Text", 'u.lastname'=>"Text", 'u.firstname'=>"Text", 'u.employee'=>'Boolean', 'u.job'=>'Text',
@@ -241,7 +242,8 @@ class modUser extends DolibarrModules
'u.email'=>'Text', 'u.datec'=>"Date", 'u.tms'=>"Date", 'u.admin'=>"Boolean", 'u.statut'=>'Status', 'u.note'=>"Text", 'u.datelastlogin'=>'Date',
'u.fk_user'=>"List:user:login",
'u.birth'=>'Date',
- 'u.datepreviouslogin'=>'Date', 'u.fk_soc'=>"List:societe:nom:rowid", 'u.fk_member'=>"List:adherent:firstname"
+ 'u.datepreviouslogin'=>'Date', 'u.fk_soc'=>"List:societe:nom:rowid", 'u.fk_member'=>"List:adherent:firstname",
+ 'g.nom'=>"Text"
);
$this->export_entities_array[$r] = array(
'u.rowid'=>"user", 'u.login'=>"user", 'u.lastname'=>"user", 'u.firstname'=>"user", 'u.employee'=>'user', 'u.job'=>'user', 'u.gender'=>'user',
@@ -254,7 +256,8 @@ class modUser extends DolibarrModules
'u.birth'=>'user',
'u.datec'=>"user", 'u.tms'=>"user",
'u.admin'=>"user", 'u.statut'=>'user', 'u.datelastlogin'=>'user', 'u.datepreviouslogin'=>'user',
- 'u.fk_socpeople'=>"contact", 'u.fk_soc'=>"company", 'u.fk_member'=>"member"
+ 'u.fk_socpeople'=>"contact", 'u.fk_soc'=>"company", 'u.fk_member'=>"member",
+ 'g.nom'=>"Group"
);
$keyforselect = 'user';
$keyforelement = 'user';
@@ -267,6 +270,8 @@ class modUser extends DolibarrModules
$this->export_sql_start[$r] = 'SELECT DISTINCT ';
$this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'user as u';
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user_extrafields as extra ON u.rowid = extra.fk_object';
+ $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'usergroup_user as ug ON u.rowid = ug.fk_user';
+ $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'usergroup as g ON ug.fk_usergroup = g.rowid';
$this->export_sql_end[$r] .= ' WHERE u.entity IN ('.getEntity('user').')';
// Imports
diff --git a/htdocs/core/tpl/list_print_total.tpl.php b/htdocs/core/tpl/list_print_total.tpl.php
index d7252f891ae..62052b82cec 100644
--- a/htdocs/core/tpl/list_print_total.tpl.php
+++ b/htdocs/core/tpl/list_print_total.tpl.php
@@ -1,6 +1,6 @@
$valtotalizable) {
$totalarray['pos'][$valtotalizable['pos']] = $keytotalizable;
$totalarray['val'][$keytotalizable] = $valtotalizable['total'];
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index 4a19e4bdc81..fca16305047 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -177,7 +177,13 @@ class FactureFournisseur extends CommonInvoice
public $amount = 0;
public $remise = 0;
+
+ /**
+ * @var float tva
+ * @deprecated Use $total_tva
+ */
public $tva = 0;
+
public $localtax1;
public $localtax2;
public $total_ht = 0;
@@ -703,7 +709,7 @@ class FactureFournisseur extends CommonInvoice
$this->remise = $obj->remise;
$this->close_code = $obj->close_code;
$this->close_note = $obj->close_note;
- $this->tva = $obj->tva;
+ $this->tva = $obj->tva;
$this->total_localtax1 = $obj->localtax1;
$this->total_localtax2 = $obj->localtax2;
$this->total_ht = $obj->total_ht;
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 11886976fa3..19f52940ea5 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
@@ -26,6 +26,8 @@
-- To set a field as NOT NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET NOT NULL;
-- To set a field as default NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET DEFAULT NULL;
-- Note: fields with type BLOB/TEXT can't have default value.
+-- To rebuild sequence for postgresql after insert by forcing id autoincrement fields:
+-- -- VPGSQL8.2 SELECT dol_util_rebuild_sequences();
-- Missing in v13 or lower
@@ -275,15 +277,15 @@ create table llx_salary
fk_user_modif integer -- user making last change
) ENGINE=innodb;
-ALTER TABLE llx_payment_salary CHANGE COLUMN fk_user fk_user integer NULL;
+-- VMYSQL4.1 ALTER TABLE llx_payment_salary CHANGE COLUMN fk_user fk_user integer NULL;
+-- VPGSQL8.2 ALTER TABLE llx_payment_salary ALTER COLUMN fk_user DROP NOT NULL;
ALTER TABLE llx_payment_salary ADD COLUMN fk_salary integer;
INSERT INTO llx_salary (rowid, ref, fk_user, amount, fk_projet, fk_typepayment, label, datesp, dateep, entity, note, fk_bank, paye) SELECT ps.rowid, ps.rowid, ps.fk_user, ps.amount, ps.fk_projet, ps.fk_typepayment, ps.label, ps.datesp, ps.dateep, ps.entity, ps.note, ps.fk_bank, 1 FROM llx_payment_salary ps WHERE ps.fk_salary IS NULL;
UPDATE llx_payment_salary SET fk_salary = rowid WHERE fk_salary IS NULL;
UPDATE llx_payment_salary SET ref = rowid WHERE ref IS NULL;
-ALTER TABLE llx_salary CHANGE paye paye smallint default 0 NOT NULL;
-
+ALTER TABLE llx_salary ALTER COLUMN paye set default 0;
DELETE FROM llx_boxes WHERE box_id IN (SELECT rowid FROM llx_boxes_def WHERE file IN ('box_graph_ticket_by_severity', 'box_ticket_by_severity.php', 'box_nb_ticket_last_x_days.php', 'box_nb_tickets_type.php', 'box_new_vs_close_ticket.php'));
DELETE FROM llx_boxes_def WHERE file IN ('box_graph_ticket_by_severity', 'box_ticket_by_severity.php', 'box_nb_ticket_last_x_days.php', 'box_nb_tickets_type.php', 'box_new_vs_close_ticket.php');
@@ -425,4 +427,10 @@ ALTER TABLE llx_facture_fourn ADD COLUMN date_closing datetime DEFAULT NULL afte
ALTER TABLE llx_facture_fourn ADD COLUMN fk_user_closing integer DEFAULT NULL after fk_user_valid;
-ALTER TABLE llx_entrepot ADD COLUMN fk_project INTEGER DEFAULT NULL AFTER entity; -- project associated to warehouse if any
\ No newline at end of file
+ALTER TABLE llx_entrepot ADD COLUMN fk_project INTEGER DEFAULT NULL AFTER entity; -- project associated to warehouse if any
+
+-- Rebuild sequence for postgres only after query INSERT INTO llx_salary(rowid, ...
+-- VPGSQL8.2 SELECT dol_util_rebuild_sequences();
+
+UPDATE llx_const SET value = 'github' WHERE __DECRYPT('name')__ = 'MAIN_BUGTRACK_ENABLELINK' AND __DECRYPT('value')__ = 1;
+
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 8e2fd940da0..1d6e5f0d502 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -1159,7 +1159,7 @@ DoNotSuggestPaymentMode=Do not suggest
NoActiveBankAccountDefined=No active bank account defined
OwnerOfBankAccount=Owner of bank account %s
BankModuleNotActive=Bank accounts module not enabled
-ShowBugTrackLink=Show link "%s"
+ShowBugTrackLink=Define the link "%s" (empty to not display this link, 'github' for the link to the Dolibarr project or define directly an url 'https://...')
Alerts=Alerts
DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for:
DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element.
diff --git a/htdocs/langs/en_US/productbatch.lang b/htdocs/langs/en_US/productbatch.lang
index 4414b6ad8d8..644da334851 100644
--- a/htdocs/langs/en_US/productbatch.lang
+++ b/htdocs/langs/en_US/productbatch.lang
@@ -28,8 +28,8 @@ SerialNumberAlreadyInUse=Serial number %s is already used for product %s
TooManyQtyForSerialNumber=You can only have one product %s for serial number %s
BatchLotNumberingModules=Options for automatic generation of batch products managed by lots
BatchSerialNumberingModules=Options for automatic generation of batch products managed by serial numbers
+ManageLotMask=Custom mask
CustomMasks=Adds an option to define mask in the product card
LotProductTooltip=Adds an option in the product card to define a dedicated batch number mask
SNProductTooltip=Adds an option in the product card to define a dedicated serial number mask
-QtyToAddAfterBarcodeScan=Qty to add for each barcode/lot/serial scanned
-
+QtyToAddAfterBarcodeScan=Qty to add for each barcode/lot/serial scanned
\ No newline at end of file
diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang
index cd38ac89278..5a1ddd19ae8 100644
--- a/htdocs/langs/fr_FR/productbatch.lang
+++ b/htdocs/langs/fr_FR/productbatch.lang
@@ -28,6 +28,7 @@ SerialNumberAlreadyInUse=Le numéro de série %s est déjà utilisé pour le pro
TooManyQtyForSerialNumber=Vous ne pouvez avoir qu'un produit %s avec le numéro de série %s
BatchLotNumberingModules=Modèle de génération et contrôle des numéros de lot
BatchSerialNumberingModules=Modèle de génération et contrôle des numéros de série
+ManageLotMask=Masque personnalisé
CustomMasks=Ajoute une option pour définir le masque dans la fiche produit
LotProductTooltip=Crée un champ dans la fiche produit pour définir un modèle spécifique de numéro de lot
-SNProductTooltip=Crée un champ dans la fiche produit pour définir un modèle spécifique de numéro de série
\ No newline at end of file
+SNProductTooltip=Crée un champ dans la fiche produit pour définir un modèle spécifique de numéro de série
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 90d935705aa..0e13a072a39 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -2743,41 +2743,49 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_
if (!empty($conf->global->MAIN_BUGTRACK_ENABLELINK)) {
require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
- $bugbaseurl = 'https://github.com/Dolibarr/dolibarr/issues/new?labels=Bug';
- $bugbaseurl .= '&title=';
- $bugbaseurl .= urlencode("Bug: ");
- $bugbaseurl .= '&body=';
- $bugbaseurl .= urlencode("# Instructions\n");
- $bugbaseurl .= urlencode("*This is a template to help you report good issues. You may use [Github Markdown](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github/) syntax to format your issue report.*\n");
- $bugbaseurl .= urlencode("*Please:*\n");
- $bugbaseurl .= urlencode("- *replace the bracket enclosed texts with meaningful information*\n");
- $bugbaseurl .= urlencode("- *remove any unused sub-section*\n");
- $bugbaseurl .= urlencode("\n");
- $bugbaseurl .= urlencode("\n");
- $bugbaseurl .= urlencode("# Bug\n");
- $bugbaseurl .= urlencode("[*Short description*]\n");
- $bugbaseurl .= urlencode("\n");
- $bugbaseurl .= urlencode("## Environment\n");
- $bugbaseurl .= urlencode("- **Version**: ".DOL_VERSION."\n");
- $bugbaseurl .= urlencode("- **OS**: ".php_uname('s')."\n");
- $bugbaseurl .= urlencode("- **Web server**: ".$_SERVER["SERVER_SOFTWARE"]."\n");
- $bugbaseurl .= urlencode("- **PHP**: ".php_sapi_name().' '.phpversion()."\n");
- $bugbaseurl .= urlencode("- **Database**: ".$db::LABEL.' '.$db->getVersion()."\n");
- $bugbaseurl .= urlencode("- **URL(s)**: ".$_SERVER["REQUEST_URI"]."\n");
- $bugbaseurl .= urlencode("\n");
- $bugbaseurl .= urlencode("## Expected and actual behavior\n");
- $bugbaseurl .= urlencode("[*Verbose description*]\n");
- $bugbaseurl .= urlencode("\n");
- $bugbaseurl .= urlencode("## Steps to reproduce the behavior\n");
- $bugbaseurl .= urlencode("[*Verbose description*]\n");
- $bugbaseurl .= urlencode("\n");
- $bugbaseurl .= urlencode("## [Attached files](https://help.github.com/articles/issue-attachments) (Screenshots, screencasts, dolibarr.log, debugging informations…)\n");
- $bugbaseurl .= urlencode("[*Files*]\n");
- $bugbaseurl .= urlencode("\n");
+ if ($conf->global->MAIN_BUGTRACK_ENABLELINK == 'github') {
+ $bugbaseurl = 'https://github.com/Dolibarr/dolibarr/issues/new?labels=Bug';
+ $bugbaseurl .= '&title=';
+ $bugbaseurl .= urlencode("Bug: ");
+ $bugbaseurl .= '&body=';
+ $bugbaseurl .= urlencode("# Instructions\n");
+ $bugbaseurl .= urlencode("*This is a template to help you report good issues. You may use [Github Markdown](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github/) syntax to format your issue report.*\n");
+ $bugbaseurl .= urlencode("*Please:*\n");
+ $bugbaseurl .= urlencode("- *replace the bracket enclosed texts with meaningful information*\n");
+ $bugbaseurl .= urlencode("- *remove any unused sub-section*\n");
+ $bugbaseurl .= urlencode("\n");
+ $bugbaseurl .= urlencode("\n");
+ $bugbaseurl .= urlencode("# Bug\n");
+ $bugbaseurl .= urlencode("[*Short description*]\n");
+ $bugbaseurl .= urlencode("\n");
+ $bugbaseurl .= urlencode("## Environment\n");
+ $bugbaseurl .= urlencode("- **Version**: " . DOL_VERSION . "\n");
+ $bugbaseurl .= urlencode("- **OS**: " . php_uname('s') . "\n");
+ $bugbaseurl .= urlencode("- **Web server**: " . $_SERVER["SERVER_SOFTWARE"] . "\n");
+ $bugbaseurl .= urlencode("- **PHP**: " . php_sapi_name() . ' ' . phpversion() . "\n");
+ $bugbaseurl .= urlencode("- **Database**: " . $db::LABEL . ' ' . $db->getVersion() . "\n");
+ $bugbaseurl .= urlencode("- **URL(s)**: " . $_SERVER["REQUEST_URI"] . "\n");
+ $bugbaseurl .= urlencode("\n");
+ $bugbaseurl .= urlencode("## Expected and actual behavior\n");
+ $bugbaseurl .= urlencode("[*Verbose description*]\n");
+ $bugbaseurl .= urlencode("\n");
+ $bugbaseurl .= urlencode("## Steps to reproduce the behavior\n");
+ $bugbaseurl .= urlencode("[*Verbose description*]\n");
+ $bugbaseurl .= urlencode("\n");
+ $bugbaseurl .= urlencode("## [Attached files](https://help.github.com/articles/issue-attachments) (Screenshots, screencasts, dolibarr.log, debugging informations…)\n");
+ $bugbaseurl .= urlencode("[*Files*]\n");
+ $bugbaseurl .= urlencode("\n");
+ $bugbaseurl .= urlencode("\n");
+ $bugbaseurl .= urlencode("## Report\n");
+ } elseif (!empty($conf->global->MAIN_BUGTRACK_ENABLELINK)) {
+ $bugbaseurl = $conf->global->MAIN_BUGTRACK_ENABLELINK;
+ } else {
+ $bugbaseurl = "";
+ }
// Execute hook printBugtrackInfo
- $parameters = array('bugbaseurl'=>$bugbaseurl);
+ $parameters = array('bugbaseurl' => $bugbaseurl);
$reshook = $hookmanager->executeHooks('printBugtrackInfo', $parameters); // Note that $action and $object may have been modified by some hooks
if (empty($reshook)) {
$bugbaseurl .= $hookmanager->resPrint;
@@ -2785,8 +2793,6 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_
$bugbaseurl = $hookmanager->resPrint;
}
- $bugbaseurl .= urlencode("\n");
- $bugbaseurl .= urlencode("## Report\n");
print '