*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -2361,13 +2362,15 @@ if ($action == 'create')
// Form to add new line
if ($object->statut == Propal::STATUS_DRAFT && $usercancreate && $action != 'selectlines')
{
- if ($action != 'editline')
- {
+ if ($action != 'editline') {
// Add products/services form
$object->formAddObjectLine(1, $mysoc, $soc);
$parameters = array();
$reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
+ } else {
+ $parameters = array();
+ $reshook = $hookmanager->executeHooks('formEditObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
}
}
diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php
index f44813a4994..2a1042c4347 100644
--- a/htdocs/commande/contact.php
+++ b/htdocs/commande/contact.php
@@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
// Load translation files required by the page
-$langs->loadLangs(array('orders', 'sendings', 'companies'));
+$langs->loadLangs(array('orders', 'sendings', 'companies', 'bills'));
$id = GETPOST('id', 'int');
$ref = GETPOST('ref', 'alpha');
diff --git a/htdocs/commande/document.php b/htdocs/commande/document.php
index 27d38378bcb..ab4f3990b78 100644
--- a/htdocs/commande/document.php
+++ b/htdocs/commande/document.php
@@ -37,7 +37,7 @@ if (!empty($conf->projet->enabled)) {
}
// Load translation files required by the page
-$langs->loadLangs(array('companies', 'other'));
+$langs->loadLangs(array('companies', 'other', 'bills'));
$action = GETPOST('action', 'aZ09');
$confirm = GETPOST('confirm');
diff --git a/htdocs/commande/info.php b/htdocs/commande/info.php
index 9b45bf66312..d08e8148101 100644
--- a/htdocs/commande/info.php
+++ b/htdocs/commande/info.php
@@ -34,7 +34,7 @@ if (!empty($conf->projet->enabled)) {
if (!$user->rights->commande->lire) accessforbidden();
// Load translation files required by the page
-$langs->loadLangs(array('orders', 'sendings'));
+$langs->loadLangs(array('orders', 'sendings', 'bills'));
$socid = 0;
$comid = GETPOST("id", 'int');
diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php
index ad422a8b930..ae73b23a876 100644
--- a/htdocs/commande/list.php
+++ b/htdocs/commande/list.php
@@ -55,6 +55,10 @@ $confirm = GETPOST('confirm', 'alpha');
$toselect = GETPOST('toselect', 'array');
$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'orderlist';
+$search_datecloture_start = GETPOST('search_datecloture_start', 'int');
+if (empty($search_datecloture_start)) $search_datecloture_start = dol_mktime(0, 0, 0, GETPOST('search_datecloture_startmonth', 'int'), GETPOST('search_datecloture_startday', 'int'), GETPOST('search_datecloture_startyear', 'int'));
+$search_datecloture_end = GETPOST('search_datecloture_end', 'int');
+if (empty($search_datecloture_end)) $search_datecloture_end = dol_mktime(23, 59, 59, GETPOST('search_datecloture_endmonth', 'int'), GETPOST('search_datecloture_endday', 'int'), GETPOST('search_datecloture_endyear', 'int'));
$search_dateorder_start = dol_mktime(0, 0, 0, GETPOST('search_dateorder_startmonth', 'int'), GETPOST('search_dateorder_startday', 'int'), GETPOST('search_dateorder_startyear', 'int'));
$search_dateorder_end = dol_mktime(23, 59, 59, GETPOST('search_dateorder_endmonth', 'int'), GETPOST('search_dateorder_endday', 'int'), GETPOST('search_dateorder_endyear', 'int'));
$search_datedelivery_start = dol_mktime(0, 0, 0, GETPOST('search_datedelivery_startmonth', 'int'), GETPOST('search_datedelivery_startday', 'int'), GETPOST('search_datedelivery_startyear', 'int'));
@@ -230,6 +234,8 @@ if (empty($reshook))
$toselect = '';
$search_array_options = array();
$search_categ_cus = 0;
+ $search_datecloture_start = '';
+ $search_datecloture_end = '';
}
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')
|| GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha'))
@@ -336,6 +342,8 @@ if ($search_status <> '')
}
}
+if ($search_datecloture_start) $sql .= " AND c.date_cloture >= '".$db->idate($search_datecloture_start)."'";
+if ($search_datecloture_end) $sql .= " AND c.date_cloture <= '".$db->idate($search_datecloture_end)."'";
if ($search_dateorder_start) $sql .= " AND c.date_commande >= '".$db->idate($search_dateorder_start)."'";
if ($search_dateorder_end) $sql .= " AND c.date_commande <= '".$db->idate($search_dateorder_end)."'";
if ($search_datedelivery_start) $sql .= " AND c.date_livraison >= '".$db->idate($search_datedelivery_start)."'";
@@ -439,6 +447,8 @@ if ($resql)
if ($sall) $param .= '&sall='.urlencode($sall);
if ($socid > 0) $param .= '&socid='.urlencode($socid);
if ($search_status != '') $param .= '&search_status='.urlencode($search_status);
+ if ($search_datecloture_start) $param .= '&search_datecloture_start='.urlencode($search_datecloture_start);
+ if ($search_datecloture_end) $param .= '&search_datecloture_end='.urlencode($search_datecloture_end);
if ($search_dateorder_start) $param .= '&search_dateorder_start='.urlencode($search_dateorder_start);
if ($search_dateorder_end) $param .= '&search_dateorder_end='.urlencode($search_dateorder_end);
if ($search_datedelivery_start) $param .= '&search_datedelivery_start='.urlencode($search_datedelivery_start);
@@ -801,7 +811,13 @@ if ($resql)
// Date cloture
if (!empty($arrayfields['c.date_cloture']['checked']))
{
- print '| ';
+ print ' | ';
+ print ' ';
+ print $form->selectDate($search_datecloture_start ? $search_datecloture_start : -1, 'search_datecloture_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
+ print ' ';
+ print '';
+ print $form->selectDate($search_datecloture_end ? $search_datecloture_end : -1, 'search_datecloture_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to'));
+ print ' ';
print ' | ';
}
// Note public
diff --git a/htdocs/core/lib/ecm.lib.php b/htdocs/core/lib/ecm.lib.php
index b9da91093bb..3b0cef1a809 100644
--- a/htdocs/core/lib/ecm.lib.php
+++ b/htdocs/core/lib/ecm.lib.php
@@ -138,3 +138,38 @@ function ecm_prepare_head_fm($object)
return $head;
}
+
+/**
+ * Return array head with list of tabs to view object informations.
+ *
+ * @return array head array with tabs
+ */
+function ecm_admin_prepare_head()
+{
+ global $langs, $conf;
+ $langs->load("ecm");
+
+ $h = 0;
+ $head = array();
+
+ $head[$h][0] = DOL_URL_ROOT."/admin/ecm.php";
+ $head[$h][1] = $langs->trans("Setup");
+ $head[$h][2] = 'ecm';
+ $h++;
+
+ $head[$h][0] = DOL_URL_ROOT.'/admin/ecm_files_extrafields.php';
+ $head[$h][1] = $langs->trans("ExtraFieldsEcmFiles");
+ $head[$h][2] = 'attributes_ecm_files';
+ $h++;
+
+ $head[$h][0] = DOL_URL_ROOT.'/admin/ecm_directories_extrafields.php';
+ $head[$h][1] = $langs->trans("ExtraFieldsEcmDirectories");
+ $head[$h][2] = 'attributes_ecm_directories';
+ $h++;
+
+ complete_head_from_modules($conf, $langs, null, $head, $h, 'ecm_admin');
+
+ complete_head_from_modules($conf, $langs, null, $head, $h, 'ecm_admin', 'remove');
+
+ return $head;
+}
diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php
index deacc6c128b..ae26d4f9da6 100644
--- a/htdocs/core/lib/pdf.lib.php
+++ b/htdocs/core/lib/pdf.lib.php
@@ -11,6 +11,7 @@
* Copyright (C) 2014 Teddy Andreotti <125155@supinfo.com>
* Copyright (C) 2015-2016 Marcos García
* Copyright (C) 2019 Lenin Rivas
+ * Copyright (C) 2020 Nicolas ZABOURI
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1315,7 +1316,11 @@ function pdf_getlinedesc($object, $i, $outputlangs, $hideref = 0, $hidedesc = 0,
{
$libelleproduitservice = $desc."\n".$libelleproduitservice;
} else {
- $libelleproduitservice .= $desc;
+ if (!empty($conf->global->HIDE_LABEL_VARIANT_PDF) && $prodser->isVariant()) {
+ $libelleproduitservice = $desc;
+ } else {
+ $libelleproduitservice .= $desc;
+ }
}
}
} else {
diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php
index 8799af86017..25673c65c6c 100644
--- a/htdocs/ecm/class/ecmdirectory.class.php
+++ b/htdocs/ecm/class/ecmdirectory.class.php
@@ -25,7 +25,7 @@
/**
* Class to manage ECM directories
*/
-class EcmDirectory // extends CommonObject
+class EcmDirectory extends CommonObject
{
/**
* @var string ID to identify managed object
@@ -35,7 +35,7 @@ class EcmDirectory // extends CommonObject
/**
* @var string Name of table without prefix where object is stored
*/
- //public $table_element='ecm_directories';
+ public $table_element='ecm_directories';
/**
* @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png
@@ -345,6 +345,10 @@ class EcmDirectory // extends CommonObject
$this->date_m = $this->db->jdate($obj->date_m);
}
+ // Retrieve all extrafields for ecm_files
+ // fetch optionals attributes and labels
+ $this->fetch_optionals();
+
$this->db->free($resql);
return $obj ? 1 : 0;
diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php
index c3cb0e5462b..b0c1df8316f 100644
--- a/htdocs/ecm/class/ecmfiles.class.php
+++ b/htdocs/ecm/class/ecmfiles.class.php
@@ -403,9 +403,9 @@ class EcmFiles extends CommonObject
$this->src_object_id = $obj->src_object_id;
}
- // Retrieve all extrafields for invoice
+ // Retrieve all extrafields for ecm_files
// fetch optionals attributes and labels
- // $this->fetch_optionals();
+ $this->fetch_optionals();
// $this->fetch_lines();
diff --git a/htdocs/ecm/dir_card.php b/htdocs/ecm/dir_card.php
index be481aa09bd..62929c5341f 100644
--- a/htdocs/ecm/dir_card.php
+++ b/htdocs/ecm/dir_card.php
@@ -27,6 +27,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/ecm.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
// Load translation files required by page
$langs->loadLangs(array('ecm', 'companies', 'other'));
@@ -204,6 +205,16 @@ if ($action == 'update' && !GETPOST('cancel', 'alpha'))
// Fetch was already done
$ecmdir->label = dol_sanitizeFileName(GETPOST("label"));
$ecmdir->description = GETPOST("description");
+ $ret = $extrafields->setOptionalsFromPost(null, $ecmdir);
+ if ($ret < 0) $error++;
+ if (!$error) {
+ // Actions on extra fields
+ $result = $ecmdir->insertExtraFields();
+ if ($result < 0) {
+ setEventMessages($ecmdir->error, $ecmdir->errors, 'errors');
+ $error++;
+ }
+ }
$result = $ecmdir->update($user);
if ($result > 0)
{
@@ -266,6 +277,10 @@ if ($action == 'update' && !GETPOST('cancel', 'alpha'))
$form = new Form($db);
$object = new EcmDirectory($db); // Need to create a new one instance
+$extrafields = new ExtraFields($db);
+// fetch optionals attributes and labels
+$extrafields->fetch_name_optionals_label($object->table_element);
+
if ($module == 'ecm')
{
@@ -415,6 +430,7 @@ print '