diff --git a/ChangeLog b/ChangeLog
index 50a0ff10131..f52fbb55668 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -15,7 +15,7 @@ NEW: Add a performance center page with all information and advices related to t
NEW: A lot of fix into english text after a small proofreading campaign (still not perfect, but really better)
NEW: All main menu entries are using the picto of the module
NEW: Add a copy to clipboard button on some fields
-NEW: Add an example of scheduled job to send email reminder for unpayed invoices
+NEW: Add an example of scheduled job to send email reminder for unpaid invoices
NEW: Can make massive stock transfers from a CSV file.
NEW: Accountancy - Add FEC import
NEW: Accountancy - Add a confirmation form with options on export
@@ -34,7 +34,7 @@ NEW: Add some company information in the dropdown login menu
NEW: Add constant MAIN_BUGTRACK_URL to set a custom url to redirect to when clicking on link "declare a bug"
NEW: Add contact tag and bulk email status on the thirparty+contact create form
NEW: Add db fields note_public and note_private for ECM module
-NEW: Manage deposit on supplier invoice (& somes ajustments)
+NEW: Support down payment on supplier invoice (& somes ajustments)
NEW: Add edit/delete action icons on categories list pages
NEW: Add hidden option to auto load input line extrafield into new lines
NEW: Add import profile to import BOM
@@ -73,8 +73,8 @@ NEW: Can toggle FCKeditor on public/private notes
NEW: Can use captcha on public page to create a ticket
NEW: Check update availability for externals modules using a button on module page
NEW: Choose lines to use while creating intervention card from origin
-NEW: Column shippement method, payment mode, payment term in proposal and order list
-NEW: Conf for default actiomm status
+NEW: Column shipment method, payment mode, payment term in proposal and order list
+NEW: Conf for default actioncomm status
NEW: customer ref for product customer prices
NEW: date and user signature on proposal (Issue 16062)
NEW: Dictionary for availability - Add a column position
diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php
index d073139a533..6e13a662948 100644
--- a/htdocs/accountancy/index.php
+++ b/htdocs/accountancy/index.php
@@ -61,7 +61,7 @@ if (empty($user->rights->compta->resultat->lire) && empty($user->rights->account
if (GETPOST('addbox')) {
// Add box (when submit is done from a form when ajax disabled)
require_once DOL_DOCUMENT_ROOT.'/core/class/infobox.class.php';
- $zone = GETPOST('areacode', 'aZ09');
+ $zone = GETPOST('areacode', 'int');
$userid = GETPOST('userid', 'int');
$boxorder = GETPOST('boxorder', 'aZ09');
$boxorder .= GETPOST('boxcombo', 'aZ09');
diff --git a/htdocs/adherents/index.php b/htdocs/adherents/index.php
index 998736e137f..8b59c0d3ca4 100644
--- a/htdocs/adherents/index.php
+++ b/htdocs/adherents/index.php
@@ -52,7 +52,7 @@ $result = restrictedArea($user, 'adherent');
if (GETPOST('addbox')) {
// Add box (when submit is done from a form when ajax disabled)
require_once DOL_DOCUMENT_ROOT.'/core/class/infobox.class.php';
- $zone = GETPOST('areacode', 'aZ09');
+ $zone = GETPOST('areacode', 'int');
$userid = GETPOST('userid', 'int');
$boxorder = GETPOST('boxorder', 'aZ09');
$boxorder .= GETPOST('boxcombo', 'aZ09');
diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php
index df691eba688..ae33ef3b6fa 100644
--- a/htdocs/admin/boxes.php
+++ b/htdocs/admin/boxes.php
@@ -115,7 +115,7 @@ if ($action == 'add') {
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes (";
$sql .= "box_id, position, box_order, fk_user, entity";
$sql .= ") VALUES (";
- $sql .= $boxid['value'].", ".((int) $pos).", '".(($nbboxonleft > $nbboxonright) ? 'B01' : 'A01')."', ".$fk_user.", ".$conf->entity;
+ $sql .= ((int) $boxid['value']).", ".((int) $pos).", '".(($nbboxonleft > $nbboxonright) ? 'B01' : 'A01')."', ".((int) $fk_user).", ".$conf->entity;
$sql .= ")";
dol_syslog("boxes.php activate box", LOG_DEBUG);
@@ -149,11 +149,6 @@ if ($action == 'delete') {
if (!empty($obj->box_id)) {
$db->begin();
- // Remove all personalized setup when a box is activated or disabled (why removing all ? We removed only removed boxes)
- // $sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
- // $sql.= " WHERE param LIKE 'MAIN_BOXES_%'";
- // $resql = $db->query($sql);
-
$sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes";
$sql .= " WHERE entity = ".$conf->entity;
$sql .= " AND box_id=".((int) $obj->box_id);
@@ -184,6 +179,7 @@ if ($action == 'switch') {
$newsecondnum = preg_replace('/[a-zA-Z]+/', '', $newsecond);
$newsecond = sprintf("%s%02d", $newsecondchar ? $newsecondchar : 'A', $newsecondnum + 1);
}
+
$sql = "UPDATE ".MAIN_DB_PREFIX."boxes SET box_order='".$db->escape($newfirst)."' WHERE rowid=".((int) $objfrom->rowid);
dol_syslog($sql);
$resultupdatefrom = $db->query($sql);
diff --git a/htdocs/bom/bom_document.php b/htdocs/bom/bom_document.php
index 9952423da99..dd0227e4305 100644
--- a/htdocs/bom/bom_document.php
+++ b/htdocs/bom/bom_document.php
@@ -76,7 +76,7 @@ $extrafields->fetch_name_optionals_label($object->table_element);
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
if ($id > 0 || !empty($ref)) {
- $upload_dir = $conf->bom->multidir_output[$object->entity ? $object->entity : 1]."/bom/".get_exdir(0, 0, 0, 1, $object);
+ $upload_dir = $conf->bom->multidir_output[$object->entity ? $object->entity : 1]."/".get_exdir(0, 0, 0, 1, $object);
}
// Security check - Protection if external user
@@ -152,7 +152,7 @@ if ($object->id) {
$param = '&id='.$object->id;
//$relativepathwithnofile='bom/' . dol_sanitizeFileName($object->id).'/';
- $relativepathwithnofile = 'bom/'.dol_sanitizeFileName($object->ref).'/';
+ $relativepathwithnofile = dol_sanitizeFileName($object->ref).'/';
include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
} else {
diff --git a/htdocs/bom/bom_note.php b/htdocs/bom/bom_note.php
index 1110bb4b0d4..539eb654751 100644
--- a/htdocs/bom/bom_note.php
+++ b/htdocs/bom/bom_note.php
@@ -97,45 +97,7 @@ if ($id > 0 || !empty($ref)) {
$linkback = ''.$langs->trans("BackToList").'';
$morehtmlref = '
';
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 40a14eb1711..1f633015cd4 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -4153,20 +4153,23 @@ class Facture extends CommonInvoice
// $sql.= " AND (f.paye = 1"; // Classee payee completement
// $sql.= " OR f.close_code IS NOT NULL)"; // Classee payee partiellement
$sql .= " AND ff.type IS NULL"; // Renvoi vrai si pas facture de remplacement
- $sql .= " AND f.type != ".self::TYPE_CREDIT_NOTE; // Type non 2 si facture non avoir
+ $sql .= " AND f.type <> ".self::TYPE_CREDIT_NOTE; // Exclude credit note invoices from selection
if (!empty($conf->global->INVOICE_USE_SITUATION_CREDIT_NOTE)) {
- // Select the last situation invoice
- $sqlSit = 'SELECT MAX(fs.rowid)';
- $sqlSit .= " FROM ".MAIN_DB_PREFIX."facture as fs";
- $sqlSit .= " WHERE fs.entity IN (".getEntity('invoice').")";
- $sqlSit .= " AND fs.type = ".self::TYPE_SITUATION;
- $sqlSit .= " AND fs.fk_statut in (".self::STATUS_VALIDATED.",".self::STATUS_CLOSED.")";
- $sqlSit .= " GROUP BY fs.situation_cycle_ref";
- $sqlSit .= " ORDER BY fs.situation_counter";
- $sql .= " AND ( f.type != ".self::TYPE_SITUATION." OR f.rowid IN (".$this->db->sanitize($sqlSit).") )"; // Type non 5 si facture non avoir
+ // Keep invoices that are not situation invoices or that are the last in serie if it is a situation invoice
+ $sql .= " AND (f.type <> ".self::TYPE_SITUATION." OR f.rowid IN ";
+ $sql .= '(SELECT MAX(fs.rowid)'; // This select returns several ID becasue of the group by later
+ $sql .= " FROM ".MAIN_DB_PREFIX."facture as fs";
+ $sql .= " WHERE fs.entity IN (".getEntity('invoice').")";
+ $sql .= " AND fs.type = ".self::TYPE_SITUATION;
+ $sql .= " AND fs.fk_statut IN (".self::STATUS_VALIDATED.",".self::STATUS_CLOSED.")";
+ if ($socid > 0) {
+ $sql .= " AND fs.fk_soc = ".((int) $socid);
+ }
+ $sql .= " GROUP BY fs.situation_cycle_ref)"; // For each situation_cycle_ref, we take the higher rowid
+ $sql .= ")";
} else {
- $sql .= " AND f.type != ".self::TYPE_SITUATION; // Type non 5 si facture non avoir
+ $sql .= " AND f.type <> ".self::TYPE_SITUATION; // Keep invoices that are not situation invoices
}
if ($socid > 0) {
diff --git a/htdocs/core/actions_extrafields.inc.php b/htdocs/core/actions_extrafields.inc.php
index b03c2c3d192..1ca04a00c8b 100644
--- a/htdocs/core/actions_extrafields.inc.php
+++ b/htdocs/core/actions_extrafields.inc.php
@@ -137,7 +137,7 @@ if ($action == 'add') {
// Check reserved keyword with more than 3 characters
if (!$error) {
- if (in_array(GETPOST('attrname', 'aZ09'), array('and', 'keyword', 'table', 'index', 'integer', 'float', 'double', 'position'))) {
+ if (in_array(GETPOST('attrname', 'aZ09'), array('and', 'keyword', 'table', 'index', 'int', 'integer', 'float', 'double', 'real', 'position'))) {
$error++;
$langs->load("errors");
$mesg[] = $langs->trans("ErrorReservedKeyword", GETPOST('attrname', 'aZ09'));
diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php
index f39c73b5bf0..fdd4d1a69fd 100644
--- a/htdocs/core/actions_massactions.inc.php
+++ b/htdocs/core/actions_massactions.inc.php
@@ -712,7 +712,7 @@ if ($massaction == 'confirm_createbills') { // Create bills from orders.
for ($i = 0; $i < $num; $i++) {
$desc = ($lines[$i]->desc ? $lines[$i]->desc : '');
- // If we build one invoice for several order, we must put the invoice of order on the line
+ // If we build one invoice for several orders, we must put the ref of order on the invoice line
if (!empty($createbills_onebythird)) {
$desc = dol_concatdesc($desc, $langs->trans("Order").' '.$cmd->ref.' - '.dol_print_date($cmd->date, 'day'));
}
@@ -772,6 +772,8 @@ if ($massaction == 'confirm_createbills') { // Create bills from orders.
$array_options = $lines[$i]->array_options;
}
+ $objecttmp->context['createfromclone'];
+
$result = $objecttmp->addline(
$desc,
$lines[$i]->subprice,
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index 2f8b0871a83..59311b707dd 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -2215,7 +2215,11 @@ class ExtraFields
continue; // Value was not provided, we should not set it.
}
$value_arr = GETPOST($keysuffix."options_".$key.$keyprefix);
- $value_key = price2num($value_arr);
+ if ($keysuffix != 'search_') { // If value is for a search, we must keep complex string like '>100 <=150'
+ $value_key = price2num($value_arr);
+ } else {
+ $value_key = $value_arr;
+ }
} else {
if (!GETPOSTISSET($keysuffix."options_".$key.$keyprefix)) {
continue; // Value was not provided, we should not set it.
diff --git a/htdocs/core/class/infobox.class.php b/htdocs/core/class/infobox.class.php
index 545d3c12274..fb59e2b7c42 100644
--- a/htdocs/core/class/infobox.class.php
+++ b/htdocs/core/class/infobox.class.php
@@ -85,7 +85,7 @@ class InfoBox
*
* @param DoliDB $db Database handler
* @param string $mode 'available' or 'activated'
- * @param string $zone Name or area (-1 for all, 0 for Homepage, 1 for Accountancy, 2 for xxx, ...)
+ * @param int $zone Name or area (-1 for all, 0 for Homepage, 1 for Accountancy, 2 for xxx, ...)
* @param User|null $user Object user to filter
* @param array $excludelist Array of box id (box.box_id = boxes_def.rowid) to exclude
* @param int $includehidden Include also hidden boxes
@@ -97,7 +97,6 @@ class InfoBox
$boxes = array();
- $confuserzone = 'MAIN_BOXES_'.$zone;
if ($mode == 'activated') { // activated
$sql = "SELECT b.rowid, b.position, b.box_order, b.fk_user,";
$sql .= " d.rowid as box_id, d.file, d.note, d.tms";
@@ -217,7 +216,7 @@ class InfoBox
* Save order of boxes for area and user
*
* @param DoliDB $db Database handler
- * @param string $zone Name of area (0 for Homepage, ...)
+ * @param int $zone Name of area (0 for Homepage, ...)
* @param string $boxorder List of boxes with correct order 'A:123,456,...-B:789,321...'
* @param int $userid Id of user
* @return int <0 if KO, 0=Nothing done, > 0 if OK
@@ -278,14 +277,13 @@ class InfoBox
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes";
$sql .= "(box_id, position, box_order, fk_user, entity)";
$sql .= " values (";
- $sql .= " ".$id.",";
- $sql .= " ".$zone.",";
+ $sql .= " ".((int) $id).",";
+ $sql .= " ".((int) $zone).",";
$sql .= " '".$db->escape($colonne.$ii)."',";
- $sql .= " ".$userid.",";
- $sql .= " ".$conf->entity;
+ $sql .= " ".((int) $userid).",";
+ $sql .= " ".((int) $conf->entity);
$sql .= ")";
- dol_syslog(get_class()."::saveboxorder", LOG_DEBUG);
$result = $db->query($sql);
if ($result < 0) {
$error++;
diff --git a/htdocs/core/modules/modWorkstation.class.php b/htdocs/core/modules/modWorkstation.class.php
index b0fae39bb52..8e2d676bf27 100755
--- a/htdocs/core/modules/modWorkstation.class.php
+++ b/htdocs/core/modules/modWorkstation.class.php
@@ -263,73 +263,12 @@ class modWorkstation extends DolibarrModules
$this->menu = array();
$r = 0;
// Add here entries to declare new menus
- /* BEGIN MODULEBUILDER TOPMENU */
- /*$this->menu[$r++] = array(
- 'fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
- 'type'=>'top', // This is a Top menu entry
- 'titre'=>$langs->trans('GPAO'),
- 'mainmenu'=>'gpao',
- 'leftmenu'=>'',
- 'url'=>'/workstation/workstationindex.php',
- 'langs'=>'workstation@workstation', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
- 'position'=>1000 + $r,
- 'enabled'=>'$conf->workstation->enabled', // Define condition to show or hide menu entry. Use '$conf->workstation->enabled' if entry must be visible if module is enabled.
- 'perms'=>'1', // Use 'perms'=>'$user->rights->workstation->workstation->read' if you want your menu with a permission rules
- 'target'=>'',
- 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
- );*/
- /* END MODULEBUILDER TOPMENU */
- /* BEGIN MODULEBUILDER LEFTMENU WORKSTATION
- $this->menu[$r++]=array(
- 'fk_menu'=>'fk_mainmenu=workstation', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
- 'type'=>'left', // This is a Top menu entry
- 'titre'=>'Workstation',
- 'mainmenu'=>'workstation',
- 'leftmenu'=>'workstation',
- 'url'=>'/workstation/workstationindex.php',
- 'langs'=>'workstation@workstation', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
- 'position'=>1000+$r,
- 'enabled'=>'$conf->workstation->enabled', // Define condition to show or hide menu entry. Use '$conf->workstation->enabled' if entry must be visible if module is enabled.
- 'perms'=>'$user->rights->workstation->workstation->read', // Use 'perms'=>'$user->rights->workstation->level1->level2' if you want your menu with a permission rules
- 'target'=>'',
- 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
- );
- $this->menu[$r++]=array(
- 'fk_menu'=>'fk_mainmenu=workstation,fk_leftmenu=workstation', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
- 'type'=>'left', // This is a Left menu entry
- 'titre'=>'List_Workstation',
- 'mainmenu'=>'workstation',
- 'leftmenu'=>'workstation_workstation_list',
- 'url'=>'/workstation/workstation_list.php',
- 'langs'=>'workstation@workstation', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
- 'position'=>1000+$r,
- 'enabled'=>'$conf->workstation->enabled', // Define condition to show or hide menu entry. Use '$conf->workstation->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
- 'perms'=>'$user->rights->workstation->workstation->read', // Use 'perms'=>'$user->rights->workstation->level1->level2' if you want your menu with a permission rules
- 'target'=>'',
- 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
- );
- $this->menu[$r++]=array(
- 'fk_menu'=>'fk_mainmenu=workstation,fk_leftmenu=workstation', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
- 'type'=>'left', // This is a Left menu entry
- 'titre'=>'New_Workstation',
- 'mainmenu'=>'workstation',
- 'leftmenu'=>'workstation_workstation_new',
- 'url'=>'/workstation/workstation_card.php?action=create',
- 'langs'=>'workstation@workstation', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
- 'position'=>1000+$r,
- 'enabled'=>'$conf->workstation->enabled', // Define condition to show or hide menu entry. Use '$conf->workstation->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
- 'perms'=>'$user->rights->workstation->workstation->write', // Use 'perms'=>'$user->rights->workstation->level1->level2' if you want your menu with a permission rules
- 'target'=>'',
- 'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
- );
- */
-
$this->menu[$r++]=array(
// '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
'fk_menu'=>'fk_mainmenu=mrp',
// This is a Left menu entry
'type'=>'left',
- 'titre'=>$langs->trans('Workstations'),
+ 'titre'=>'Workstations',
'prefix' => img_picto('', $this->picto, 'class="paddingright pictofixedwidth"'),
'mainmenu'=>'mrp',
'leftmenu'=>'workstation_workstation',
@@ -350,7 +289,7 @@ class modWorkstation extends DolibarrModules
'fk_menu'=>'fk_mainmenu=mrp,fk_leftmenu=workstation_workstation',
// This is a Left menu entry
'type'=>'left',
- 'titre'=>$langs->trans('WorkstationCreate'),
+ 'titre'=>'WorkstationCreate',
'mainmenu'=>'mrp',
'leftmenu'=>'workstation_workstation_left_create',
'url'=>'/workstation/workstation_card.php?action=create',
@@ -370,7 +309,7 @@ class modWorkstation extends DolibarrModules
'fk_menu'=>'fk_mainmenu=mrp,fk_leftmenu=workstation_workstation',
// This is a Left menu entry
'type'=>'left',
- 'titre'=>$langs->trans('List'),
+ 'titre'=>'List',
'mainmenu'=>'mrp',
'leftmenu'=>'workstation_workstation_left_list',
'url'=>'/workstation/workstation_list.php',
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index 622c494d095..48d7aa7240a 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -1930,7 +1930,7 @@ if ($action == 'create') {
print $societe->getNomUrl(1);
print '';
} else {
- print img_picto('', 'company').$form->select_company($societe->id, 'socid', 's.fournisseur=1', 'SelectThirdParty', 0, 0, null, 0, 'minwidth300');
+ print img_picto('', 'company').$form->select_company($societe->id, 'socid', 's.fournisseur=1', 'SelectThirdParty', 0, 0, null, 0, 'minwidth300 widthcentpercentminusxx');
// reload page to retrieve supplier informations
if (!empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE)) {
print '';
- } else {
- print '
';
@@ -1225,20 +1231,20 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
if ($type != 1) { // Nature, Weight and volume only applies to products and not to services
// Nature
- print '
';
}
-
- print '';
}
// Quality control
@@ -1316,7 +1318,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
}
// Other attributes
- $parameters = array('colspan' => 3, 'cols' => '3');
+ $parameters = array('colspan' => ' colspan="2"', 'cols'=>2);
$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
if (empty($reshook)) {
@@ -1326,7 +1328,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
// Note (private, no output on invoices, propales...)
//if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB)) available in create mode
//{
- print '
'.$langs->trans("NoteNotVisibleOnBill").'
';
+ print '
'.$langs->trans("NoteNotVisibleOnBill").'
';
// We use dolibarr_details as type of DolEditor here, because we must not accept images as description is included into PDF and not accepted by TCPDF.
$doleditor = new DolEditor('note_private', GETPOST('note_private', 'restricthtml'), '', 140, 'dolibarr_details', '', false, true, $conf->global->FCKEDITOR_ENABLE_PRODUCTDESC, ROWS_8, '90%');
@@ -1337,7 +1339,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
if ($conf->categorie->enabled) {
// Categories
- print '
';
// We use dolibarr_details as type of DolEditor here, because we must not accept images as description is included into PDF and not accepted by TCPDF.
$doleditor = new DolEditor('desc', $object->description, '', 160, 'dolibarr_details', '', false, true, $conf->global->FCKEDITOR_ENABLE_PRODUCTDESC, ROWS_4, '90%');
@@ -1697,7 +1708,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
print "\n";
// Public Url
- print '