diff --git a/ChangeLog b/ChangeLog
index 7f4bf72cd74..a8241b7557a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -45,6 +45,10 @@ NEW: Accountancy - Add possibility for specific format FEC to sort with the FEC
NEW: Accountancy - Expense report - Add an option to use end period for transfer (#26706)
NEW: Accountancy - Show accounting result on balance
NEW: Accountancy - Show import key if exist (#29265)
+NEW: Accountancy - Auto-determine piece number in FEC import (#29672)
+NEW: Accountancy - Option to transfer only reconciled lines from bank (#29408)
+NEW: Accountancy - Separation of accounting default account for salary and expense report
+NEW: Various payment - Use list of accounting account when edit (#27992)
NEW: Add option to change all service dates at once
NEW: Add a default limit in nb to agenda export
NEW: Add a Feedback-ID into email headers
@@ -97,7 +101,6 @@ NEW: Allow smileys into emailing html content
NEW: Allow to set a default project for POS sales (#27042)
NEW: animation for display spinner when waiting response
NEW: Asset Module - make asset model creation in a single step (#26982)
-NEW: auto-determine piece number in FEC import (#29672)
NEW: auto fill infos in template email
NEW: Automatically fill matching extra fields of object on line creation. (#27240)
NEW: Can add documents on a payment (#29660)
@@ -134,7 +137,7 @@ NEW: fetch object by element for website account card
NEW: filter on sale representative in contact list
NEW: Filter shipments by selecting multiple shipping methods (#28376)
NEW: Font param Look and Feel (#29302)
-NEW: fuctionnality for stock configuration prompt in AI module (#28030)
+NEW: functionality for stock configuration prompt in AI module (#28030)
NEW: functionality to delete contact of company list
NEW: functionality to display codebar on pdf files (#29623)
NEW: functionality to list event for user
@@ -166,7 +169,6 @@ NEW: notification action triggers for cancelling orders and invoices
NEW: now button when editing an event
NEW: online signature of shipments (#29559)
NEW: On OAuth Google login, no prompt at all if already logged in Google
-NEW: Option to transfer only reconciliated lines from bank (#29408)
NEW: Param to show main menu logo in color look and feel (#29305)
NEW: Payment page received from donations
NEW: possibility to define a completely inactive module (#29289)
@@ -179,7 +181,6 @@ NEW: resource address, phone, email & maxusers (#28185)
NEW: Script for fast identification of missing/unused/duplicate translations
NEW: search member by date
NEW: See the documents of my subordinates (#28318)
-NEW: separation of expense report from salary accounting code
NEW: Show error on ical parse
NEW: Show the profit per attendee on events
NEW: signed status CRUD to contract and fichinter
@@ -206,7 +207,6 @@ NEW: Update expense report card.php to allow pdf preview even without thumbnail
NEW: update price with auto to use const for rounding prices (#29350)
NEW: Use a nicer combo list to select the export accounting format
NEW: users can set their own length for short lists
-NEW: Various payment - Use list of account when edit (#27992)
NEW: warning message when cloning a product whose status is not to sell (#28374)
PERF: Performance enhancement on Invoice/Paiement area page
PERF: Use cache for loaded users/contact on project list
@@ -219,6 +219,7 @@ SEC: Reduce nb of var without WAF used when using the website module
For developers or integrators:
------------------------------
+NEW: Situation invoice - Add new official progressive mode - (constant INVOICE_USE_SITUATION = 2)
NEW: $noescapetags param of dol_escape_html works if attributes
NEW: Add createInvoiceFromContract to API invoice (#27277)
NEW: add debugging info to api/status if non-production
diff --git a/htdocs/admin/system/perf.php b/htdocs/admin/system/perf.php
index 0b02e78e344..44935e91607 100644
--- a/htdocs/admin/system/perf.php
+++ b/htdocs/admin/system/perf.php
@@ -660,7 +660,7 @@ if (getDolGlobalInt('MAIN_ACTIVATE_FILECACHE')) {
} else {
print img_picto('', 'minus', 'class="pictofixedwidth"');
}
-print ' '.$form->textwithpicto($langs->trans("EnableFileCache").' ('.$langs->trans("Widgets").')', $langs->trans("Option").' MAIN_ACTIVATE_FILECACHE');
+print $form->textwithpicto($langs->trans("EnableFileCache").' ('.$langs->trans("Widgets").')', $langs->trans("Option").' MAIN_ACTIVATE_FILECACHE');
print ': '.yn(getDolGlobalInt('MAIN_ACTIVATE_FILECACHE'));
print ' ';
@@ -669,7 +669,7 @@ if (getDolGlobalInt('MAIN_ENABLE_AJAX_TOOLTIP')) {
} else {
print img_picto('', 'minus', 'class="pictofixedwidth"');
}
-print ' MAIN_ENABLE_AJAX_TOOLTIP : ';
+print 'MAIN_ENABLE_AJAX_TOOLTIP : ';
print yn(getDolGlobalInt('MAIN_ENABLE_AJAX_TOOLTIP'));
print ' ';
diff --git a/htdocs/admin/system/security.php b/htdocs/admin/system/security.php
index 42fb6b8ac3e..9671d5a6828 100644
--- a/htdocs/admin/system/security.php
+++ b/htdocs/admin/system/security.php
@@ -379,11 +379,12 @@ if (empty($dolibarr_main_stream_to_disable)) {
} else {
print implode(', ', $dolibarr_main_stream_to_disable);
}
-print ' -> Current PHP streams allowed = ';
+print ' -> Current PHP streams allowed = ';
$arrayofstreams = stream_get_wrappers();
if (!empty($arrayofstreams)) {
sort($arrayofstreams);
- print(implode(', ', $arrayofstreams)).' ('.$langs->trans("Recommended").': '.$langs->trans("TryToKeepOnly", 'file,http,https,php,zip').')'."\n";
+ print ''.implode(',', $arrayofstreams).'';
+ print ' ('.$langs->trans("Recommended").': '.$langs->trans("TryToKeepOnly", 'file,http,https,php,zip').')'."\n";
}
print '';
diff --git a/htdocs/admin/ticket.php b/htdocs/admin/ticket.php
index 8ae5a83cb02..d8e5f342494 100644
--- a/htdocs/admin/ticket.php
+++ b/htdocs/admin/ticket.php
@@ -167,21 +167,12 @@ if ($action == 'updateMask') {
$error++;
}
- if (GETPOSTISSET('product_category_id')) {
- $param_ticket_product_category = GETPOSTINT('product_category_id');
- $res = dolibarr_set_const($db, 'TICKET_PRODUCT_CATEGORY', $param_ticket_product_category, 'chaine', 0, '', $conf->entity);
- if (!($res > 0)) {
- $error++;
- }
- }
-
$param_status = GETPOST('TICKET_SET_STATUS_ON_ANSWER');
$res = dolibarr_set_const($db, 'TICKET_SET_STATUS_ON_ANSWER', $param_status, 'chaine', 0, '', $conf->entity);
if (!($res > 0)) {
$error++;
}
-
$param_delay_first_response = GETPOSTINT('delay_first_response');
$res = dolibarr_set_const($db, 'TICKET_DELAY_BEFORE_FIRST_RESPONSE', $param_delay_first_response, 'chaine', 0, '', $conf->entity);
if (!($res > 0)) {
@@ -625,37 +616,6 @@ print $formcategory->textwithpicto('', $langs->trans("TicketAutoCheckNotifyThird
print '';
print '';
-// Assign contact to a message
-print '
diff --git a/htdocs/admin/ticket_public.php b/htdocs/admin/ticket_public.php
index 42bd9cc8900..7bb8e2c0b9d 100644
--- a/htdocs/admin/ticket_public.php
+++ b/htdocs/admin/ticket_public.php
@@ -28,6 +28,7 @@ require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
require_once DOL_DOCUMENT_ROOT."/ticket/class/ticket.class.php";
require_once DOL_DOCUMENT_ROOT."/core/lib/ticket.lib.php";
+require_once DOL_DOCUMENT_ROOT."/core/class/html.formcategory.class.php";
// Load translation files required by the page
$langs->loadLangs(array("admin", "ticket"));
@@ -221,6 +222,7 @@ if ($action != '') {
$dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']);
$form = new Form($db);
+$formcategory = new FormCategory($db);
$help_url = "FR:Module_Ticket";
$page_name = "TicketSetup";
@@ -414,7 +416,7 @@ if (getDolGlobalInt('TICKET_ENABLE_PUBLIC_INTERFACE')) {
}
if (empty($conf->use_javascript_ajax)) {
- print '
';
+ print '
';
print '
';
}
@@ -458,9 +460,29 @@ if (getDolGlobalInt('TICKET_ENABLE_PUBLIC_INTERFACE')) {
print $form->textwithpicto('', $langs->trans("TicketPublicInterfaceTextHelpMessageHelpAdmin"), 1, 'help');
print '';
+ // Add first contact id found in database from submitter email entered into public interface
+ // Feature disabled: This has a security trouble. The public interface is a no login interface, so being able to show the contact info from an
+ // email decided by the submiter allows anybody to get information on any contact (customer or supplier) in Dolibarr database.
+ // He can even check if contact exists by trying any email if this feature is enabled.
+ /*
+ print '
';
@@ -493,7 +517,7 @@ if (getDolGlobalInt('TICKET_ENABLE_PUBLIC_INTERFACE')) {
// Text of email after creatio of a ticket
$mail_mesg_new = getDolGlobalString("TICKET_MESSAGE_MAIL_NEW", $langs->trans('TicketNewEmailBody'));
- print '
';
+}
+
+print '';
+
// End of page
llxFooter();
diff --git a/htdocs/core/class/html.formcategory.class.php b/htdocs/core/class/html.formcategory.class.php
index 193967845ab..731559ed119 100644
--- a/htdocs/core/class/html.formcategory.class.php
+++ b/htdocs/core/class/html.formcategory.class.php
@@ -23,6 +23,7 @@
*/
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
+require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
/**
@@ -101,6 +102,8 @@ class FormCategory extends Form
/**
* Prints a select form for products categories
+ * TODO Remove this. We should already have a generic method to get list of product category.
+ *
* @param int $selected Id category pre-selection
* @param string $htmlname Name of HTML field
* @param int $showempty Add an empty field
@@ -108,15 +111,14 @@ class FormCategory extends Form
*/
public function selectProductCategory($selected = 0, $htmlname = 'product_category_id', $showempty = 0)
{
- $sql = "SELECT cp.fk_categorie as cat_index, cat.label";
- $sql .= " FROM ".MAIN_DB_PREFIX."categorie_product as cp";
- $sql .= " INNER JOIN ".MAIN_DB_PREFIX."categorie as cat ON cat.rowid = cp.fk_categorie";
- $sql .= " GROUP BY cp.fk_categorie, cat.label";
+ $sql = "SELECT cat.rowid, cat.label";
+ $sql .= " FROM ".MAIN_DB_PREFIX."categorie as cat";
+ $sql .= " WHERE cat.type = 0";
dol_syslog(get_class($this)."::selectProductCategory", LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql) {
- print '