From 0ffc2a226c22963969f23bc311e8688e56575995 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 18 Nov 2015 13:53:04 +0100 Subject: [PATCH 01/13] fix pg migration script --- htdocs/install/mysql/migration/3.8.0-3.9.0.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 74a6d89ab23..7e86d6d3dc8 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -318,7 +318,8 @@ ALTER TABLE llx_categorie_project ADD CONSTRAINT fk_categorie_project_fk_project ALTER TABLE llx_c_tva ADD COLUMN code varchar(10) DEFAULT '' after fk_pays; -DROP INDEX uk_c_tva_id ON llx_c_tva; +-- VMYSQL4.0 DROP INDEX uk_c_tva_id ON llx_c_tva; +-- VPGSQL8.0 DROP INDEX uk_c_tva_id; ALTER TABLE llx_c_tva ADD UNIQUE INDEX uk_c_tva_id (fk_pays, code, taux, recuperableonly); -- Regions Bolivia (id country=52) From fbe8a181a9fe645aae397ff3eaad74ec41e66889 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 18 Nov 2015 14:03:25 +0100 Subject: [PATCH 02/13] fix pgsql --- htdocs/install/mysql/migration/3.8.0-3.9.0.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql index 7e86d6d3dc8..acb7319a5c5 100755 --- a/htdocs/install/mysql/migration/3.8.0-3.9.0.sql +++ b/htdocs/install/mysql/migration/3.8.0-3.9.0.sql @@ -77,7 +77,8 @@ ALTER TABLE llx_paiement ADD COLUMN ref varchar(30) NOT NULL DEFAULT '' AFTER ro ALTER TABLE llx_socpeople ADD COLUMN photo varchar(255) AFTER skype; -ALTER TABLE llx_user_param MODIFY COLUMN param varchar(255) NOT NULL DEFAULT ''; +UPDATE llx_user_param SET param='ToDelete' WHERE param IS NULL; +ALTER TABLE llx_user_param MODIFY COLUMN param varchar(255) NOT NULL; ALTER TABLE llx_user_param MODIFY COLUMN value text NOT NULL; ALTER TABLE llx_expedition ADD COLUMN import_key varchar(14); From e4125c9802d3b408065d2847a65f5a1a55a6da8b Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 19 Nov 2015 14:26:32 +0100 Subject: [PATCH 03/13] NEW : info function for product card --- htdocs/product/class/product.class.php | 49 ++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 258e79be2c0..4a86ba549ae 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -726,6 +726,7 @@ class Product extends CommonObject $sql.= ", fk_unit= " . (!$this->fk_unit ? 'NULL' : $this->fk_unit); $sql.= ", price_autogen = " . (!$this->price_autogen ? 0 : 1); $sql.= ", fk_price_expression = ".($this->fk_price_expression != 0 ? $this->fk_price_expression : 'NULL'); + $sql.= ", fk_user_modif = ".($user->id > 0 ? $user->id : 'NULL'); $sql.= " WHERE rowid = " . $id; dol_syslog(get_class($this)."::update", LOG_DEBUG); @@ -4113,4 +4114,52 @@ class Product extends CommonObject return $user->rights->service; } } + + /** + * Load information for tab info + * + * @param int $id Id of thirdparty to load + * @return void + */ + function info($id) + { + $sql = "SELECT p.rowid, p.datec as date_creation, p.tms as date_modification,"; + $sql.= " p.fk_user_author, p.fk_user_modif"; + $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as p"; + $sql.= " WHERE p.rowid = ".$id; + + $result=$this->db->query($sql); + if ($result) + { + if ($this->db->num_rows($result)) + { + $obj = $this->db->fetch_object($result); + + $this->id = $obj->rowid; + + if ($obj->fk_user_author) { + $cuser = new User($this->db); + $cuser->fetch($obj->fk_user_author); + $this->user_creation = $cuser; + } + + if ($obj->fk_user_modif) { + $muser = new User($this->db); + $muser->fetch($obj->fk_user_modif); + $this->user_modification = $muser; + } + + $this->ref = $obj->name; + $this->date_creation = $this->db->jdate($obj->date_creation); + $this->date_modification = $this->db->jdate($obj->date_modification); + } + + $this->db->free($result); + + } + else + { + dol_print_error($this->db); + } + } } From 826592c480899a2db6fc8ea1bf935b3f0402c9b6 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 19 Nov 2015 14:43:00 +0100 Subject: [PATCH 04/13] Fix info and banner on societe --- htdocs/product/card.php | 2 +- htdocs/product/class/product.class.php | 4 ++-- htdocs/societe/info.php | 8 +++----- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 4c30691318f..4f029ad6727 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1305,7 +1305,7 @@ else $picto=($object->type== Product::TYPE_SERVICE?'service':'product'); dol_fiche_head($head, 'card', $titre, 0, $picto); - dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + dol_banner_tab($object, 'id', '', ($user->societe_id?0:1), 'ref'); print '
'; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 4a86ba549ae..8904820ce7b 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4123,7 +4123,7 @@ class Product extends CommonObject */ function info($id) { - $sql = "SELECT p.rowid, p.datec as date_creation, p.tms as date_modification,"; + $sql = "SELECT p.rowid, p.ref, p.datec as date_creation, p.tms as date_modification,"; $sql.= " p.fk_user_author, p.fk_user_modif"; $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as p"; $sql.= " WHERE p.rowid = ".$id; @@ -4149,7 +4149,7 @@ class Product extends CommonObject $this->user_modification = $muser; } - $this->ref = $obj->name; + $this->ref = $obj->ref; $this->date_creation = $this->db->jdate($obj->date_creation); $this->date_modification = $this->db->jdate($obj->date_modification); } diff --git a/htdocs/societe/info.php b/htdocs/societe/info.php index a415ae57b1c..3a2ecea9305 100644 --- a/htdocs/societe/info.php +++ b/htdocs/societe/info.php @@ -78,15 +78,13 @@ if ($socid > 0) exit; } - $object->info($socid); - $head = societe_prepare_head($object); dol_fiche_head($head, 'info', $langs->trans("ThirdParty"), 0, 'company'); - $linkback = ''.$langs->trans("BackToList").''; - - dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', ''); + dol_banner_tab($object, 'socid', '', ($user->societe_id?0:1), 'rowid', 'nom'); + + $object->info($socid); print '
'; From 9c1545bc1bd46cd9a83870ac1d165668e82db041 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 19 Nov 2015 14:45:05 +0100 Subject: [PATCH 05/13] NEW add info page on product card --- htdocs/core/lib/product.lib.php | 6 ++ htdocs/product/info.php | 108 ++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 htdocs/product/info.php diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index d0bc74e77c3..5ca0389455f 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -135,6 +135,12 @@ function product_prepare_head($object) complete_head_from_modules($conf,$langs,$object,$head,$h,'product', 'remove'); + // Log + $head[$h][0] = DOL_URL_ROOT.'/product/info.php?id='.$object->id; + $head[$h][1] = $langs->trans("Info"); + $head[$h][2] = 'info'; + $h++; + return $head; } diff --git a/htdocs/product/info.php b/htdocs/product/info.php new file mode 100644 index 00000000000..3ca96a2847d --- /dev/null +++ b/htdocs/product/info.php @@ -0,0 +1,108 @@ + + * + * 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/product/info.php + * \ingroup product + * \brief Information page for product + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; + +$langs->load("product"); +$langs->load("other"); +if (! empty($conf->notification->enabled)) $langs->load("mails"); + +// Security check +$id = GETPOST('id','int'); +$ref = GETPOST('ref','alpha'); + +$result=restrictedArea($user,'produit|service',$id,'product&product'); + +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('infoproduct')); + +$object = new Product($db); + + +/* + * Actions + */ + +$parameters=array('id'=>$id); +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + + + +/* + * View + */ + +$form=new Form($b); + +$title=$langs->trans("Product"); +$helpurl=''; +if (GETPOST("type") == '0' || ($object->type == Product::TYPE_PRODUCT)) $helpurl='EN:Module_Products|FR:Module_Produits|ES:Módulo_Productos'; +if (GETPOST("type") == '1' || ($object->type == Product::TYPE_SERVICE)) $helpurl='EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; +llxHeader('',$title,$help_url); + +if ($id > 0 || $ref) +{ + $result = $object->fetch($id,$ref); + if (! $result) + { + $langs->load("errors"); + print $langs->trans("ErrorRecordNotFound"); + + llxFooter(); + $db->close(); + + exit; + } + + $head=product_prepare_head($object); + $titre=$langs->trans("CardProduct".$object->type); + $picto=($object->type== Product::TYPE_SERVICE?'service':'product'); + dol_fiche_head($head, 'info', $titre, 0, $picto); + + $linkback = ''.$langs->trans("BackToList").''; + + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + $object->info($object->id); + + print '
'; + + print '
'; + + print '
'; + + dol_print_object_info($object); + + print '
'; + + dol_fiche_end(); +} + + +llxFooter(); + +$db->close(); From 6c8ac1e95c9f7820f6cb2850be46a52d67c1116c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 19 Nov 2015 16:31:55 +0100 Subject: [PATCH 06/13] typo --- htdocs/commande/class/commande.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index abff0a9c078..a4baeb18c72 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -112,7 +112,7 @@ class Commande extends CommonOrder var $nbtodolate; /** - * ERR Not engouch stock + * ERR Not enough stock */ const STOCK_NOT_ENOUGH_FOR_ORDER = -3; From 47485b39cea88f56de64b28337adcb9732928fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 19 Nov 2015 16:41:11 +0100 Subject: [PATCH 07/13] Update commande.class.php --- htdocs/commande/class/commande.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index a4baeb18c72..d1351ba273a 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3315,7 +3315,7 @@ class Commande extends CommonOrder /** - * Class to mange order lines + * Class to manage order lines */ class OrderLine extends CommonOrderLine { From 1566be35a1100206a00c8f63241aa0bfcf85d316 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 20 Nov 2015 11:59:28 +0100 Subject: [PATCH 08/13] NEW : add $ID$ into extrafields management to allow use current object id on filter for select list from table and checkbox list from table --- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/class/extrafields.class.php | 35 ++++++++++++++++++------ htdocs/langs/en_US/admin.lang | 4 +-- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 934eb672c7c..0d198fda0ce 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4105,7 +4105,7 @@ abstract class CommonObject $out .= $extrafields->showOutputField($key,$value); break; case "edit": - $out .= $extrafields->showInputField($key,$value,'',$keyprefix); + $out .= $extrafields->showInputField($key,$value,'',$keyprefix,0,$this->id); break; } diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 645b50cb8bc..df2c443660b 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -636,10 +636,11 @@ class ExtraFields * @param string $moreparam To add more parametes on html input tag * @param string $keyprefix Prefix string to add into name and id of field (can be used to avoid duplicate names) * @param string $keysuffix Suffix string to add into name and id of field (can be used to avoid duplicate names) - * @param int $showsize Value for size attribute + * @param int $showsize Value for size attributed + * @param int $objectid Current object id * @return string */ - function showInputField($key,$value,$moreparam='',$keyprefix='',$keysuffix='',$showsize=0) + function showInputField($key,$value,$moreparam='',$keyprefix='',$keysuffix='',$showsize=0, $objectid=0) { global $conf,$langs; @@ -805,6 +806,10 @@ class ExtraFields $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; if (!empty($InfoFieldList[4])) { + // current object id can be use into filter + if (strpos($InfoFieldList[4], '$ID$')!==false && !empty($objectid)) { + $InfoFieldList[4]=str_replace('$ID$',$objectid,$InfoFieldList[4]); + } //We have to join on extrafield table if (strpos($InfoFieldList[4], 'extra')!==false) { @@ -820,7 +825,11 @@ class ExtraFields { $sqlwhere.= ' WHERE 1'; } - if (in_array($InfoFieldList[0],array('tablewithentity'))) $sqlwhere.= ' AND entity = '.$conf->entity; // Some tables may have field, some other not. For the moment we disable it. + // Some tables may have field, some other not. For the moment we disable it. + if (in_array($InfoFieldList[0],array('tablewithentity'))) + { + $sqlwhere.= ' AND entity = '.$conf->entity; + } $sql.=$sqlwhere; //print $sql; @@ -978,6 +987,12 @@ class ExtraFields $sql = 'SELECT ' . $keyList; $sql .= ' FROM ' . MAIN_DB_PREFIX . $InfoFieldList[0]; if (! empty($InfoFieldList[4])) { + + // current object id can be use into filter + if (strpos($InfoFieldList[4], '$ID$')!==false && !empty($objectid)) { + $InfoFieldList[4]=str_replace('$ID$',$objectid,$InfoFieldList[4]); + } + // We have to join on extrafield table if (strpos($InfoFieldList[4], 'extra') !== false) { $sql .= ' as main, ' . MAIN_DB_PREFIX . $InfoFieldList[0] . '_extrafields as extra'; @@ -988,12 +1003,14 @@ class ExtraFields } else { $sqlwhere .= ' WHERE 1'; } - if (in_array($InfoFieldList[0], array ( - 'tablewithentity' - ))) - $sqlwhere .= ' AND entity = ' . $conf->entity; // Some tables may have field, some other not. For the moment we disable it. - // $sql.=preg_replace('/^ AND /','',$sqlwhere); - // print $sql; + // Some tables may have field, some other not. For the moment we disable it. + if (in_array($InfoFieldList[0], array ('tablewithentity'))) + { + $sqlwhere .= ' AND entity = ' . $conf->entity; + } + // $sql.=preg_replace('/^ AND /','',$sqlwhere); + // print $sql; + $sql .= $sqlwhere; dol_syslog(get_class($this) . '::showInputField type=chkbxlst',LOG_DEBUG); $resql = $this->db->query($sql); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index f4d311c8f27..32c1365c03d 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -397,8 +397,8 @@ ExtrafieldLink=Link to an object ExtrafieldParamHelpselect=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
...

In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpsellist=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpsellist=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax : ObjectName:Classpath
Example : Societe:societe/class/societe.class.php LibraryToBuildPDF=Library used to build PDF WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' From 4ff0c22e29f8cae75463f16cd67663532d8bb9fc Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 20 Nov 2015 13:22:45 +0100 Subject: [PATCH 09/13] continue extrafield ID filter --- htdocs/core/tpl/extrafields_view.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index ca8785acdfb..b29016ac28b 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -81,7 +81,7 @@ if (empty($reshook) && ! empty($extrafields->attribute_label)) print ''; print ''; - print $extrafields->showInputField($key, $value); + print $extrafields->showInputField($key, $value,'','','',0,$object->id); print ''; From b8cab9f4d913aafbfc7252b6e65a117cdf600b99 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 20 Nov 2015 13:51:57 +0100 Subject: [PATCH 10/13] continue extrafeild $ID$ and SELECT feature --- htdocs/core/class/extrafields.class.php | 5 +++++ htdocs/langs/en_US/admin.lang | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index df2c443660b..143801ef4c5 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -806,6 +806,11 @@ class ExtraFields $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; if (!empty($InfoFieldList[4])) { + // can use SELECT request + if (strpos($InfoFieldList[4], '$SEL$')!==false) { + $InfoFieldList[4]=str_replace('$SEL$','SELECT',$InfoFieldList[4]); + } + // current object id can be use into filter if (strpos($InfoFieldList[4], '$ID$')!==false && !empty($objectid)) { $InfoFieldList[4]=str_replace('$ID$',$objectid,$InfoFieldList[4]); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 32c1365c03d..eacf9b6e5ce 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -397,8 +397,8 @@ ExtrafieldLink=Link to an object ExtrafieldParamHelpselect=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
...

In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpsellist=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpsellist=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax : ObjectName:Classpath
Example : Societe:societe/class/societe.class.php LibraryToBuildPDF=Library used to build PDF WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' From 101b45e39737b145653a7a876f00310c826faea5 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 20 Nov 2015 13:52:47 +0100 Subject: [PATCH 11/13] Continue extrafeild $ID$ and select feature --- htdocs/core/class/extrafields.class.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 143801ef4c5..4b1907ba355 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -993,6 +993,11 @@ class ExtraFields $sql .= ' FROM ' . MAIN_DB_PREFIX . $InfoFieldList[0]; if (! empty($InfoFieldList[4])) { + // can use SELECT request + if (strpos($InfoFieldList[4], '$SEL$')!==false) { + $InfoFieldList[4]=str_replace('$SEL$','SELECT',$InfoFieldList[4]); + } + // current object id can be use into filter if (strpos($InfoFieldList[4], '$ID$')!==false && !empty($objectid)) { $InfoFieldList[4]=str_replace('$ID$',$objectid,$InfoFieldList[4]); From 87c9132a6d1509301ca6e81d287dbde573648bfb Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 20 Nov 2015 13:59:58 +0100 Subject: [PATCH 12/13] avoid error --- htdocs/core/class/extrafields.class.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 4b1907ba355..82754a309b9 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -814,6 +814,8 @@ class ExtraFields // current object id can be use into filter if (strpos($InfoFieldList[4], '$ID$')!==false && !empty($objectid)) { $InfoFieldList[4]=str_replace('$ID$',$objectid,$InfoFieldList[4]); + } else { + $InfoFieldList[4]=str_replace('$ID$','0',$InfoFieldList[4]); } //We have to join on extrafield table if (strpos($InfoFieldList[4], 'extra')!==false) @@ -1001,6 +1003,8 @@ class ExtraFields // current object id can be use into filter if (strpos($InfoFieldList[4], '$ID$')!==false && !empty($objectid)) { $InfoFieldList[4]=str_replace('$ID$',$objectid,$InfoFieldList[4]); + } else { + $InfoFieldList[4]=str_replace('$ID$','0',$InfoFieldList[4]); } // We have to join on extrafield table From b8af7625ff2a23ba6872842a9f3a1e2bb9c0bcba Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 20 Nov 2015 15:29:31 +0100 Subject: [PATCH 13/13] fix new extrafields feature --- htdocs/core/class/commonobject.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 0d198fda0ce..0c7d8baec0d 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4105,7 +4105,7 @@ abstract class CommonObject $out .= $extrafields->showOutputField($key,$value); break; case "edit": - $out .= $extrafields->showInputField($key,$value,'',$keyprefix,0,$this->id); + $out .= $extrafields->showInputField($key,$value,'',$keyprefix,'',0,$this->id); break; }